
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * __regparm3
extract_delimited_string
          (char *string,int *sindex,char *opener,char *alt_opener,char *closer,int flags)

{
  int iVar1;
  bool bVar2;
  anon_union_4_2_91654ee9_for___value aVar3;
  size_t sVar4;
  uint slen;
  uint uVar5;
  int iVar6;
  byte bVar7;
  byte *__s;
  uint sind;
  char *pcVar8;
  uint uVar9;
  int in_GS_OFFSET;
  bool bVar10;
  size_t local_64;
  size_t local_50;
  size_t local_4c;
  int si;
  mbstate_t state;
  mbstate_t state_1;
  
  sind = *sindex;
  __s = (byte *)(string + sind);
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  state.__count = 0;
  state.__value.__wch = 0;
  sVar4 = strlen((char *)__s);
  slen = sVar4 + sind;
  local_64 = 0;
  if (((*opener != '\0') && (local_64 = 1, opener[1] != '\0')) && (local_64 = 2, opener[2] != '\0'))
  {
    local_64 = strlen(opener);
  }
  if (*alt_opener == '\0') {
    local_4c = 0;
  }
  else {
    local_4c = 1;
    if ((alt_opener[1] != '\0') && (local_4c = 2, alt_opener[2] != '\0')) {
      local_4c = strlen(alt_opener);
    }
  }
  if (*closer == '\0') {
    local_50 = 0;
  }
  else {
    local_50 = 1;
    if ((closer[1] != '\0') && (local_50 = 2, closer[2] != '\0')) {
      local_50 = strlen(closer);
    }
  }
  bVar2 = false;
  bVar10 = false;
LAB_000663d0:
  bVar7 = *__s;
  iVar6 = state.__count;
  aVar3 = state.__value;
  do {
    state.__count = iVar6;
    state.__value = aVar3;
    if (slen < sind) {
      uVar5 = slen;
      if (string[slen] == '\0') goto LAB_00066741;
LAB_0006651a:
      iVar6 = (slen - *sindex) - local_50;
      pcVar8 = (char *)0x0;
      si = iVar6 + 1;
      if ((flags & 1U) == 0) {
        pcVar8 = (char *)xmalloc(iVar6 + 2);
        strncpy(pcVar8,string + *sindex,si);
        pcVar8[si] = '\0';
      }
      *sindex = slen;
      goto LAB_00066757;
    }
    uVar9 = (uint)(char)bVar7;
    uVar5 = sind;
    if (uVar9 == 0) {
LAB_00066741:
      if (no_longjmp_on_fatal_error == 0) {
        last_command_exit_value = 1;
        pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,
                                   &last_command_exit_value);
        report_error(pcVar8,closer,string);
                    /* WARNING: Subroutine does not return */
        exp_jump_to_top_level(2);
      }
      pcVar8 = (char *)0x0;
      *sindex = uVar5;
LAB_00066757:
      if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
        return pcVar8;
      }
                    /* WARNING: Subroutine does not return */
      __stack_chk_fail_local();
    }
    if (bVar10) {
      bVar10 = uVar9 != 10;
      if (locale_mb_cur_max < 2) {
LAB_000665f0:
        sind = sind + 1;
        __s = (byte *)(string + sind);
      }
      else {
        if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {
          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {
            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);
            if (0xfffffffd < uVar5) {
              sind = sind + 1;
              __s = (byte *)(string + sind);
              state.__count = iVar6;
              state.__value = aVar3;
              goto LAB_000663d0;
            }
          }
          else {
            uVar5 = (uint)(bVar7 != 0);
          }
          if (uVar5 == 0) goto LAB_000665f0;
        }
        else {
          uVar5 = 1;
        }
        sind = sind + uVar5;
        __s = (byte *)(string + sind);
      }
      goto LAB_000663d0;
    }
    if (bVar2) {
      if (locale_mb_cur_max < 2) {
LAB_0006666c:
        sind = sind + 1;
      }
      else if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {
        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {
          uVar5 = (uint)(bVar7 != 0);
LAB_00066668:
          if (uVar5 == 0) goto LAB_0006666c;
          goto LAB_000666c5;
        }
        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);
        if (uVar5 < 0xfffffffe) goto LAB_00066668;
        sind = sind + 1;
        state.__count = iVar6;
        state.__value = aVar3;
      }
      else {
        uVar5 = 1;
LAB_000666c5:
        sind = sind + uVar5;
      }
      bVar2 = false;
      __s = (byte *)(string + sind);
      goto LAB_000663d0;
    }
    if ((flags & 8U) == 0) {
      if ((uVar9 == 1) || (uVar9 == 0x5c)) {
LAB_0006660e:
        sind = sind + 1;
        bVar10 = false;
        bVar2 = true;
        __s = (byte *)(string + sind);
        goto LAB_000663d0;
      }
LAB_00066431:
      if (local_64 == 0) {
LAB_000666fd:
        si = sind + local_64;
        extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1);
        goto LAB_0006672c;
      }
      uVar5 = uVar9;
      if (bVar7 == *opener) {
        iVar6 = strncmp((char *)__s,opener,local_64);
        uVar5 = (uint)bVar7;
        if (iVar6 == 0) goto LAB_000666fd;
      }
      if ((local_4c != 0) && ((char)uVar5 == *alt_opener)) {
        iVar6 = strncmp((char *)__s,alt_opener,local_4c);
        uVar5 = uVar5 & 0xff;
        if (iVar6 == 0) {
          si = sind + local_4c;
          extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);
          uVar5 = slen;
          if (slen <= (uint)si) goto LAB_00066741;
          bVar10 = false;
          sind = si;
          goto LAB_0006666c;
        }
      }
      if (local_50 == 0) {
LAB_000668cd:
        slen = (sind - 1) + local_50;
        goto LAB_0006651a;
      }
      if ((char)uVar5 == *closer) {
        iVar6 = strncmp((char *)__s,closer,local_50);
        uVar5 = uVar5 & 0xff;
        if (iVar6 == 0) goto LAB_000668cd;
      }
      aVar3 = state.__value;
      iVar6 = state.__count;
      if (uVar9 == 0x60) {
        si = sind + 1;
        string_extract(string,&si,"`",flags | 1);
        goto LAB_0006672c;
      }
      if ((uVar9 == 0x27) || (uVar9 == 0x22)) break;
      if (locale_mb_cur_max < 2) goto LAB_000664e0;
      bVar7 = (byte)uVar5;
      if (((uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {
        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {
          uVar5 = (uint)(bVar7 != 0);
LAB_000664d4:
          if (uVar5 == 0) goto LAB_000664e0;
          goto LAB_00066935;
        }
        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);
        if (uVar5 < 0xfffffffe) goto LAB_000664d4;
        sind = sind + 1;
        state.__count = iVar6;
        state.__value = aVar3;
      }
      else {
        uVar5 = 1;
LAB_00066935:
        sind = sind + uVar5;
      }
    }
    else {
      if (uVar9 == 0x23) {
        if (((sind != 0) && (string[sind - 1] != 10)) &&
           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))
        goto LAB_00066431;
        if (locale_mb_cur_max < 2) {
LAB_00066807:
          sind = sind + 1;
        }
        else {
          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {
            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);
            if (0xfffffffd < sVar4) {
              sind = sind + 1;
              state.__count = iVar6;
              state.__value = aVar3;
              goto LAB_0006680a;
            }
            if (sVar4 == 0) goto LAB_00066807;
          }
          else {
            sVar4 = 1;
          }
          sind = sind + sVar4;
        }
LAB_0006680a:
        bVar10 = true;
        __s = (byte *)(string + sind);
        goto LAB_000663d0;
      }
      if ((uVar9 == 1) || (uVar9 == 0x5c)) goto LAB_0006660e;
      if ((bVar7 != 0x24) || (string[sind + 1] != '(')) goto LAB_00066431;
      si = sind + 2;
      extract_command_subst(string,&si,flags | 1);
LAB_0006672c:
      uVar5 = slen;
      sind = si;
      if (slen <= (uint)si) goto LAB_00066741;
LAB_000664e0:
      sind = sind + 1;
    }
    bVar10 = false;
    __s = (byte *)(string + sind);
    bVar7 = *__s;
    iVar6 = state.__count;
    aVar3 = state.__value;
  } while( true );
  sind = sind + 1;
  si = sind;
  if (uVar9 == 0x27) {
    state_1.__count = 0;
    state_1.__value.__wch = 0;
    while( true ) {
      aVar3 = state_1.__value;
      iVar6 = state_1.__count;
      __s = (byte *)(string + sind);
      bVar7 = *__s;
      if ((bVar7 == 0) || (bVar7 == 0x27)) break;
      if (locale_mb_cur_max < 2) {
LAB_00066a70:
        sind = sind + 1;
      }
      else if (((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0) {
        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {
          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);
          if (sVar4 < 0xfffffffe) {
            if (sVar4 == 0) goto LAB_00066a70;
            goto LAB_000669de;
          }
          sind = sind + 1;
          state_1.__count = iVar6;
          state_1.__value = aVar3;
        }
        else {
LAB_000669de:
          sind = sind + sVar4;
        }
      }
      else {
        sind = sind + 1;
        state_1.__count = iVar6;
        state_1.__value = aVar3;
      }
    }
    if (bVar7 != 0) {
      sind = sind + 1;
      __s = (byte *)(string + sind);
    }
    bVar10 = false;
  }
  else {
    sind = skip_double_quoted(string,slen,sind,0);
    bVar10 = false;
    __s = (byte *)(string + sind);
  }
  goto LAB_000663d0;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * __regparm3
FUN_000662b0(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)

{
  byte bVar1;
  bool bVar2;
  _union_54 _Var3;
  size_t sVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  undefined4 uVar8;
  byte bVar9;
  byte *__s;
  uint uVar10;
  char *__dest;
  uint uVar11;
  int in_GS_OFFSET;
  bool bVar12;
  size_t local_64;
  size_t local_50;
  size_t local_4c;
  uint local_34;
  mbstate_t local_30;
  mbstate_t local_28;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x662bb;
  uVar10 = *param_2;
  __s = (byte *)(param_1 + uVar10);
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_30.__count = 0;
  local_30.__value.__wch = 0;
  sVar4 = strlen((char *)__s);
  uVar5 = sVar4 + uVar10;
  local_64 = 0;
  if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {
    local_64 = strlen((char *)param_3);
  }
  if (*param_4 == '\0') {
    local_4c = 0;
  }
  else {
    local_4c = 1;
    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {
      local_4c = strlen(param_4);
    }
  }
  if (*param_5 == '\0') {
    local_50 = 0;
  }
  else {
    local_50 = 1;
    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {
      local_50 = strlen(param_5);
    }
  }
  bVar2 = false;
  bVar12 = false;
LAB_000663d0:
  bVar9 = *__s;
  iVar7 = local_30.__count;
  _Var3 = local_30.__value;
  do {
    local_30.__count = iVar7;
    local_30.__value = _Var3;
    if (uVar5 < uVar10) {
      uVar6 = uVar5;
      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;
LAB_0006651a:
      iVar7 = (uVar5 - *param_2) - local_50;
      __dest = (char *)0x0;
      local_34 = iVar7 + 1;
      if ((param_6 & 1) == 0) {
        __dest = (char *)xmalloc(iVar7 + 2);
        strncpy(__dest,(char *)(param_1 + *param_2),local_34);
        __dest[local_34] = '\0';
      }
      *param_2 = uVar5;
      goto LAB_00066757;
    }
    uVar11 = (uint)(char)bVar9;
    uVar6 = uVar10;
    if (uVar11 == 0) {
LAB_00066741:
      if (no_longjmp_on_fatal_error == 0) {
        last_command_exit_value = 1;
        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);
        report_error(uVar8,param_5,param_1);
                    /* WARNING: Subroutine does not return */
        FUN_00064460();
      }
      __dest = (char *)0x0;
      *param_2 = uVar6;
LAB_00066757:
      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
        return __dest;
      }
                    /* WARNING: Subroutine does not return */
      FUN_000ecc40();
    }
    if (bVar12) {
      bVar12 = uVar11 != 10;
      if (locale_mb_cur_max < 2) {
LAB_000665f0:
        uVar10 = uVar10 + 1;
        __s = (byte *)(param_1 + uVar10);
      }
      else {
        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {
          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {
            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);
            if (0xfffffffd < uVar6) {
              uVar10 = uVar10 + 1;
              __s = (byte *)(param_1 + uVar10);
              local_30.__count = iVar7;
              local_30.__value = _Var3;
              goto LAB_000663d0;
            }
          }
          else {
            uVar6 = (uint)(bVar9 != 0);
          }
          if (uVar6 == 0) goto LAB_000665f0;
        }
        else {
          uVar6 = 1;
        }
        uVar10 = uVar10 + uVar6;
        __s = (byte *)(param_1 + uVar10);
      }
      goto LAB_000663d0;
    }
    if (bVar2) {
      if (locale_mb_cur_max < 2) {
LAB_0006666c:
        uVar10 = uVar10 + 1;
      }
      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {
        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {
          uVar6 = (uint)(bVar9 != 0);
LAB_00066668:
          if (uVar6 == 0) goto LAB_0006666c;
          goto LAB_000666c5;
        }
        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);
        if (uVar6 < 0xfffffffe) goto LAB_00066668;
        uVar10 = uVar10 + 1;
        local_30.__count = iVar7;
        local_30.__value = _Var3;
      }
      else {
        uVar6 = 1;
LAB_000666c5:
        uVar10 = uVar10 + uVar6;
      }
      bVar2 = false;
      __s = (byte *)(param_1 + uVar10);
      goto LAB_000663d0;
    }
    if ((param_6 & 8) == 0) {
      if ((uVar11 == 1) || (uVar11 == 0x5c)) {
LAB_0006660e:
        uVar10 = uVar10 + 1;
        bVar12 = false;
        bVar2 = true;
        __s = (byte *)(param_1 + uVar10);
        goto LAB_000663d0;
      }
LAB_00066431:
      if (local_64 == 0) {
LAB_000666fd:
        local_34 = uVar10 + local_64;
        FUN_000662b0(param_4,param_5,param_6 | 1);
        goto LAB_0006672c;
      }
      uVar6 = uVar11;
      if (bVar9 == *param_3) {
        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);
        uVar6 = (uint)bVar9;
        if (iVar7 == 0) goto LAB_000666fd;
      }
      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {
        iVar7 = strncmp((char *)__s,param_4,local_4c);
        uVar6 = uVar6 & 0xff;
        if (iVar7 == 0) {
          local_34 = uVar10 + local_4c;
          FUN_000662b0(param_4,param_5,param_6 | 1);
          uVar6 = uVar5;
          if (uVar5 <= local_34) goto LAB_00066741;
          bVar12 = false;
          uVar10 = local_34;
          goto LAB_0006666c;
        }
      }
      if (local_50 == 0) {
LAB_000668cd:
        uVar5 = (uVar10 - 1) + local_50;
        goto LAB_0006651a;
      }
      if ((char)uVar6 == *param_5) {
        iVar7 = strncmp((char *)__s,param_5,local_50);
        uVar6 = uVar6 & 0xff;
        if (iVar7 == 0) goto LAB_000668cd;
      }
      _Var3 = local_30.__value;
      iVar7 = local_30.__count;
      if (uVar11 == 0x60) {
        local_34 = uVar10 + 1;
        FUN_000671c0(param_6 | 1);
        goto LAB_0006672c;
      }
      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;
      if (locale_mb_cur_max < 2) goto LAB_000664e0;
      bVar9 = (byte)uVar6;
      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {
        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {
          uVar6 = (uint)(bVar9 != 0);
LAB_000664d4:
          if (uVar6 == 0) goto LAB_000664e0;
          goto LAB_00066935;
        }
        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);
        if (uVar6 < 0xfffffffe) goto LAB_000664d4;
        uVar10 = uVar10 + 1;
        local_30.__count = iVar7;
        local_30.__value = _Var3;
      }
      else {
        uVar6 = 1;
LAB_00066935:
        uVar10 = uVar10 + uVar6;
      }
    }
    else {
      if (uVar11 == 0x23) {
        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&
           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;
        if (locale_mb_cur_max < 2) {
LAB_00066807:
          uVar10 = uVar10 + 1;
        }
        else {
          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {
            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);
            if (0xfffffffd < sVar4) {
              uVar10 = uVar10 + 1;
              local_30.__count = iVar7;
              local_30.__value = _Var3;
              goto LAB_0006680a;
            }
            if (sVar4 == 0) goto LAB_00066807;
          }
          else {
            sVar4 = 1;
          }
          uVar10 = uVar10 + sVar4;
        }
LAB_0006680a:
        bVar12 = true;
        __s = (byte *)(param_1 + uVar10);
        goto LAB_000663d0;
      }
      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;
      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;
      local_34 = uVar10 + 2;
      extract_command_subst(param_1,&local_34,param_6 | 1);
LAB_0006672c:
      uVar6 = uVar5;
      uVar10 = local_34;
      if (uVar5 <= local_34) goto LAB_00066741;
LAB_000664e0:
      uVar10 = uVar10 + 1;
    }
    bVar12 = false;
    __s = (byte *)(param_1 + uVar10);
    bVar9 = *__s;
    iVar7 = local_30.__count;
    _Var3 = local_30.__value;
  } while( true );
  uVar10 = uVar10 + 1;
  local_34 = uVar10;
  if (uVar11 == 0x27) {
    local_28.__count = 0;
    local_28.__value.__wch = 0;
    while( true ) {
      _Var3 = local_28.__value;
      iVar7 = local_28.__count;
      __s = (byte *)(param_1 + uVar10);
      bVar9 = *__s;
      if ((bVar9 == 0) || (bVar9 == 0x27)) break;
      if (locale_mb_cur_max < 2) {
LAB_00066a70:
        uVar10 = uVar10 + 1;
      }
      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {
        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {
          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);
          if (sVar4 < 0xfffffffe) {
            if (sVar4 == 0) goto LAB_00066a70;
            goto LAB_000669de;
          }
          uVar10 = uVar10 + 1;
          local_28.__count = iVar7;
          local_28.__value = _Var3;
        }
        else {
LAB_000669de:
          uVar10 = uVar10 + sVar4;
        }
      }
      else {
        uVar10 = uVar10 + 1;
        local_28.__count = iVar7;
        local_28.__value = _Var3;
      }
    }
    if (bVar9 != 0) {
      uVar10 = uVar10 + 1;
      __s = (byte *)(param_1 + uVar10);
    }
    bVar12 = false;
  }
  else {
    uVar10 = FUN_00067c30(0);
    bVar12 = false;
    __s = (byte *)(param_1 + uVar10);
  }
  goto LAB_000663d0;
}


PUSH EBP
PUSH EDI
PUSH ESI
MOV ESI,ECX
PUSH EBX
CALL 0x00031ed0
ADD EBX,0xe3d45
SUB ESP,0x78
MOV EBP,dword ptr [EDX]
MOV dword ptr [ESP + 0x30],ECX
MOV EDI,dword ptr [ESP + 0x90]
MOV ECX,dword ptr [ESP + 0x8c]
MOV dword ptr [ESP + 0x34],EDX
LEA EDX,[EAX + EBP*0x1]
MOV dword ptr [ESP + 0x1c],EAX
MOV dword ptr [ESP + 0x2c],ECX
MOV dword ptr [ESP + 0x28],EDI
MOV ECX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x68],ECX
XOR ECX,ECX
MOV dword ptr [ESP + 0x58],0x0
MOV dword ptr [ESP + 0x5c],0x0
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
CALL 0x0002f760
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
ADD EAX,EBP
CMP byte ptr [ESI],0x0
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [ESP + 0x18],0x0
JZ 0x00066360
CMP byte ptr [ESI + 0x1],0x0
MOV dword ptr [ESP + 0x18],0x1
JZ 0x00066360
CMP byte ptr [ESI + 0x2],0x0
MOV dword ptr [ESP + 0x18],0x2
JZ 0x00066360
SUB ESP,0xc
PUSH ESI
CALL 0x0002f760
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x18],EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x20]
CMP byte ptr [EAX],0x0
JNZ 0x00066550
MOV dword ptr [ESP + 0x30],0x0
MOV EAX,dword ptr [ESP + 0x1c]
CMP byte ptr [EAX],0x0
JZ 0x000668e0
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x2c],0x1
CMP byte ptr [EAX + 0x1],0x0
JZ 0x000663b0
CMP byte ptr [EAX + 0x2],0x0
MOV dword ptr [ESP + 0x2c],0x2
JNZ 0x00066940
LEA ESI,[ESI]
LEA ESI,[ESI]
LEA EAX,[EBX + 0xd4b0]
XOR ESI,ESI
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [ESP + 0x8],ESI
MOV dword ptr [ESP + 0x34],EAX
LEA ESI,[ESI]
NOP
MOVSX EDI,byte ptr [EDX]
MOV ECX,EDI
CMP EBP,dword ptr [ESP + 0xc]
JA 0x00066508
TEST EDI,EDI
JZ 0x00066741
MOV ESI,dword ptr [ESP + 0x8]
TEST ESI,ESI
JNZ 0x00066598
MOV EAX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JNZ 0x00066630
TEST byte ptr [ESP + 0x88],0x8
JZ 0x00066600
CMP EDI,0x23
JZ 0x00066790
CMP EDI,0x1
JZ 0x0006660e
CMP EDI,0x5c
JZ 0x0006660e
CMP CL,0x24
JZ 0x00066860
MOV EAX,dword ptr [ESP + 0x18]
TEST EAX,EAX
JZ 0x000666fd
MOV EAX,dword ptr [ESP + 0x24]
CMP CL,byte ptr [EAX]
JZ 0x000666d0
MOV EAX,dword ptr [ESP + 0x30]
TEST EAX,EAX
JZ 0x0006645d
MOV EAX,dword ptr [ESP + 0x20]
CMP CL,byte ptr [EAX]
JZ 0x00066b00
MOV EAX,dword ptr [ESP + 0x2c]
TEST EAX,EAX
JZ 0x000668cd
MOV EAX,dword ptr [ESP + 0x1c]
CMP CL,byte ptr [EAX]
JZ 0x000668a0
CMP EDI,0x60
JZ 0x00066ad0
CMP EDI,0x27
JZ 0x000668f0
CMP EDI,0x22
JZ 0x000668f0
LEA EAX,[EBX + 0xd4b0]
CMP dword ptr [EAX],0x1
JLE 0x000664e0
MOV EAX,ECX
LEA ESI,[EBX + 0xfffbb1c0]
SHR AL,0x5
MOVZX EAX,AL
MOV EAX,dword ptr [ESI + EAX*0x4]
SHR EAX,CL
TEST AL,0x1
JNZ 0x00066930
LEA EAX,[EBX + 0xd4b8]
MOV ESI,dword ptr [EAX]
TEST ESI,ESI
JZ 0x00066a20
TEST CL,CL
JS 0x00066a20
SETNZ AL
MOVZX EAX,AL
TEST EAX,EAX
JNZ 0x00066935
LEA ESI,[ESI]
ADD EBP,0x1
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x8],0x0
LEA EDX,[EAX + EBP*0x1]
MOVSX EDI,byte ptr [EDX]
MOV ECX,EDI
CMP EBP,dword ptr [ESP + 0xc]
JBE 0x000663df
LEA ESI,[ESI]
MOV EBP,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP + 0x10]
CMP byte ptr [EAX + EBP*0x1],0x0
JZ 0x00066741
MOV ESI,dword ptr [ESP + 0x28]
MOV EAX,EBP
SUB EAX,dword ptr [ESI]
SUB EAX,dword ptr [ESP + 0x2c]
XOR ESI,ESI
LEA EDX,[EAX + 0x1]
MOV dword ptr [ESP + 0x48],EDX
TEST byte ptr [ESP + 0x88],0x1
JZ 0x00066a90
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [EAX],EBP
JMP 0x00066757
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x30],0x1
CMP byte ptr [EAX + 0x1],0x0
JZ 0x00066375
CMP byte ptr [EAX + 0x2],0x0
MOV dword ptr [ESP + 0x30],0x2
JZ 0x00066375
MOV dword ptr [ESP + 0x8],EDX
SUB ESP,0xc
PUSH EAX
CALL 0x0002f760
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x30],EAX
JMP 0x00066375
XOR EAX,EAX
CMP EDI,0xa
SETNZ AL
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[EBX + 0xd4b0]
CMP dword ptr [EAX],0x1
JLE 0x000665f0
MOV EAX,ECX
LEA EDI,[EBX + 0xfffbb1c0]
SHR AL,0x5
MOVZX EAX,AL
MOV EAX,dword ptr [EDI + EAX*0x4]
SHR EAX,CL
TEST AL,0x1
JNZ 0x00066778
LEA EAX,[EBX + 0xd4b8]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x00066820
TEST CL,CL
JS 0x00066820
SETNZ AL
MOVZX EAX,AL
TEST EAX,EAX
JNZ 0x0006677d
MOV EAX,dword ptr [ESP + 0x10]
ADD EBP,0x1
LEA EDX,[EAX + EBP*0x1]
JMP 0x000663d0
CMP EDI,0x1
JZ 0x0006660e
CMP EDI,0x5c
JNZ 0x00066431
MOV EAX,dword ptr [ESP + 0x10]
ADD EBP,0x1
MOV dword ptr [ESP + 0x8],0x0
MOV dword ptr [ESP + 0x14],0x1
LEA EDX,[EAX + EBP*0x1]
JMP 0x000663d0
LEA EAX,[EBX + 0xd4b0]
CMP dword ptr [EAX],0x1
JLE 0x0006666c
MOV EAX,ECX
LEA EDI,[EBX + 0xfffbb1c0]
SHR AL,0x5
MOVZX EAX,AL
MOV EAX,dword ptr [EDI + EAX*0x4]
SHR EAX,CL
TEST AL,0x1
JNZ 0x000666c0
LEA EAX,[EBX + 0xd4b8]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x00066678
TEST CL,CL
JS 0x00066678
SETNZ AL
MOVZX EAX,AL
TEST EAX,EAX
JNZ 0x000666c5
ADD EBP,0x1
JMP 0x000666a7
LEA EAX,[ESP + 0x4c]
MOV ESI,dword ptr [ESP + 0x4c]
MOV EDI,dword ptr [ESP + 0x50]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x10]
SUB EAX,EBP
PUSH EAX
PUSH EDX
PUSH 0x0
CALL 0x0002f5b0
ADD ESP,0x10
CMP EAX,-0x2
JC 0x00066668
MOV dword ptr [ESP + 0x4c],ESI
ADD EBP,0x1
MOV dword ptr [ESP + 0x50],EDI
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x14],0x0
LEA EDX,[EAX + EBP*0x1]
JMP 0x000663d0
MOV EAX,0x1
ADD EBP,EAX
JMP 0x000666a7
MOV byte ptr [ESP + 0x38],CL
SUB ESP,0x4
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x2c]
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
CALL 0x0002fc30
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOVZX ECX,byte ptr [ESP + 0x38]
TEST EAX,EAX
JNZ 0x00066449
ADD EBP,dword ptr [ESP + 0x18]
LEA EDX,[ESP + 0x48]
SUB ESP,0x4
MOV dword ptr [ESP + 0x4c],EBP
MOV EAX,dword ptr [ESP + 0x8c]
OR EAX,0x1
PUSH EAX
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x000662b0
MOV EBP,dword ptr [ESP + 0x58]
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
CMP EBP,EAX
JC 0x000664e0
MOV EBP,EAX
MOV EDX,dword ptr [EBX + 0x704c]
TEST EDX,EDX
JZ 0x00066ba9
MOV EAX,dword ptr [ESP + 0x28]
XOR ESI,ESI
MOV dword ptr [EAX],EBP
MOV EBX,dword ptr [ESP + 0x5c]
XOR EBX,dword ptr GS:[0x14]
MOV EAX,ESI
JNZ 0x00066ba4
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,0x1
ADD EBP,EAX
MOV EAX,dword ptr [ESP + 0x10]
LEA EDX,[EAX + EBP*0x1]
JMP 0x000663d0
TEST EBP,EBP
JZ 0x000667b2
MOV EAX,dword ptr [ESP + 0x10]
MOVZX EAX,byte ptr [EAX + EBP*0x1 + -0x1]
CMP AL,0xa
JZ 0x000667b2
LEA ESI,[EBX + 0xb80]
TEST byte ptr [ESI + EAX*0x4 + 0x1],0x20
JZ 0x00066431
LEA EAX,[EBX + 0xd4b0]
CMP dword ptr [EAX],0x1
JLE 0x00066807
LEA EAX,[EBX + 0xfffbb1c0]
LEA ECX,[EBX + 0xd4b8]
MOV EAX,dword ptr [EAX + 0x4]
AND EAX,0x8
OR EAX,dword ptr [ECX]
JNZ 0x00066b98
LEA EAX,[ESP + 0x4c]
MOV ESI,dword ptr [ESP + 0x4c]
MOV EDI,dword ptr [ESP + 0x50]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x10]
SUB EAX,EBP
PUSH EAX
PUSH EDX
PUSH 0x0
CALL 0x0002f5b0
ADD ESP,0x10
CMP EAX,-0x2
JNC 0x00066a58
TEST EAX,EAX
JNZ 0x00066b9d
ADD EBP,0x1
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x8],0x1
LEA EDX,[EAX + EBP*0x1]
JMP 0x000663d0
LEA EAX,[ESP + 0x4c]
MOV ESI,dword ptr [ESP + 0x4c]
MOV EDI,dword ptr [ESP + 0x50]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x10]
SUB EAX,EBP
PUSH EAX
PUSH EDX
PUSH 0x0
CALL 0x0002f5b0
ADD ESP,0x10
CMP EAX,-0x2
JC 0x000665e8
MOV EAX,dword ptr [ESP + 0x10]
ADD EBP,0x1
MOV dword ptr [ESP + 0x4c],ESI
MOV dword ptr [ESP + 0x50],EDI
LEA EDX,[EAX + EBP*0x1]
JMP 0x000663d0
MOV EAX,dword ptr [ESP + 0x10]
CMP byte ptr [EAX + EBP*0x1 + 0x1],0x28
JNZ 0x00066431
ADD EBP,0x2
SUB ESP,0x4
MOV dword ptr [ESP + 0x4c],EBP
MOV EAX,dword ptr [ESP + 0x8c]
OR EAX,0x1
PUSH EAX
LEA EAX,[ESP + 0x50]
PUSH EAX
PUSH dword ptr [ESP + 0x1c]
CALL 0x00066240
JMP 0x0006672c
MOV byte ptr [ESP + 0x38],CL
SUB ESP,0x4
PUSH dword ptr [ESP + 0x30]
PUSH dword ptr [ESP + 0x24]
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
CALL 0x0002fc30
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOVZX ECX,byte ptr [ESP + 0x38]
TEST EAX,EAX
JNZ 0x00066475
MOV EAX,dword ptr [ESP + 0x2c]
LEA EBP,[EBP + EAX*0x1 + -0x1]
JMP 0x0006651a
MOV dword ptr [ESP + 0x2c],0x0
JMP 0x000663b0
ADD EBP,0x1
MOV dword ptr [ESP + 0x48],EBP
CMP EDI,0x27
JZ 0x00066960
SUB ESP,0xc
MOV ECX,EBP
PUSH 0x0
MOV ESI,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,ESI
CALL 0x00067c30
ADD ESP,0x10
MOV EBP,EAX
MOV dword ptr [ESP + 0x8],0x0
LEA EDX,[ESI + EBP*0x1]
JMP 0x000663d0
MOV EAX,0x1
ADD EBP,EAX
JMP 0x000664e3
MOV dword ptr [ESP + 0x8],EDX
SUB ESP,0xc
PUSH EAX
CALL 0x0002f760
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x2c],EAX
JMP 0x000663b0
LEA EAX,[ESP + 0x54]
MOV dword ptr [ESP + 0x54],0x0
MOV dword ptr [ESP + 0x38],EAX
LEA EAX,[EBX + 0xfffbb1c0]
MOV dword ptr [ESP + 0x58],0x0
MOV dword ptr [ESP + 0x8],EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x10]
LEA EDX,[EAX + EBP*0x1]
MOVZX ECX,byte ptr [EDX]
TEST CL,CL
JZ 0x00066b78
CMP CL,0x27
JZ 0x00066b78
MOV EAX,dword ptr [ESP + 0x34]
CMP dword ptr [EAX],0x1
JLE 0x00066a70
MOV EAX,ECX
MOV ESI,dword ptr [ESP + 0x8]
SHR AL,0x5
MOVZX EAX,AL
MOV EAX,dword ptr [ESI + EAX*0x4]
SHR EAX,CL
TEST AL,0x1
JNZ 0x00066a80
LEA EAX,[EBX + 0xd4b8]
MOV EDI,dword ptr [EAX]
TEST EDI,EDI
JZ 0x000669e8
MOV EAX,0x1
TEST CL,CL
JS 0x000669e8
ADD EBP,EAX
JMP 0x00066988
MOV ESI,dword ptr [ESP + 0x54]
MOV EDI,dword ptr [ESP + 0x58]
PUSH dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x10]
SUB EAX,EBP
PUSH EAX
PUSH EDX
PUSH 0x0
CALL 0x0002f5b0
ADD ESP,0x10
CMP EAX,-0x2
JC 0x00066a68
MOV dword ptr [ESP + 0x54],ESI
ADD EBP,0x1
MOV dword ptr [ESP + 0x58],EDI
JMP 0x00066988
LEA EAX,[ESP + 0x4c]
MOV ESI,dword ptr [ESP + 0x4c]
MOV EDI,dword ptr [ESP + 0x50]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x10]
SUB EAX,EBP
PUSH EAX
PUSH EDX
PUSH 0x0
CALL 0x0002f5b0
ADD ESP,0x10
CMP EAX,-0x2
JC 0x000664d4
MOV dword ptr [ESP + 0x4c],ESI
ADD EBP,0x1
MOV dword ptr [ESP + 0x50],EDI
JMP 0x000664e3
MOV dword ptr [ESP + 0x4c],ESI
ADD EBP,0x1
MOV dword ptr [ESP + 0x50],EDI
JMP 0x0006680a
TEST EAX,EAX
JNZ 0x000669de
ADD EBP,0x1
JMP 0x00066988
MOV EAX,0x1
ADD EBP,EAX
JMP 0x00066988
SUB ESP,0xc
ADD EAX,0x2
PUSH EAX
CALL 0x00099200
ADD ESP,0xc
PUSH dword ptr [ESP + 0x4c]
MOV ECX,dword ptr [ESP + 0x30]
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x18]
ADD EAX,dword ptr [ECX]
PUSH EAX
PUSH ESI
CALL 0x0002f8e0
MOV EAX,dword ptr [ESP + 0x58]
ADD ESP,0x10
MOV byte ptr [ESI + EAX*0x1],0x0
JMP 0x0006653d
ADD EBP,0x1
LEA EDX,[ESP + 0x48]
LEA ECX,[EBX + 0xfffbc5f4]
SUB ESP,0xc
MOV dword ptr [ESP + 0x54],EBP
MOV EAX,dword ptr [ESP + 0x94]
OR EAX,0x1
PUSH EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x000671c0
JMP 0x0006672c
MOV byte ptr [ESP + 0x3f],CL
SUB ESP,0x4
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x28]
PUSH EDX
MOV dword ptr [ESP + 0x48],EDX
CALL 0x0002fc30
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x38]
MOVZX ECX,byte ptr [ESP + 0x3f]
TEST EAX,EAX
MOV dword ptr [ESP + 0x8],EAX
JNZ 0x0006645d
ADD EBP,dword ptr [ESP + 0x30]
LEA EDX,[ESP + 0x48]
SUB ESP,0x4
MOV dword ptr [ESP + 0x4c],EBP
MOV EAX,dword ptr [ESP + 0x8c]
OR EAX,0x1
PUSH EAX
PUSH dword ptr [ESP + 0x24]
MOV ECX,dword ptr [ESP + 0x2c]
PUSH ECX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x000662b0
MOV EBP,dword ptr [ESP + 0x58]
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
CMP EBP,EAX
JNC 0x0006673f
JMP 0x0006666c
TEST CL,CL
JZ 0x00066b86
MOV EAX,dword ptr [ESP + 0x10]
ADD EBP,0x1
LEA EDX,[EAX + EBP*0x1]
MOV dword ptr [ESP + 0x8],0x0
JMP 0x000663d0
MOV EAX,0x1
ADD EBP,EAX
JMP 0x0006680a
CALL 0x000ecc40
LEA EAX,[EBX + 0x8df0]
MOV dword ptr [EAX],0x1
PUSH EAX
LEA EAX,[EBX + 0xfffa6b84]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x0002f380
ADD ESP,0xc
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x24]
PUSH EAX
CALL 0x00059690
MOV EAX,0x2
CALL 0x00064460
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3\nFUN_000662b0(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)\n\n{\n  byte bVar1;\n  bool bVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  byte bVar9;\n  byte *__s;\n  uint uVar10;\n  char *__dest;\n  uint uVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  size_t local_64;\n  size_t local_50;\n  size_t local_4c;\n  uint local_34;\n  mbstate_t local_30;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x662bb;\n  uVar10 = *param_2;\n  __s = (byte *)(param_1 + uVar10);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30.__count = 0;\n  local_30.__value.__wch = 0;\n  sVar4 = strlen((char *)__s);\n  uVar5 = sVar4 + uVar10;\n  local_64 = 0;\n  if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {\n    local_64 = strlen((char *)param_3);\n  }\n  if (*param_4 == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }\n  if (*param_5 == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }\n  bVar2 = false;\n  bVar12 = false;\nLAB_000663d0:\n  bVar9 = *__s;\n  iVar7 = local_30.__count;\n  _Var3 = local_30.__value;\n  do {\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    /* WARNING: Subroutine does not return */\n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  } while( true );\n  uVar10 = uVar10 + 1;\n  local_34 = uVar10;\n  if (uVar11 == 0x27) {\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }\n  else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }\n  goto LAB_000663d0;\n}\n\n" comment (function_definition "char * __regparm3\nFUN_000662b0(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)\n\n{\n  byte bVar1;\n  bool bVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  byte bVar9;\n  byte *__s;\n  uint uVar10;\n  char *__dest;\n  uint uVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  size_t local_64;\n  size_t local_50;\n  size_t local_4c;\n  uint local_34;\n  mbstate_t local_30;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x662bb;\n  uVar10 = *param_2;\n  __s = (byte *)(param_1 + uVar10);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30.__count = 0;\n  local_30.__value.__wch = 0;\n  sVar4 = strlen((char *)__s);\n  uVar5 = sVar4 + uVar10;\n  local_64 = 0;\n  if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {\n    local_64 = strlen((char *)param_3);\n  }\n  if (*param_4 == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }\n  if (*param_5 == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }\n  bVar2 = false;\n  bVar12 = false;\nLAB_000663d0:\n  bVar9 = *__s;\n  iVar7 = local_30.__count;\n  _Var3 = local_30.__value;\n  do {\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    /* WARNING: Subroutine does not return */\n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  } while( true );\n  uVar10 = uVar10 + 1;\n  local_34 = uVar10;\n  if (uVar11 == 0x27) {\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }\n  else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }\n  goto LAB_000663d0;\n}" primitive_type (pointer_declarator "* __regparm3\nFUN_000662b0(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_000662b0(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)" identifier (parameter_list "(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "char *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "uint param_6" type_identifier identifier) )))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  byte bVar9;\n  byte *__s;\n  uint uVar10;\n  char *__dest;\n  uint uVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  size_t local_64;\n  size_t local_50;\n  size_t local_4c;\n  uint local_34;\n  mbstate_t local_30;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x662bb;\n  uVar10 = *param_2;\n  __s = (byte *)(param_1 + uVar10);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30.__count = 0;\n  local_30.__value.__wch = 0;\n  sVar4 = strlen((char *)__s);\n  uVar5 = sVar4 + uVar10;\n  local_64 = 0;\n  if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {\n    local_64 = strlen((char *)param_3);\n  }\n  if (*param_4 == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }\n  if (*param_5 == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }\n  bVar2 = false;\n  bVar12 = false;\nLAB_000663d0:\n  bVar9 = *__s;\n  iVar7 = local_30.__count;\n  _Var3 = local_30.__value;\n  do {\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    /* WARNING: Subroutine does not return */\n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  } while( true );\n  uVar10 = uVar10 + 1;\n  local_34 = uVar10;\n  if (uVar11 == 0x27) {\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }\n  else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }\n  goto LAB_000663d0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "_union_54 _Var3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "byte *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "size_t local_64;" primitive_type identifier ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "size_t local_4c;" primitive_type identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "mbstate_t local_30;" type_identifier identifier ;) (declaration "mbstate_t local_28;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x662bb;" (assignment_expression "uStack_14 = 0x662bb" identifier = number_literal) ;) (expression_statement "uVar10 = *param_2;" (assignment_expression "uVar10 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_30.__count = 0;" (assignment_expression "local_30.__count = 0" (field_expression "local_30.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_30.__value.__wch = 0;" (assignment_expression "local_30.__value.__wch = 0" (field_expression "local_30.__value.__wch" (field_expression "local_30.__value" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "sVar4 = strlen((char *)__s);" (assignment_expression "sVar4 = strlen((char *)__s)" identifier = (call_expression "strlen((char *)__s)" identifier (argument_list "((char *)__s)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "uVar5 = sVar4 + uVar10;" (assignment_expression "uVar5 = sVar4 + uVar10" identifier = (binary_expression "sVar4 + uVar10" identifier + identifier)) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (if_statement "if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {\n    local_64 = strlen((char *)param_3);\n  }" if (parenthesized_expression "(((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0))" ( (binary_expression "((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)" (parenthesized_expression "((*param_3 != 0) && (local_64 = 1, param_3[1] != 0))" ( (binary_expression "(*param_3 != 0) && (local_64 = 1, param_3[1] != 0)" (parenthesized_expression "(*param_3 != 0)" ( (binary_expression "*param_3 != 0" (pointer_expression "*param_3" * identifier) != number_literal) )) && (parenthesized_expression "(local_64 = 1, param_3[1] != 0)" ( (comma_expression "local_64 = 1, param_3[1] != 0" (assignment_expression "local_64 = 1" identifier = number_literal) , (binary_expression "param_3[1] != 0" (subscript_expression "param_3[1]" identifier [ number_literal ]) != number_literal)) ))) )) && (parenthesized_expression "(local_64 = 2, param_3[2] != 0)" ( (comma_expression "local_64 = 2, param_3[2] != 0" (assignment_expression "local_64 = 2" identifier = number_literal) , (binary_expression "param_3[2] != 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n    local_64 = strlen((char *)param_3);\n  }" { (expression_statement "local_64 = strlen((char *)param_3);" (assignment_expression "local_64 = strlen((char *)param_3)" identifier = (call_expression "strlen((char *)param_3)" identifier (argument_list "((char *)param_3)" ( (cast_expression "(char *)param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) })) (if_statement "if (*param_4 == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }" if (parenthesized_expression "(*param_4 == '\0')" ( (binary_expression "*param_4 == '\0'" (pointer_expression "*param_4" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_4c = 0;\n  }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }" else (compound_statement "{\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }" { (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) (if_statement "if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }" if (parenthesized_expression "((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0'))" ( (binary_expression "(param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')" (parenthesized_expression "(param_4[1] != '\0')" ( (binary_expression "param_4[1] != '\0'" (subscript_expression "param_4[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_4c = 2, param_4[2] != '\0')" ( (comma_expression "local_4c = 2, param_4[2] != '\0'" (assignment_expression "local_4c = 2" identifier = number_literal) , (binary_expression "param_4[2] != '\0'" (subscript_expression "param_4[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      local_4c = strlen(param_4);\n    }" { (expression_statement "local_4c = strlen(param_4);" (assignment_expression "local_4c = strlen(param_4)" identifier = (call_expression "strlen(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) })) }))) (if_statement "if (*param_5 == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }" if (parenthesized_expression "(*param_5 == '\0')" ( (binary_expression "*param_5 == '\0'" (pointer_expression "*param_5" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_50 = 0;\n  }" { (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }" else (compound_statement "{\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }" { (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (if_statement "if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }" if (parenthesized_expression "((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0'))" ( (binary_expression "(param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')" (parenthesized_expression "(param_5[1] != '\0')" ( (binary_expression "param_5[1] != '\0'" (subscript_expression "param_5[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_50 = 2, param_5[2] != '\0')" ( (comma_expression "local_50 = 2, param_5[2] != '\0'" (assignment_expression "local_50 = 2" identifier = number_literal) , (binary_expression "param_5[2] != '\0'" (subscript_expression "param_5[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      local_50 = strlen(param_5);\n    }" { (expression_statement "local_50 = strlen(param_5);" (assignment_expression "local_50 = strlen(param_5)" identifier = (call_expression "strlen(param_5)" identifier (argument_list "(param_5)" ( identifier )))) ;) })) }))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (labeled_statement "LAB_000663d0:\n  bVar9 = *__s;" statement_identifier : (expression_statement "bVar9 = *__s;" (assignment_expression "bVar9 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;)) (expression_statement "iVar7 = local_30.__count;" (assignment_expression "iVar7 = local_30.__count" identifier = (field_expression "local_30.__count" identifier . field_identifier)) ;) (expression_statement "_Var3 = local_30.__value;" (assignment_expression "_Var3 = local_30.__value" identifier = (field_expression "local_30.__value" identifier . field_identifier)) ;) (do_statement "do {\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    /* WARNING: Subroutine does not return */\n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  } while( true );" do (compound_statement "{\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    /* WARNING: Subroutine does not return */\n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  }" { (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" identifier . field_identifier) = identifier) ;) (if_statement "if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }" if (parenthesized_expression "(uVar5 < uVar10)" ( (binary_expression "uVar5 < uVar10" identifier < identifier) )) (compound_statement "{\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }" { (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) (if_statement "if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;" if (parenthesized_expression "(*(char *)(param_1 + uVar5) == '\0')" ( (binary_expression "*(char *)(param_1 + uVar5) == '\0'" (pointer_expression "*(char *)(param_1 + uVar5)" * (cast_expression "(char *)(param_1 + uVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar5)" ( (binary_expression "param_1 + uVar5" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00066741;" goto statement_identifier ;)) (labeled_statement "LAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;" statement_identifier : (expression_statement "iVar7 = (uVar5 - *param_2) - local_50;" (assignment_expression "iVar7 = (uVar5 - *param_2) - local_50" identifier = (binary_expression "(uVar5 - *param_2) - local_50" (parenthesized_expression "(uVar5 - *param_2)" ( (binary_expression "uVar5 - *param_2" identifier - (pointer_expression "*param_2" * identifier)) )) - identifier)) ;)) (expression_statement "__dest = (char *)0x0;" (assignment_expression "__dest = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = iVar7 + 1;" (assignment_expression "local_34 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (if_statement "if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }" if (parenthesized_expression "((param_6 & 1) == 0)" ( (binary_expression "(param_6 & 1) == 0" (parenthesized_expression "(param_6 & 1)" ( (binary_expression "param_6 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }" { (expression_statement "__dest = (char *)xmalloc(iVar7 + 2);" (assignment_expression "__dest = (char *)xmalloc(iVar7 + 2)" identifier = (cast_expression "(char *)xmalloc(iVar7 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar7 + 2)" identifier (argument_list "(iVar7 + 2)" ( (binary_expression "iVar7 + 2" identifier + number_literal) ))))) ;) (expression_statement "strncpy(__dest,(char *)(param_1 + *param_2),local_34);" (call_expression "strncpy(__dest,(char *)(param_1 + *param_2),local_34)" identifier (argument_list "(__dest,(char *)(param_1 + *param_2),local_34)" ( identifier , (cast_expression "(char *)(param_1 + *param_2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *param_2)" ( (binary_expression "param_1 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) ))) , identifier ))) ;) (expression_statement "__dest[local_34] = '\0';" (assignment_expression "__dest[local_34] = '\0'" (subscript_expression "__dest[local_34]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "*param_2 = uVar5;" (assignment_expression "*param_2 = uVar5" (pointer_expression "*param_2" * identifier) = identifier) ;) (goto_statement "goto LAB_00066757;" goto statement_identifier ;) })) (expression_statement "uVar11 = (uint)(char)bVar9;" (assignment_expression "uVar11 = (uint)(char)bVar9" identifier = (cast_expression "(uint)(char)bVar9" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)bVar9" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "uVar6 = uVar10;" (assignment_expression "uVar6 = uVar10" identifier = identifier) ;) (if_statement "if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    /* WARNING: Subroutine does not return */\n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_000ecc40();\n    }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    /* WARNING: Subroutine does not return */\n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_000ecc40();\n    }" { (labeled_statement "LAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    /* WARNING: Subroutine does not return */\n        FUN_00064460();\n      }" statement_identifier : (if_statement "if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    /* WARNING: Subroutine does not return */\n        FUN_00064460();\n      }" if (parenthesized_expression "(no_longjmp_on_fatal_error == 0)" ( (binary_expression "no_longjmp_on_fatal_error == 0" identifier == number_literal) )) (compound_statement "{\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    /* WARNING: Subroutine does not return */\n        FUN_00064460();\n      }" { (expression_statement "last_command_exit_value = 1;" (assignment_expression "last_command_exit_value = 1" identifier = number_literal) ;) (expression_statement "uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);" (assignment_expression "uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value)" identifier = (call_expression "dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value)" identifier (argument_list "(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value)" ( number_literal , (string_literal ""bad substitution: no closing `%s\' in %s"" " string_content escape_sequence string_content ") , number_literal , (pointer_expression "&last_command_exit_value" & identifier) )))) ;) (expression_statement "report_error(uVar8,param_5,param_1);" (call_expression "report_error(uVar8,param_5,param_1)" identifier (argument_list "(uVar8,param_5,param_1)" ( identifier , identifier , identifier ))) ;) comment (expression_statement "FUN_00064460();" (call_expression "FUN_00064460()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "__dest = (char *)0x0;" (assignment_expression "__dest = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*param_2 = uVar6;" (assignment_expression "*param_2 = uVar6" (pointer_expression "*param_2" * identifier) = identifier) ;) (labeled_statement "LAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n        return __dest;\n      }" { (return_statement "return __dest;" return identifier ;) }))) comment (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }" { (expression_statement "bVar12 = uVar11 != 10;" (assignment_expression "bVar12 = uVar11 != 10" identifier = (binary_expression "uVar11 != 10" identifier != number_literal)) ;) (if_statement "if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }" { (labeled_statement "LAB_000665f0:\n        uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) }) (else_clause "else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }" else (compound_statement "{\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }" { (if_statement "if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }" if (parenthesized_expression "(((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "uVar11 >> 5 & 7" (binary_expression "uVar11 >> 5" identifier >> number_literal) & number_literal) ]) >> (parenthesized_expression "(bVar9 & 0x1f)" ( (binary_expression "bVar9 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }" { (if_statement "if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }" if (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar9 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || ((char)bVar9 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "((char)bVar9 < '\0')" ( (binary_expression "(char)bVar9 < '\0'" (cast_expression "(char)bVar9" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }" { (expression_statement "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);" (assignment_expression "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "uVar5 - uVar10" identifier - identifier) , (pointer_expression "&local_30" & identifier) )))) ;) (if_statement "if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }" if (parenthesized_expression "(0xfffffffd < uVar6)" ( (binary_expression "0xfffffffd < uVar6" number_literal < identifier) )) (compound_statement "{\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }" { (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" identifier . field_identifier) = identifier) ;) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) }) (else_clause "else {\n            uVar6 = (uint)(bVar9 != 0);\n          }" else (compound_statement "{\n            uVar6 = (uint)(bVar9 != 0);\n          }" { (expression_statement "uVar6 = (uint)(bVar9 != 0);" (assignment_expression "uVar6 = (uint)(bVar9 != 0)" identifier = (call_expression "(uint)(bVar9 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )))) ;) }))) (if_statement "if (uVar6 == 0) goto LAB_000665f0;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000665f0;" goto statement_identifier ;)) }) (else_clause "else {\n          uVar6 = 1;\n        }" else (compound_statement "{\n          uVar6 = 1;\n        }" { (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) }))) (expression_statement "uVar10 = uVar10 + uVar6;" (assignment_expression "uVar10 = uVar10 + uVar6" identifier = (binary_expression "uVar10 + uVar6" identifier + identifier)) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) }))) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) (if_statement "if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }" { (if_statement "if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }" { (labeled_statement "LAB_0006666c:\n        uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) }) (else_clause "else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" else (if_statement "if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" if (parenthesized_expression "(((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "uVar11 >> 5 & 7" (binary_expression "uVar11 >> 5" identifier >> number_literal) & number_literal) ]) >> (parenthesized_expression "(bVar9 & 0x1f)" ( (binary_expression "bVar9 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }" { (if_statement "if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }" if (parenthesized_expression "((locale_utf8locale != 0) && (-1 < (char)bVar9))" ( (binary_expression "(locale_utf8locale != 0) && (-1 < (char)bVar9)" (parenthesized_expression "(locale_utf8locale != 0)" ( (binary_expression "locale_utf8locale != 0" identifier != number_literal) )) && (parenthesized_expression "(-1 < (char)bVar9)" ( (binary_expression "-1 < (char)bVar9" number_literal < (cast_expression "(char)bVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }" { (expression_statement "uVar6 = (uint)(bVar9 != 0);" (assignment_expression "uVar6 = (uint)(bVar9 != 0)" identifier = (call_expression "(uint)(bVar9 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )))) ;) (labeled_statement "LAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;" statement_identifier : (if_statement "if (uVar6 == 0) goto LAB_0006666c;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0006666c;" goto statement_identifier ;))) (goto_statement "goto LAB_000666c5;" goto statement_identifier ;) })) (expression_statement "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);" (assignment_expression "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "uVar5 - uVar10" identifier - identifier) , (pointer_expression "&local_30" & identifier) )))) ;) (if_statement "if (uVar6 < 0xfffffffe) goto LAB_00066668;" if (parenthesized_expression "(uVar6 < 0xfffffffe)" ( (binary_expression "uVar6 < 0xfffffffe" identifier < number_literal) )) (goto_statement "goto LAB_00066668;" goto statement_identifier ;)) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" else (compound_statement "{\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" { (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000666c5:\n        uVar10 = uVar10 + uVar6;" statement_identifier : (expression_statement "uVar10 = uVar10 + uVar6;" (assignment_expression "uVar10 = uVar10 + uVar6" identifier = (binary_expression "uVar10 + uVar6" identifier + identifier)) ;)) }))))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) (if_statement "if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }" if (parenthesized_expression "((param_6 & 8) == 0)" ( (binary_expression "(param_6 & 8) == 0" (parenthesized_expression "(param_6 & 8)" ( (binary_expression "param_6 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }" { (if_statement "if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }" if (parenthesized_expression "((uVar11 == 1) || (uVar11 == 0x5c))" ( (binary_expression "(uVar11 == 1) || (uVar11 == 0x5c)" (parenthesized_expression "(uVar11 == 1)" ( (binary_expression "uVar11 == 1" identifier == number_literal) )) || (parenthesized_expression "(uVar11 == 0x5c)" ( (binary_expression "uVar11 == 0x5c" identifier == number_literal) ))) )) (compound_statement "{\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }" { (labeled_statement "LAB_0006660e:\n        uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) (labeled_statement "LAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }" statement_identifier : (if_statement "if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }" { (labeled_statement "LAB_000666fd:\n        local_34 = uVar10 + local_64;" statement_identifier : (expression_statement "local_34 = uVar10 + local_64;" (assignment_expression "local_34 = uVar10 + local_64" identifier = (binary_expression "uVar10 + local_64" identifier + identifier)) ;)) (expression_statement "FUN_000662b0(param_4,param_5,param_6 | 1);" (call_expression "FUN_000662b0(param_4,param_5,param_6 | 1)" identifier (argument_list "(param_4,param_5,param_6 | 1)" ( identifier , identifier , (binary_expression "param_6 | 1" identifier | number_literal) ))) ;) (goto_statement "goto LAB_0006672c;" goto statement_identifier ;) }))) (expression_statement "uVar6 = uVar11;" (assignment_expression "uVar6 = uVar11" identifier = identifier) ;) (if_statement "if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }" if (parenthesized_expression "(bVar9 == *param_3)" ( (binary_expression "bVar9 == *param_3" identifier == (pointer_expression "*param_3" * identifier)) )) (compound_statement "{\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }" { (expression_statement "iVar7 = strncmp((char *)__s,(char *)param_3,local_64);" (assignment_expression "iVar7 = strncmp((char *)__s,(char *)param_3,local_64)" identifier = (call_expression "strncmp((char *)__s,(char *)param_3,local_64)" identifier (argument_list "((char *)__s,(char *)param_3,local_64)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "uVar6 = (uint)bVar9;" (assignment_expression "uVar6 = (uint)bVar9" identifier = (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (iVar7 == 0) goto LAB_000666fd;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000666fd;" goto statement_identifier ;)) })) (if_statement "if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }" if (parenthesized_expression "((local_4c != 0) && ((char)uVar6 == *param_4))" ( (binary_expression "(local_4c != 0) && ((char)uVar6 == *param_4)" (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) && (parenthesized_expression "((char)uVar6 == *param_4)" ( (binary_expression "(char)uVar6 == *param_4" (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier) == (pointer_expression "*param_4" * identifier)) ))) )) (compound_statement "{\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }" { (expression_statement "iVar7 = strncmp((char *)__s,param_4,local_4c);" (assignment_expression "iVar7 = strncmp((char *)__s,param_4,local_4c)" identifier = (call_expression "strncmp((char *)__s,param_4,local_4c)" identifier (argument_list "((char *)__s,param_4,local_4c)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (expression_statement "uVar6 = uVar6 & 0xff;" (assignment_expression "uVar6 = uVar6 & 0xff" identifier = (binary_expression "uVar6 & 0xff" identifier & number_literal)) ;) (if_statement "if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }" { (expression_statement "local_34 = uVar10 + local_4c;" (assignment_expression "local_34 = uVar10 + local_4c" identifier = (binary_expression "uVar10 + local_4c" identifier + identifier)) ;) (expression_statement "FUN_000662b0(param_4,param_5,param_6 | 1);" (call_expression "FUN_000662b0(param_4,param_5,param_6 | 1)" identifier (argument_list "(param_4,param_5,param_6 | 1)" ( identifier , identifier , (binary_expression "param_6 | 1" identifier | number_literal) ))) ;) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) (if_statement "if (uVar5 <= local_34) goto LAB_00066741;" if (parenthesized_expression "(uVar5 <= local_34)" ( (binary_expression "uVar5 <= local_34" identifier <= identifier) )) (goto_statement "goto LAB_00066741;" goto statement_identifier ;)) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "uVar10 = local_34;" (assignment_expression "uVar10 = local_34" identifier = identifier) ;) (goto_statement "goto LAB_0006666c;" goto statement_identifier ;) })) })) (if_statement "if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }" { (labeled_statement "LAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;" statement_identifier : (expression_statement "uVar5 = (uVar10 - 1) + local_50;" (assignment_expression "uVar5 = (uVar10 - 1) + local_50" identifier = (binary_expression "(uVar10 - 1) + local_50" (parenthesized_expression "(uVar10 - 1)" ( (binary_expression "uVar10 - 1" identifier - number_literal) )) + identifier)) ;)) (goto_statement "goto LAB_0006651a;" goto statement_identifier ;) })) (if_statement "if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }" if (parenthesized_expression "((char)uVar6 == *param_5)" ( (binary_expression "(char)uVar6 == *param_5" (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier) == (pointer_expression "*param_5" * identifier)) )) (compound_statement "{\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }" { (expression_statement "iVar7 = strncmp((char *)__s,param_5,local_50);" (assignment_expression "iVar7 = strncmp((char *)__s,param_5,local_50)" identifier = (call_expression "strncmp((char *)__s,param_5,local_50)" identifier (argument_list "((char *)__s,param_5,local_50)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (expression_statement "uVar6 = uVar6 & 0xff;" (assignment_expression "uVar6 = uVar6 & 0xff" identifier = (binary_expression "uVar6 & 0xff" identifier & number_literal)) ;) (if_statement "if (iVar7 == 0) goto LAB_000668cd;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000668cd;" goto statement_identifier ;)) })) (expression_statement "_Var3 = local_30.__value;" (assignment_expression "_Var3 = local_30.__value" identifier = (field_expression "local_30.__value" identifier . field_identifier)) ;) (expression_statement "iVar7 = local_30.__count;" (assignment_expression "iVar7 = local_30.__count" identifier = (field_expression "local_30.__count" identifier . field_identifier)) ;) (if_statement "if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }" if (parenthesized_expression "(uVar11 == 0x60)" ( (binary_expression "uVar11 == 0x60" identifier == number_literal) )) (compound_statement "{\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }" { (expression_statement "local_34 = uVar10 + 1;" (assignment_expression "local_34 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000671c0(param_6 | 1);" (call_expression "FUN_000671c0(param_6 | 1)" identifier (argument_list "(param_6 | 1)" ( (binary_expression "param_6 | 1" identifier | number_literal) ))) ;) (goto_statement "goto LAB_0006672c;" goto statement_identifier ;) })) (if_statement "if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;" if (parenthesized_expression "((uVar11 == 0x27) || (uVar11 == 0x22))" ( (binary_expression "(uVar11 == 0x27) || (uVar11 == 0x22)" (parenthesized_expression "(uVar11 == 0x27)" ( (binary_expression "uVar11 == 0x27" identifier == number_literal) )) || (parenthesized_expression "(uVar11 == 0x22)" ( (binary_expression "uVar11 == 0x22" identifier == number_literal) ))) )) (break_statement "break;" break ;)) (if_statement "if (locale_mb_cur_max < 2) goto LAB_000664e0;" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (goto_statement "goto LAB_000664e0;" goto statement_identifier ;)) (expression_statement "bVar9 = (byte)uVar6;" (assignment_expression "bVar9 = (byte)uVar6" identifier = (cast_expression "(byte)uVar6" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }" if (parenthesized_expression "(((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[uVar6 >> 5 & 7]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "uVar6 >> 5 & 7" (binary_expression "uVar6 >> 5" identifier >> number_literal) & number_literal) ]) >> (parenthesized_expression "(bVar9 & 0x1f)" ( (binary_expression "bVar9 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }" { (if_statement "if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }" if (parenthesized_expression "((locale_utf8locale != 0) && (-1 < (char)bVar9))" ( (binary_expression "(locale_utf8locale != 0) && (-1 < (char)bVar9)" (parenthesized_expression "(locale_utf8locale != 0)" ( (binary_expression "locale_utf8locale != 0" identifier != number_literal) )) && (parenthesized_expression "(-1 < (char)bVar9)" ( (binary_expression "-1 < (char)bVar9" number_literal < (cast_expression "(char)bVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }" { (expression_statement "uVar6 = (uint)(bVar9 != 0);" (assignment_expression "uVar6 = (uint)(bVar9 != 0)" identifier = (call_expression "(uint)(bVar9 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )))) ;) (labeled_statement "LAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;" statement_identifier : (if_statement "if (uVar6 == 0) goto LAB_000664e0;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000664e0;" goto statement_identifier ;))) (goto_statement "goto LAB_00066935;" goto statement_identifier ;) })) (expression_statement "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);" (assignment_expression "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "uVar5 - uVar10" identifier - identifier) , (pointer_expression "&local_30" & identifier) )))) ;) (if_statement "if (uVar6 < 0xfffffffe) goto LAB_000664d4;" if (parenthesized_expression "(uVar6 < 0xfffffffe)" ( (binary_expression "uVar6 < 0xfffffffe" identifier < number_literal) )) (goto_statement "goto LAB_000664d4;" goto statement_identifier ;)) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }" else (compound_statement "{\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }" { (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00066935:\n        uVar10 = uVar10 + uVar6;" statement_identifier : (expression_statement "uVar10 = uVar10 + uVar6;" (assignment_expression "uVar10 = uVar10 + uVar6" identifier = (binary_expression "uVar10 + uVar6" identifier + identifier)) ;)) }))) }) (else_clause "else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }" else (compound_statement "{\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }" { (if_statement "if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }" if (parenthesized_expression "(uVar11 == 0x23)" ( (binary_expression "uVar11 == 0x23" identifier == number_literal) )) (compound_statement "{\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }" { (if_statement "if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;" if (parenthesized_expression "(((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0))" ( (binary_expression "((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)" (parenthesized_expression "((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10))" ( (binary_expression "(uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)" (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) && (parenthesized_expression "(bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)" ( (comma_expression "bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10" (assignment_expression "bVar1 = *(byte *)(param_1 + -1 + uVar10)" identifier = (pointer_expression "*(byte *)(param_1 + -1 + uVar10)" * (cast_expression "(byte *)(param_1 + -1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + -1 + uVar10)" ( (binary_expression "param_1 + -1 + uVar10" (binary_expression "param_1 + -1" identifier + number_literal) + identifier) ))))) , (binary_expression "bVar1 != 10" identifier != number_literal)) ))) )) && (parenthesized_expression "((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20)" ( (binary_expression "*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20" (pointer_expression "*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1)" * (cast_expression "(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1)" ( (binary_expression "(int)&sh_syntaxtab + (uint)bVar1 * 4 + 1" (binary_expression "(int)&sh_syntaxtab + (uint)bVar1 * 4" (cast_expression "(int)&sh_syntaxtab" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&sh_syntaxtab" & identifier)) + (binary_expression "(uint)bVar1 * 4" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_00066431;" goto statement_identifier ;)) (if_statement "if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }" { (labeled_statement "LAB_00066807:\n          uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) }) (else_clause "else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }" else (compound_statement "{\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }" { (if_statement "if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }" if (parenthesized_expression "((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0)" ( (binary_expression "(DAT_001051c4 & 8) == 0 && locale_utf8locale == 0" (binary_expression "(DAT_001051c4 & 8) == 0" (parenthesized_expression "(DAT_001051c4 & 8)" ( (binary_expression "DAT_001051c4 & 8" identifier & number_literal) )) == number_literal) && (binary_expression "locale_utf8locale == 0" identifier == number_literal)) )) (compound_statement "{\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }" { (expression_statement "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);" (assignment_expression "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "uVar5 - uVar10" identifier - identifier) , (pointer_expression "&local_30" & identifier) )))) ;) (if_statement "if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }" if (parenthesized_expression "(0xfffffffd < sVar4)" ( (binary_expression "0xfffffffd < sVar4" number_literal < identifier) )) (compound_statement "{\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }" { (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" identifier . field_identifier) = identifier) ;) (goto_statement "goto LAB_0006680a;" goto statement_identifier ;) })) (if_statement "if (sVar4 == 0) goto LAB_00066807;" if (parenthesized_expression "(sVar4 == 0)" ( (binary_expression "sVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00066807;" goto statement_identifier ;)) }) (else_clause "else {\n            sVar4 = 1;\n          }" else (compound_statement "{\n            sVar4 = 1;\n          }" { (expression_statement "sVar4 = 1;" (assignment_expression "sVar4 = 1" identifier = number_literal) ;) }))) (expression_statement "uVar10 = uVar10 + sVar4;" (assignment_expression "uVar10 = uVar10 + sVar4" identifier = (binary_expression "uVar10 + sVar4" identifier + identifier)) ;) }))) (labeled_statement "LAB_0006680a:\n        bVar12 = true;" statement_identifier : (expression_statement "bVar12 = true;" (assignment_expression "bVar12 = true" identifier = true) ;)) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) (if_statement "if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;" if (parenthesized_expression "((uVar11 == 1) || (uVar11 == 0x5c))" ( (binary_expression "(uVar11 == 1) || (uVar11 == 0x5c)" (parenthesized_expression "(uVar11 == 1)" ( (binary_expression "uVar11 == 1" identifier == number_literal) )) || (parenthesized_expression "(uVar11 == 0x5c)" ( (binary_expression "uVar11 == 0x5c" identifier == number_literal) ))) )) (goto_statement "goto LAB_0006660e;" goto statement_identifier ;)) (if_statement "if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;" if (parenthesized_expression "((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '('))" ( (binary_expression "(bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')" (parenthesized_expression "(bVar9 != 0x24)" ( (binary_expression "bVar9 != 0x24" identifier != number_literal) )) || (parenthesized_expression "(*(char *)(param_1 + 1 + uVar10) != '(')" ( (binary_expression "*(char *)(param_1 + 1 + uVar10) != '('" (pointer_expression "*(char *)(param_1 + 1 + uVar10)" * (cast_expression "(char *)(param_1 + 1 + uVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1 + uVar10)" ( (binary_expression "param_1 + 1 + uVar10" (binary_expression "param_1 + 1" identifier + number_literal) + identifier) )))) != (char_literal "'('" ' character ')) ))) )) (goto_statement "goto LAB_00066431;" goto statement_identifier ;)) (expression_statement "local_34 = uVar10 + 2;" (assignment_expression "local_34 = uVar10 + 2" identifier = (binary_expression "uVar10 + 2" identifier + number_literal)) ;) (expression_statement "extract_command_subst(param_1,&local_34,param_6 | 1);" (call_expression "extract_command_subst(param_1,&local_34,param_6 | 1)" identifier (argument_list "(param_1,&local_34,param_6 | 1)" ( identifier , (pointer_expression "&local_34" & identifier) , (binary_expression "param_6 | 1" identifier | number_literal) ))) ;) (labeled_statement "LAB_0006672c:\n      uVar6 = uVar5;" statement_identifier : (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;)) (expression_statement "uVar10 = local_34;" (assignment_expression "uVar10 = local_34" identifier = identifier) ;) (if_statement "if (uVar5 <= local_34) goto LAB_00066741;" if (parenthesized_expression "(uVar5 <= local_34)" ( (binary_expression "uVar5 <= local_34" identifier <= identifier) )) (goto_statement "goto LAB_00066741;" goto statement_identifier ;)) (labeled_statement "LAB_000664e0:\n      uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) }))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (expression_statement "bVar9 = *__s;" (assignment_expression "bVar9 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) (expression_statement "iVar7 = local_30.__count;" (assignment_expression "iVar7 = local_30.__count" identifier = (field_expression "local_30.__count" identifier . field_identifier)) ;) (expression_statement "_Var3 = local_30.__value;" (assignment_expression "_Var3 = local_30.__value" identifier = (field_expression "local_30.__value" identifier . field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_34 = uVar10;" (assignment_expression "local_34 = uVar10" identifier = identifier) ;) (if_statement "if (uVar11 == 0x27) {\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }\n  else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }" if (parenthesized_expression "(uVar11 == 0x27)" ( (binary_expression "uVar11 == 0x27" identifier == number_literal) )) (compound_statement "{\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }" { (expression_statement "local_28.__count = 0;" (assignment_expression "local_28.__count = 0" (field_expression "local_28.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_28.__value.__wch = 0;" (assignment_expression "local_28.__value.__wch = 0" (field_expression "local_28.__value.__wch" (field_expression "local_28.__value" identifier . field_identifier) . field_identifier) = number_literal) ;) (while_statement "while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }" { (expression_statement "_Var3 = local_28.__value;" (assignment_expression "_Var3 = local_28.__value" identifier = (field_expression "local_28.__value" identifier . field_identifier)) ;) (expression_statement "iVar7 = local_28.__count;" (assignment_expression "iVar7 = local_28.__count" identifier = (field_expression "local_28.__count" identifier . field_identifier)) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (expression_statement "bVar9 = *__s;" (assignment_expression "bVar9 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) (if_statement "if ((bVar9 == 0) || (bVar9 == 0x27)) break;" if (parenthesized_expression "((bVar9 == 0) || (bVar9 == 0x27))" ( (binary_expression "(bVar9 == 0) || (bVar9 == 0x27)" (parenthesized_expression "(bVar9 == 0)" ( (binary_expression "bVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar9 == 0x27)" ( (binary_expression "bVar9 == 0x27" identifier == number_literal) ))) )) (break_statement "break;" break ;)) (if_statement "if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }" { (labeled_statement "LAB_00066a70:\n        uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) }) (else_clause "else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" else (if_statement "if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" if (parenthesized_expression "(((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[bVar9 >> 5]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "bVar9 >> 5" identifier >> number_literal) ]) >> (parenthesized_expression "(bVar9 & 0x1f)" ( (binary_expression "bVar9 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }" { (if_statement "if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }" if (parenthesized_expression "((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "(sVar4 = 1, (char)bVar9 < '\0')" ( (comma_expression "sVar4 = 1, (char)bVar9 < '\0'" (assignment_expression "sVar4 = 1" identifier = number_literal) , (binary_expression "(char)bVar9 < '\0'" (cast_expression "(char)bVar9" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }" { (expression_statement "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);" (assignment_expression "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "uVar5 - uVar10" identifier - identifier) , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }" if (parenthesized_expression "(sVar4 < 0xfffffffe)" ( (binary_expression "sVar4 < 0xfffffffe" identifier < number_literal) )) (compound_statement "{\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }" { (if_statement "if (sVar4 == 0) goto LAB_00066a70;" if (parenthesized_expression "(sVar4 == 0)" ( (binary_expression "sVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00066a70;" goto statement_identifier ;)) (goto_statement "goto LAB_000669de;" goto statement_identifier ;) })) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_28.__count = iVar7;" (assignment_expression "local_28.__count = iVar7" (field_expression "local_28.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_28.__value = _Var3;" (assignment_expression "local_28.__value = _Var3" (field_expression "local_28.__value" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }" else (compound_statement "{\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }" { (labeled_statement "LAB_000669de:\n          uVar10 = uVar10 + sVar4;" statement_identifier : (expression_statement "uVar10 = uVar10 + sVar4;" (assignment_expression "uVar10 = uVar10 + sVar4" identifier = (binary_expression "uVar10 + sVar4" identifier + identifier)) ;)) }))) }) (else_clause "else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" else (compound_statement "{\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" { (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_28.__count = iVar7;" (assignment_expression "local_28.__count = iVar7" (field_expression "local_28.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_28.__value = _Var3;" (assignment_expression "local_28.__value = _Var3" (field_expression "local_28.__value" identifier . field_identifier) = identifier) ;) }))))) })) (if_statement "if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }" if (parenthesized_expression "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }" { (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) })) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) }) (else_clause "else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }" else (compound_statement "{\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }" { (expression_statement "uVar10 = FUN_00067c30(0);" (assignment_expression "uVar10 = FUN_00067c30(0)" identifier = (call_expression "FUN_00067c30(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) }))) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3\nextract_delimited_string\n          (char *string,int *sindex,char *opener,char *alt_opener,char *closer,int flags)\n\n{\n  int iVar1;\n  bool bVar2;\n  anon_union_4_2_91654ee9_for___value aVar3;\n  size_t sVar4;\n  uint slen;\n  uint uVar5;\n  int iVar6;\n  byte bVar7;\n  byte *__s;\n  uint sind;\n  char *pcVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  size_t local_64;\n  size_t local_50;\n  size_t local_4c;\n  int si;\n  mbstate_t state;\n  mbstate_t state_1;\n  \n  sind = *sindex;\n  __s = (byte *)(string + sind);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  state.__count = 0;\n  state.__value.__wch = 0;\n  sVar4 = strlen((char *)__s);\n  slen = sVar4 + sind;\n  local_64 = 0;\n  if (((*opener != '\0') && (local_64 = 1, opener[1] != '\0')) && (local_64 = 2, opener[2] != '\0'))\n  {\n    local_64 = strlen(opener);\n  }\n  if (*alt_opener == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((alt_opener[1] != '\0') && (local_4c = 2, alt_opener[2] != '\0')) {\n      local_4c = strlen(alt_opener);\n    }\n  }\n  if (*closer == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((closer[1] != '\0') && (local_50 = 2, closer[2] != '\0')) {\n      local_50 = strlen(closer);\n    }\n  }\n  bVar2 = false;\n  bVar10 = false;\nLAB_000663d0:\n  bVar7 = *__s;\n  iVar6 = state.__count;\n  aVar3 = state.__value;\n  do {\n    state.__count = iVar6;\n    state.__value = aVar3;\n    if (slen < sind) {\n      uVar5 = slen;\n      if (string[slen] == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar6 = (slen - *sindex) - local_50;\n      pcVar8 = (char *)0x0;\n      si = iVar6 + 1;\n      if ((flags & 1U) == 0) {\n        pcVar8 = (char *)xmalloc(iVar6 + 2);\n        strncpy(pcVar8,string + *sindex,si);\n        pcVar8[si] = '\0';\n      }\n      *sindex = slen;\n      goto LAB_00066757;\n    }\n    uVar9 = (uint)(char)bVar7;\n    uVar5 = sind;\n    if (uVar9 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value);\n        report_error(pcVar8,closer,string);\n                    /* WARNING: Subroutine does not return */\n        exp_jump_to_top_level(2);\n      }\n      pcVar8 = (char *)0x0;\n      *sindex = uVar5;\nLAB_00066757:\n      if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pcVar8;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    if (bVar10) {\n      bVar10 = uVar9 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        sind = sind + 1;\n        __s = (byte *)(string + sind);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }\n          if (uVar5 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar5 = 1;\n        }\n        sind = sind + uVar5;\n        __s = (byte *)(string + sind);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_00066668;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_000666c5:\n        sind = sind + uVar5;\n      }\n      bVar2 = false;\n      __s = (byte *)(string + sind);\n      goto LAB_000663d0;\n    }\n    if ((flags & 8U) == 0) {\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) {\nLAB_0006660e:\n        sind = sind + 1;\n        bVar10 = false;\n        bVar2 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        si = sind + local_64;\n        extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1);\n        goto LAB_0006672c;\n      }\n      uVar5 = uVar9;\n      if (bVar7 == *opener) {\n        iVar6 = strncmp((char *)__s,opener,local_64);\n        uVar5 = (uint)bVar7;\n        if (iVar6 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar5 == *alt_opener)) {\n        iVar6 = strncmp((char *)__s,alt_opener,local_4c);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) {\n          si = sind + local_4c;\n          extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);\n          uVar5 = slen;\n          if (slen <= (uint)si) goto LAB_00066741;\n          bVar10 = false;\n          sind = si;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        slen = (sind - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar5 == *closer) {\n        iVar6 = strncmp((char *)__s,closer,local_50);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) goto LAB_000668cd;\n      }\n      aVar3 = state.__value;\n      iVar6 = state.__count;\n      if (uVar9 == 0x60) {\n        si = sind + 1;\n        string_extract(string,&si,"`",flags | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar9 == 0x27) || (uVar9 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar7 = (byte)uVar5;\n      if (((uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_000664d4:\n          if (uVar5 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_000664d4;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_00066935:\n        sind = sind + uVar5;\n      }\n    }\n    else {\n      if (uVar9 == 0x23) {\n        if (((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))\n        goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          sind = sind + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }\nLAB_0006680a:\n        bVar10 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) goto LAB_0006660e;\n      if ((bVar7 != 0x24) || (string[sind + 1] != '(')) goto LAB_00066431;\n      si = sind + 2;\n      extract_command_subst(string,&si,flags | 1);\nLAB_0006672c:\n      uVar5 = slen;\n      sind = si;\n      if (slen <= (uint)si) goto LAB_00066741;\nLAB_000664e0:\n      sind = sind + 1;\n    }\n    bVar10 = false;\n    __s = (byte *)(string + sind);\n    bVar7 = *__s;\n    iVar6 = state.__count;\n    aVar3 = state.__value;\n  } while( true );\n  sind = sind + 1;\n  si = sind;\n  if (uVar9 == 0x27) {\n    state_1.__count = 0;\n    state_1.__value.__wch = 0;\n    while( true ) {\n      aVar3 = state_1.__value;\n      iVar6 = state_1.__count;\n      __s = (byte *)(string + sind);\n      bVar7 = *__s;\n      if ((bVar7 == 0) || (bVar7 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }\n        else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }\n      }\n      else {\n        sind = sind + 1;\n        state_1.__count = iVar6;\n        state_1.__value = aVar3;\n      }\n    }\n    if (bVar7 != 0) {\n      sind = sind + 1;\n      __s = (byte *)(string + sind);\n    }\n    bVar10 = false;\n  }\n  else {\n    sind = skip_double_quoted(string,slen,sind,0);\n    bVar10 = false;\n    __s = (byte *)(string + sind);\n  }\n  goto LAB_000663d0;\n}\n\n" comment (function_definition "char * __regparm3\nextract_delimited_string\n          (char *string,int *sindex,char *opener,char *alt_opener,char *closer,int flags)\n\n{\n  int iVar1;\n  bool bVar2;\n  anon_union_4_2_91654ee9_for___value aVar3;\n  size_t sVar4;\n  uint slen;\n  uint uVar5;\n  int iVar6;\n  byte bVar7;\n  byte *__s;\n  uint sind;\n  char *pcVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  size_t local_64;\n  size_t local_50;\n  size_t local_4c;\n  int si;\n  mbstate_t state;\n  mbstate_t state_1;\n  \n  sind = *sindex;\n  __s = (byte *)(string + sind);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  state.__count = 0;\n  state.__value.__wch = 0;\n  sVar4 = strlen((char *)__s);\n  slen = sVar4 + sind;\n  local_64 = 0;\n  if (((*opener != '\0') && (local_64 = 1, opener[1] != '\0')) && (local_64 = 2, opener[2] != '\0'))\n  {\n    local_64 = strlen(opener);\n  }\n  if (*alt_opener == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((alt_opener[1] != '\0') && (local_4c = 2, alt_opener[2] != '\0')) {\n      local_4c = strlen(alt_opener);\n    }\n  }\n  if (*closer == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((closer[1] != '\0') && (local_50 = 2, closer[2] != '\0')) {\n      local_50 = strlen(closer);\n    }\n  }\n  bVar2 = false;\n  bVar10 = false;\nLAB_000663d0:\n  bVar7 = *__s;\n  iVar6 = state.__count;\n  aVar3 = state.__value;\n  do {\n    state.__count = iVar6;\n    state.__value = aVar3;\n    if (slen < sind) {\n      uVar5 = slen;\n      if (string[slen] == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar6 = (slen - *sindex) - local_50;\n      pcVar8 = (char *)0x0;\n      si = iVar6 + 1;\n      if ((flags & 1U) == 0) {\n        pcVar8 = (char *)xmalloc(iVar6 + 2);\n        strncpy(pcVar8,string + *sindex,si);\n        pcVar8[si] = '\0';\n      }\n      *sindex = slen;\n      goto LAB_00066757;\n    }\n    uVar9 = (uint)(char)bVar7;\n    uVar5 = sind;\n    if (uVar9 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value);\n        report_error(pcVar8,closer,string);\n                    /* WARNING: Subroutine does not return */\n        exp_jump_to_top_level(2);\n      }\n      pcVar8 = (char *)0x0;\n      *sindex = uVar5;\nLAB_00066757:\n      if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pcVar8;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    if (bVar10) {\n      bVar10 = uVar9 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        sind = sind + 1;\n        __s = (byte *)(string + sind);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }\n          if (uVar5 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar5 = 1;\n        }\n        sind = sind + uVar5;\n        __s = (byte *)(string + sind);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_00066668;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_000666c5:\n        sind = sind + uVar5;\n      }\n      bVar2 = false;\n      __s = (byte *)(string + sind);\n      goto LAB_000663d0;\n    }\n    if ((flags & 8U) == 0) {\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) {\nLAB_0006660e:\n        sind = sind + 1;\n        bVar10 = false;\n        bVar2 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        si = sind + local_64;\n        extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1);\n        goto LAB_0006672c;\n      }\n      uVar5 = uVar9;\n      if (bVar7 == *opener) {\n        iVar6 = strncmp((char *)__s,opener,local_64);\n        uVar5 = (uint)bVar7;\n        if (iVar6 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar5 == *alt_opener)) {\n        iVar6 = strncmp((char *)__s,alt_opener,local_4c);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) {\n          si = sind + local_4c;\n          extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);\n          uVar5 = slen;\n          if (slen <= (uint)si) goto LAB_00066741;\n          bVar10 = false;\n          sind = si;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        slen = (sind - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar5 == *closer) {\n        iVar6 = strncmp((char *)__s,closer,local_50);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) goto LAB_000668cd;\n      }\n      aVar3 = state.__value;\n      iVar6 = state.__count;\n      if (uVar9 == 0x60) {\n        si = sind + 1;\n        string_extract(string,&si,"`",flags | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar9 == 0x27) || (uVar9 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar7 = (byte)uVar5;\n      if (((uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_000664d4:\n          if (uVar5 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_000664d4;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_00066935:\n        sind = sind + uVar5;\n      }\n    }\n    else {\n      if (uVar9 == 0x23) {\n        if (((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))\n        goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          sind = sind + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }\nLAB_0006680a:\n        bVar10 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) goto LAB_0006660e;\n      if ((bVar7 != 0x24) || (string[sind + 1] != '(')) goto LAB_00066431;\n      si = sind + 2;\n      extract_command_subst(string,&si,flags | 1);\nLAB_0006672c:\n      uVar5 = slen;\n      sind = si;\n      if (slen <= (uint)si) goto LAB_00066741;\nLAB_000664e0:\n      sind = sind + 1;\n    }\n    bVar10 = false;\n    __s = (byte *)(string + sind);\n    bVar7 = *__s;\n    iVar6 = state.__count;\n    aVar3 = state.__value;\n  } while( true );\n  sind = sind + 1;\n  si = sind;\n  if (uVar9 == 0x27) {\n    state_1.__count = 0;\n    state_1.__value.__wch = 0;\n    while( true ) {\n      aVar3 = state_1.__value;\n      iVar6 = state_1.__count;\n      __s = (byte *)(string + sind);\n      bVar7 = *__s;\n      if ((bVar7 == 0) || (bVar7 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }\n        else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }\n      }\n      else {\n        sind = sind + 1;\n        state_1.__count = iVar6;\n        state_1.__value = aVar3;\n      }\n    }\n    if (bVar7 != 0) {\n      sind = sind + 1;\n      __s = (byte *)(string + sind);\n    }\n    bVar10 = false;\n  }\n  else {\n    sind = skip_double_quoted(string,slen,sind,0);\n    bVar10 = false;\n    __s = (byte *)(string + sind);\n  }\n  goto LAB_000663d0;\n}" primitive_type (pointer_declarator "* __regparm3\nextract_delimited_string\n          (char *string,int *sindex,char *opener,char *alt_opener,char *closer,int flags)" * (ERROR "__regparm3" identifier) (function_declarator "extract_delimited_string\n          (char *string,int *sindex,char *opener,char *alt_opener,char *closer,int flags)" identifier (parameter_list "(char *string,int *sindex,char *opener,char *alt_opener,char *closer,int flags)" ( (parameter_declaration "char *string" primitive_type (pointer_declarator "*string" * identifier)) , (parameter_declaration "int *sindex" primitive_type (pointer_declarator "*sindex" * identifier)) , (parameter_declaration "char *opener" primitive_type (pointer_declarator "*opener" * identifier)) , (parameter_declaration "char *alt_opener" primitive_type (pointer_declarator "*alt_opener" * identifier)) , (parameter_declaration "char *closer" primitive_type (pointer_declarator "*closer" * identifier)) , (parameter_declaration "int flags" primitive_type identifier) )))) (compound_statement "{\n  int iVar1;\n  bool bVar2;\n  anon_union_4_2_91654ee9_for___value aVar3;\n  size_t sVar4;\n  uint slen;\n  uint uVar5;\n  int iVar6;\n  byte bVar7;\n  byte *__s;\n  uint sind;\n  char *pcVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  size_t local_64;\n  size_t local_50;\n  size_t local_4c;\n  int si;\n  mbstate_t state;\n  mbstate_t state_1;\n  \n  sind = *sindex;\n  __s = (byte *)(string + sind);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  state.__count = 0;\n  state.__value.__wch = 0;\n  sVar4 = strlen((char *)__s);\n  slen = sVar4 + sind;\n  local_64 = 0;\n  if (((*opener != '\0') && (local_64 = 1, opener[1] != '\0')) && (local_64 = 2, opener[2] != '\0'))\n  {\n    local_64 = strlen(opener);\n  }\n  if (*alt_opener == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((alt_opener[1] != '\0') && (local_4c = 2, alt_opener[2] != '\0')) {\n      local_4c = strlen(alt_opener);\n    }\n  }\n  if (*closer == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((closer[1] != '\0') && (local_50 = 2, closer[2] != '\0')) {\n      local_50 = strlen(closer);\n    }\n  }\n  bVar2 = false;\n  bVar10 = false;\nLAB_000663d0:\n  bVar7 = *__s;\n  iVar6 = state.__count;\n  aVar3 = state.__value;\n  do {\n    state.__count = iVar6;\n    state.__value = aVar3;\n    if (slen < sind) {\n      uVar5 = slen;\n      if (string[slen] == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar6 = (slen - *sindex) - local_50;\n      pcVar8 = (char *)0x0;\n      si = iVar6 + 1;\n      if ((flags & 1U) == 0) {\n        pcVar8 = (char *)xmalloc(iVar6 + 2);\n        strncpy(pcVar8,string + *sindex,si);\n        pcVar8[si] = '\0';\n      }\n      *sindex = slen;\n      goto LAB_00066757;\n    }\n    uVar9 = (uint)(char)bVar7;\n    uVar5 = sind;\n    if (uVar9 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value);\n        report_error(pcVar8,closer,string);\n                    /* WARNING: Subroutine does not return */\n        exp_jump_to_top_level(2);\n      }\n      pcVar8 = (char *)0x0;\n      *sindex = uVar5;\nLAB_00066757:\n      if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pcVar8;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    if (bVar10) {\n      bVar10 = uVar9 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        sind = sind + 1;\n        __s = (byte *)(string + sind);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }\n          if (uVar5 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar5 = 1;\n        }\n        sind = sind + uVar5;\n        __s = (byte *)(string + sind);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_00066668;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_000666c5:\n        sind = sind + uVar5;\n      }\n      bVar2 = false;\n      __s = (byte *)(string + sind);\n      goto LAB_000663d0;\n    }\n    if ((flags & 8U) == 0) {\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) {\nLAB_0006660e:\n        sind = sind + 1;\n        bVar10 = false;\n        bVar2 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        si = sind + local_64;\n        extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1);\n        goto LAB_0006672c;\n      }\n      uVar5 = uVar9;\n      if (bVar7 == *opener) {\n        iVar6 = strncmp((char *)__s,opener,local_64);\n        uVar5 = (uint)bVar7;\n        if (iVar6 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar5 == *alt_opener)) {\n        iVar6 = strncmp((char *)__s,alt_opener,local_4c);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) {\n          si = sind + local_4c;\n          extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);\n          uVar5 = slen;\n          if (slen <= (uint)si) goto LAB_00066741;\n          bVar10 = false;\n          sind = si;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        slen = (sind - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar5 == *closer) {\n        iVar6 = strncmp((char *)__s,closer,local_50);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) goto LAB_000668cd;\n      }\n      aVar3 = state.__value;\n      iVar6 = state.__count;\n      if (uVar9 == 0x60) {\n        si = sind + 1;\n        string_extract(string,&si,"`",flags | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar9 == 0x27) || (uVar9 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar7 = (byte)uVar5;\n      if (((uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_000664d4:\n          if (uVar5 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_000664d4;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_00066935:\n        sind = sind + uVar5;\n      }\n    }\n    else {\n      if (uVar9 == 0x23) {\n        if (((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))\n        goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          sind = sind + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }\nLAB_0006680a:\n        bVar10 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) goto LAB_0006660e;\n      if ((bVar7 != 0x24) || (string[sind + 1] != '(')) goto LAB_00066431;\n      si = sind + 2;\n      extract_command_subst(string,&si,flags | 1);\nLAB_0006672c:\n      uVar5 = slen;\n      sind = si;\n      if (slen <= (uint)si) goto LAB_00066741;\nLAB_000664e0:\n      sind = sind + 1;\n    }\n    bVar10 = false;\n    __s = (byte *)(string + sind);\n    bVar7 = *__s;\n    iVar6 = state.__count;\n    aVar3 = state.__value;\n  } while( true );\n  sind = sind + 1;\n  si = sind;\n  if (uVar9 == 0x27) {\n    state_1.__count = 0;\n    state_1.__value.__wch = 0;\n    while( true ) {\n      aVar3 = state_1.__value;\n      iVar6 = state_1.__count;\n      __s = (byte *)(string + sind);\n      bVar7 = *__s;\n      if ((bVar7 == 0) || (bVar7 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }\n        else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }\n      }\n      else {\n        sind = sind + 1;\n        state_1.__count = iVar6;\n        state_1.__value = aVar3;\n      }\n    }\n    if (bVar7 != 0) {\n      sind = sind + 1;\n      __s = (byte *)(string + sind);\n    }\n    bVar10 = false;\n  }\n  else {\n    sind = skip_double_quoted(string,slen,sind,0);\n    bVar10 = false;\n    __s = (byte *)(string + sind);\n  }\n  goto LAB_000663d0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "anon_union_4_2_91654ee9_for___value aVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "uint slen;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "byte *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "uint sind;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "size_t local_64;" primitive_type identifier ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "size_t local_4c;" primitive_type identifier ;) (declaration "int si;" primitive_type identifier ;) (declaration "mbstate_t state;" type_identifier identifier ;) (declaration "mbstate_t state_1;" type_identifier identifier ;) (expression_statement "sind = *sindex;" (assignment_expression "sind = *sindex" identifier = (pointer_expression "*sindex" * identifier)) ;) (expression_statement "__s = (byte *)(string + sind);" (assignment_expression "__s = (byte *)(string + sind)" identifier = (cast_expression "(byte *)(string + sind)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(string + sind)" ( (binary_expression "string + sind" identifier + identifier) )))) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "state.__count = 0;" (assignment_expression "state.__count = 0" (field_expression "state.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "state.__value.__wch = 0;" (assignment_expression "state.__value.__wch = 0" (field_expression "state.__value.__wch" (field_expression "state.__value" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "sVar4 = strlen((char *)__s);" (assignment_expression "sVar4 = strlen((char *)__s)" identifier = (call_expression "strlen((char *)__s)" identifier (argument_list "((char *)__s)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "slen = sVar4 + sind;" (assignment_expression "slen = sVar4 + sind" identifier = (binary_expression "sVar4 + sind" identifier + identifier)) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (if_statement "if (((*opener != '\0') && (local_64 = 1, opener[1] != '\0')) && (local_64 = 2, opener[2] != '\0'))\n  {\n    local_64 = strlen(opener);\n  }" if (parenthesized_expression "(((*opener != '\0') && (local_64 = 1, opener[1] != '\0')) && (local_64 = 2, opener[2] != '\0'))" ( (binary_expression "((*opener != '\0') && (local_64 = 1, opener[1] != '\0')) && (local_64 = 2, opener[2] != '\0')" (parenthesized_expression "((*opener != '\0') && (local_64 = 1, opener[1] != '\0'))" ( (binary_expression "(*opener != '\0') && (local_64 = 1, opener[1] != '\0')" (parenthesized_expression "(*opener != '\0')" ( (binary_expression "*opener != '\0'" (pointer_expression "*opener" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_64 = 1, opener[1] != '\0')" ( (comma_expression "local_64 = 1, opener[1] != '\0'" (assignment_expression "local_64 = 1" identifier = number_literal) , (binary_expression "opener[1] != '\0'" (subscript_expression "opener[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) && (parenthesized_expression "(local_64 = 2, opener[2] != '\0')" ( (comma_expression "local_64 = 2, opener[2] != '\0'" (assignment_expression "local_64 = 2" identifier = number_literal) , (binary_expression "opener[2] != '\0'" (subscript_expression "opener[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n    local_64 = strlen(opener);\n  }" { (expression_statement "local_64 = strlen(opener);" (assignment_expression "local_64 = strlen(opener)" identifier = (call_expression "strlen(opener)" identifier (argument_list "(opener)" ( identifier )))) ;) })) (if_statement "if (*alt_opener == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((alt_opener[1] != '\0') && (local_4c = 2, alt_opener[2] != '\0')) {\n      local_4c = strlen(alt_opener);\n    }\n  }" if (parenthesized_expression "(*alt_opener == '\0')" ( (binary_expression "*alt_opener == '\0'" (pointer_expression "*alt_opener" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_4c = 0;\n  }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_4c = 1;\n    if ((alt_opener[1] != '\0') && (local_4c = 2, alt_opener[2] != '\0')) {\n      local_4c = strlen(alt_opener);\n    }\n  }" else (compound_statement "{\n    local_4c = 1;\n    if ((alt_opener[1] != '\0') && (local_4c = 2, alt_opener[2] != '\0')) {\n      local_4c = strlen(alt_opener);\n    }\n  }" { (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) (if_statement "if ((alt_opener[1] != '\0') && (local_4c = 2, alt_opener[2] != '\0')) {\n      local_4c = strlen(alt_opener);\n    }" if (parenthesized_expression "((alt_opener[1] != '\0') && (local_4c = 2, alt_opener[2] != '\0'))" ( (binary_expression "(alt_opener[1] != '\0') && (local_4c = 2, alt_opener[2] != '\0')" (parenthesized_expression "(alt_opener[1] != '\0')" ( (binary_expression "alt_opener[1] != '\0'" (subscript_expression "alt_opener[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_4c = 2, alt_opener[2] != '\0')" ( (comma_expression "local_4c = 2, alt_opener[2] != '\0'" (assignment_expression "local_4c = 2" identifier = number_literal) , (binary_expression "alt_opener[2] != '\0'" (subscript_expression "alt_opener[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      local_4c = strlen(alt_opener);\n    }" { (expression_statement "local_4c = strlen(alt_opener);" (assignment_expression "local_4c = strlen(alt_opener)" identifier = (call_expression "strlen(alt_opener)" identifier (argument_list "(alt_opener)" ( identifier )))) ;) })) }))) (if_statement "if (*closer == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((closer[1] != '\0') && (local_50 = 2, closer[2] != '\0')) {\n      local_50 = strlen(closer);\n    }\n  }" if (parenthesized_expression "(*closer == '\0')" ( (binary_expression "*closer == '\0'" (pointer_expression "*closer" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_50 = 0;\n  }" { (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_50 = 1;\n    if ((closer[1] != '\0') && (local_50 = 2, closer[2] != '\0')) {\n      local_50 = strlen(closer);\n    }\n  }" else (compound_statement "{\n    local_50 = 1;\n    if ((closer[1] != '\0') && (local_50 = 2, closer[2] != '\0')) {\n      local_50 = strlen(closer);\n    }\n  }" { (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (if_statement "if ((closer[1] != '\0') && (local_50 = 2, closer[2] != '\0')) {\n      local_50 = strlen(closer);\n    }" if (parenthesized_expression "((closer[1] != '\0') && (local_50 = 2, closer[2] != '\0'))" ( (binary_expression "(closer[1] != '\0') && (local_50 = 2, closer[2] != '\0')" (parenthesized_expression "(closer[1] != '\0')" ( (binary_expression "closer[1] != '\0'" (subscript_expression "closer[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_50 = 2, closer[2] != '\0')" ( (comma_expression "local_50 = 2, closer[2] != '\0'" (assignment_expression "local_50 = 2" identifier = number_literal) , (binary_expression "closer[2] != '\0'" (subscript_expression "closer[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      local_50 = strlen(closer);\n    }" { (expression_statement "local_50 = strlen(closer);" (assignment_expression "local_50 = strlen(closer)" identifier = (call_expression "strlen(closer)" identifier (argument_list "(closer)" ( identifier )))) ;) })) }))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (labeled_statement "LAB_000663d0:\n  bVar7 = *__s;" statement_identifier : (expression_statement "bVar7 = *__s;" (assignment_expression "bVar7 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;)) (expression_statement "iVar6 = state.__count;" (assignment_expression "iVar6 = state.__count" identifier = (field_expression "state.__count" identifier . field_identifier)) ;) (expression_statement "aVar3 = state.__value;" (assignment_expression "aVar3 = state.__value" identifier = (field_expression "state.__value" identifier . field_identifier)) ;) (do_statement "do {\n    state.__count = iVar6;\n    state.__value = aVar3;\n    if (slen < sind) {\n      uVar5 = slen;\n      if (string[slen] == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar6 = (slen - *sindex) - local_50;\n      pcVar8 = (char *)0x0;\n      si = iVar6 + 1;\n      if ((flags & 1U) == 0) {\n        pcVar8 = (char *)xmalloc(iVar6 + 2);\n        strncpy(pcVar8,string + *sindex,si);\n        pcVar8[si] = '\0';\n      }\n      *sindex = slen;\n      goto LAB_00066757;\n    }\n    uVar9 = (uint)(char)bVar7;\n    uVar5 = sind;\n    if (uVar9 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value);\n        report_error(pcVar8,closer,string);\n                    /* WARNING: Subroutine does not return */\n        exp_jump_to_top_level(2);\n      }\n      pcVar8 = (char *)0x0;\n      *sindex = uVar5;\nLAB_00066757:\n      if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pcVar8;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    if (bVar10) {\n      bVar10 = uVar9 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        sind = sind + 1;\n        __s = (byte *)(string + sind);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }\n          if (uVar5 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar5 = 1;\n        }\n        sind = sind + uVar5;\n        __s = (byte *)(string + sind);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_00066668;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_000666c5:\n        sind = sind + uVar5;\n      }\n      bVar2 = false;\n      __s = (byte *)(string + sind);\n      goto LAB_000663d0;\n    }\n    if ((flags & 8U) == 0) {\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) {\nLAB_0006660e:\n        sind = sind + 1;\n        bVar10 = false;\n        bVar2 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        si = sind + local_64;\n        extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1);\n        goto LAB_0006672c;\n      }\n      uVar5 = uVar9;\n      if (bVar7 == *opener) {\n        iVar6 = strncmp((char *)__s,opener,local_64);\n        uVar5 = (uint)bVar7;\n        if (iVar6 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar5 == *alt_opener)) {\n        iVar6 = strncmp((char *)__s,alt_opener,local_4c);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) {\n          si = sind + local_4c;\n          extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);\n          uVar5 = slen;\n          if (slen <= (uint)si) goto LAB_00066741;\n          bVar10 = false;\n          sind = si;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        slen = (sind - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar5 == *closer) {\n        iVar6 = strncmp((char *)__s,closer,local_50);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) goto LAB_000668cd;\n      }\n      aVar3 = state.__value;\n      iVar6 = state.__count;\n      if (uVar9 == 0x60) {\n        si = sind + 1;\n        string_extract(string,&si,"`",flags | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar9 == 0x27) || (uVar9 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar7 = (byte)uVar5;\n      if (((uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_000664d4:\n          if (uVar5 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_000664d4;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_00066935:\n        sind = sind + uVar5;\n      }\n    }\n    else {\n      if (uVar9 == 0x23) {\n        if (((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))\n        goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          sind = sind + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }\nLAB_0006680a:\n        bVar10 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) goto LAB_0006660e;\n      if ((bVar7 != 0x24) || (string[sind + 1] != '(')) goto LAB_00066431;\n      si = sind + 2;\n      extract_command_subst(string,&si,flags | 1);\nLAB_0006672c:\n      uVar5 = slen;\n      sind = si;\n      if (slen <= (uint)si) goto LAB_00066741;\nLAB_000664e0:\n      sind = sind + 1;\n    }\n    bVar10 = false;\n    __s = (byte *)(string + sind);\n    bVar7 = *__s;\n    iVar6 = state.__count;\n    aVar3 = state.__value;\n  } while( true );" do (compound_statement "{\n    state.__count = iVar6;\n    state.__value = aVar3;\n    if (slen < sind) {\n      uVar5 = slen;\n      if (string[slen] == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar6 = (slen - *sindex) - local_50;\n      pcVar8 = (char *)0x0;\n      si = iVar6 + 1;\n      if ((flags & 1U) == 0) {\n        pcVar8 = (char *)xmalloc(iVar6 + 2);\n        strncpy(pcVar8,string + *sindex,si);\n        pcVar8[si] = '\0';\n      }\n      *sindex = slen;\n      goto LAB_00066757;\n    }\n    uVar9 = (uint)(char)bVar7;\n    uVar5 = sind;\n    if (uVar9 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value);\n        report_error(pcVar8,closer,string);\n                    /* WARNING: Subroutine does not return */\n        exp_jump_to_top_level(2);\n      }\n      pcVar8 = (char *)0x0;\n      *sindex = uVar5;\nLAB_00066757:\n      if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pcVar8;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    if (bVar10) {\n      bVar10 = uVar9 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        sind = sind + 1;\n        __s = (byte *)(string + sind);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }\n          if (uVar5 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar5 = 1;\n        }\n        sind = sind + uVar5;\n        __s = (byte *)(string + sind);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_00066668;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_000666c5:\n        sind = sind + uVar5;\n      }\n      bVar2 = false;\n      __s = (byte *)(string + sind);\n      goto LAB_000663d0;\n    }\n    if ((flags & 8U) == 0) {\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) {\nLAB_0006660e:\n        sind = sind + 1;\n        bVar10 = false;\n        bVar2 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        si = sind + local_64;\n        extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1);\n        goto LAB_0006672c;\n      }\n      uVar5 = uVar9;\n      if (bVar7 == *opener) {\n        iVar6 = strncmp((char *)__s,opener,local_64);\n        uVar5 = (uint)bVar7;\n        if (iVar6 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar5 == *alt_opener)) {\n        iVar6 = strncmp((char *)__s,alt_opener,local_4c);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) {\n          si = sind + local_4c;\n          extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);\n          uVar5 = slen;\n          if (slen <= (uint)si) goto LAB_00066741;\n          bVar10 = false;\n          sind = si;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        slen = (sind - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar5 == *closer) {\n        iVar6 = strncmp((char *)__s,closer,local_50);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) goto LAB_000668cd;\n      }\n      aVar3 = state.__value;\n      iVar6 = state.__count;\n      if (uVar9 == 0x60) {\n        si = sind + 1;\n        string_extract(string,&si,"`",flags | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar9 == 0x27) || (uVar9 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar7 = (byte)uVar5;\n      if (((uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_000664d4:\n          if (uVar5 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_000664d4;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_00066935:\n        sind = sind + uVar5;\n      }\n    }\n    else {\n      if (uVar9 == 0x23) {\n        if (((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))\n        goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          sind = sind + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }\nLAB_0006680a:\n        bVar10 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) goto LAB_0006660e;\n      if ((bVar7 != 0x24) || (string[sind + 1] != '(')) goto LAB_00066431;\n      si = sind + 2;\n      extract_command_subst(string,&si,flags | 1);\nLAB_0006672c:\n      uVar5 = slen;\n      sind = si;\n      if (slen <= (uint)si) goto LAB_00066741;\nLAB_000664e0:\n      sind = sind + 1;\n    }\n    bVar10 = false;\n    __s = (byte *)(string + sind);\n    bVar7 = *__s;\n    iVar6 = state.__count;\n    aVar3 = state.__value;\n  }" { (expression_statement "state.__count = iVar6;" (assignment_expression "state.__count = iVar6" (field_expression "state.__count" identifier . field_identifier) = identifier) ;) (expression_statement "state.__value = aVar3;" (assignment_expression "state.__value = aVar3" (field_expression "state.__value" identifier . field_identifier) = identifier) ;) (if_statement "if (slen < sind) {\n      uVar5 = slen;\n      if (string[slen] == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar6 = (slen - *sindex) - local_50;\n      pcVar8 = (char *)0x0;\n      si = iVar6 + 1;\n      if ((flags & 1U) == 0) {\n        pcVar8 = (char *)xmalloc(iVar6 + 2);\n        strncpy(pcVar8,string + *sindex,si);\n        pcVar8[si] = '\0';\n      }\n      *sindex = slen;\n      goto LAB_00066757;\n    }" if (parenthesized_expression "(slen < sind)" ( (binary_expression "slen < sind" identifier < identifier) )) (compound_statement "{\n      uVar5 = slen;\n      if (string[slen] == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar6 = (slen - *sindex) - local_50;\n      pcVar8 = (char *)0x0;\n      si = iVar6 + 1;\n      if ((flags & 1U) == 0) {\n        pcVar8 = (char *)xmalloc(iVar6 + 2);\n        strncpy(pcVar8,string + *sindex,si);\n        pcVar8[si] = '\0';\n      }\n      *sindex = slen;\n      goto LAB_00066757;\n    }" { (expression_statement "uVar5 = slen;" (assignment_expression "uVar5 = slen" identifier = identifier) ;) (if_statement "if (string[slen] == '\0') goto LAB_00066741;" if (parenthesized_expression "(string[slen] == '\0')" ( (binary_expression "string[slen] == '\0'" (subscript_expression "string[slen]" identifier [ identifier ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00066741;" goto statement_identifier ;)) (labeled_statement "LAB_0006651a:\n      iVar6 = (slen - *sindex) - local_50;" statement_identifier : (expression_statement "iVar6 = (slen - *sindex) - local_50;" (assignment_expression "iVar6 = (slen - *sindex) - local_50" identifier = (binary_expression "(slen - *sindex) - local_50" (parenthesized_expression "(slen - *sindex)" ( (binary_expression "slen - *sindex" identifier - (pointer_expression "*sindex" * identifier)) )) - identifier)) ;)) (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "si = iVar6 + 1;" (assignment_expression "si = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if ((flags & 1U) == 0) {\n        pcVar8 = (char *)xmalloc(iVar6 + 2);\n        strncpy(pcVar8,string + *sindex,si);\n        pcVar8[si] = '\0';\n      }" if (parenthesized_expression "((flags & 1U) == 0)" ( (binary_expression "(flags & 1U) == 0" (parenthesized_expression "(flags & 1U)" ( (binary_expression "flags & 1U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pcVar8 = (char *)xmalloc(iVar6 + 2);\n        strncpy(pcVar8,string + *sindex,si);\n        pcVar8[si] = '\0';\n      }" { (expression_statement "pcVar8 = (char *)xmalloc(iVar6 + 2);" (assignment_expression "pcVar8 = (char *)xmalloc(iVar6 + 2)" identifier = (cast_expression "(char *)xmalloc(iVar6 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar6 + 2)" identifier (argument_list "(iVar6 + 2)" ( (binary_expression "iVar6 + 2" identifier + number_literal) ))))) ;) (expression_statement "strncpy(pcVar8,string + *sindex,si);" (call_expression "strncpy(pcVar8,string + *sindex,si)" identifier (argument_list "(pcVar8,string + *sindex,si)" ( identifier , (binary_expression "string + *sindex" identifier + (pointer_expression "*sindex" * identifier)) , identifier ))) ;) (expression_statement "pcVar8[si] = '\0';" (assignment_expression "pcVar8[si] = '\0'" (subscript_expression "pcVar8[si]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "*sindex = slen;" (assignment_expression "*sindex = slen" (pointer_expression "*sindex" * identifier) = identifier) ;) (goto_statement "goto LAB_00066757;" goto statement_identifier ;) })) (expression_statement "uVar9 = (uint)(char)bVar7;" (assignment_expression "uVar9 = (uint)(char)bVar7" identifier = (cast_expression "(uint)(char)bVar7" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "uVar5 = sind;" (assignment_expression "uVar5 = sind" identifier = identifier) ;) (if_statement "if (uVar9 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value);\n        report_error(pcVar8,closer,string);\n                    /* WARNING: Subroutine does not return */\n        exp_jump_to_top_level(2);\n      }\n      pcVar8 = (char *)0x0;\n      *sindex = uVar5;\nLAB_00066757:\n      if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pcVar8;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value);\n        report_error(pcVar8,closer,string);\n                    /* WARNING: Subroutine does not return */\n        exp_jump_to_top_level(2);\n      }\n      pcVar8 = (char *)0x0;\n      *sindex = uVar5;\nLAB_00066757:\n      if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pcVar8;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }" { (labeled_statement "LAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value);\n        report_error(pcVar8,closer,string);\n                    /* WARNING: Subroutine does not return */\n        exp_jump_to_top_level(2);\n      }" statement_identifier : (if_statement "if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value);\n        report_error(pcVar8,closer,string);\n                    /* WARNING: Subroutine does not return */\n        exp_jump_to_top_level(2);\n      }" if (parenthesized_expression "(no_longjmp_on_fatal_error == 0)" ( (binary_expression "no_longjmp_on_fatal_error == 0" identifier == number_literal) )) (compound_statement "{\n        last_command_exit_value = 1;\n        pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value);\n        report_error(pcVar8,closer,string);\n                    /* WARNING: Subroutine does not return */\n        exp_jump_to_top_level(2);\n      }" { (expression_statement "last_command_exit_value = 1;" (assignment_expression "last_command_exit_value = 1" identifier = number_literal) ;) (expression_statement "pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value);" (assignment_expression "pcVar8 = (char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value)" identifier = (cast_expression "(char *)dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value)" identifier (argument_list "(0,"bad substitution: no closing `%s\' in %s",5,\n                                   &last_command_exit_value)" ( number_literal , (string_literal ""bad substitution: no closing `%s\' in %s"" " string_content escape_sequence string_content ") , number_literal , (pointer_expression "&last_command_exit_value" & identifier) ))))) ;) (expression_statement "report_error(pcVar8,closer,string);" (call_expression "report_error(pcVar8,closer,string)" identifier (argument_list "(pcVar8,closer,string)" ( identifier , identifier , identifier ))) ;) comment (expression_statement "exp_jump_to_top_level(2);" (call_expression "exp_jump_to_top_level(2)" identifier (argument_list "(2)" ( number_literal ))) ;) }))) (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*sindex = uVar5;" (assignment_expression "*sindex = uVar5" (pointer_expression "*sindex" * identifier) = identifier) ;) (labeled_statement "LAB_00066757:\n      if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pcVar8;\n      }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return pcVar8;\n      }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n        return pcVar8;\n      }" { (return_statement "return pcVar8;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (bVar10) {\n      bVar10 = uVar9 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        sind = sind + 1;\n        __s = (byte *)(string + sind);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }\n          if (uVar5 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar5 = 1;\n        }\n        sind = sind + uVar5;\n        __s = (byte *)(string + sind);\n      }\n      goto LAB_000663d0;\n    }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n      bVar10 = uVar9 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        sind = sind + 1;\n        __s = (byte *)(string + sind);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }\n          if (uVar5 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar5 = 1;\n        }\n        sind = sind + uVar5;\n        __s = (byte *)(string + sind);\n      }\n      goto LAB_000663d0;\n    }" { (expression_statement "bVar10 = uVar9 != 10;" (assignment_expression "bVar10 = uVar9 != 10" identifier = (binary_expression "uVar9 != 10" identifier != number_literal)) ;) (if_statement "if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        sind = sind + 1;\n        __s = (byte *)(string + sind);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }\n          if (uVar5 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar5 = 1;\n        }\n        sind = sind + uVar5;\n        __s = (byte *)(string + sind);\n      }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\nLAB_000665f0:\n        sind = sind + 1;\n        __s = (byte *)(string + sind);\n      }" { (labeled_statement "LAB_000665f0:\n        sind = sind + 1;" statement_identifier : (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;)) (expression_statement "__s = (byte *)(string + sind);" (assignment_expression "__s = (byte *)(string + sind)" identifier = (cast_expression "(byte *)(string + sind)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(string + sind)" ( (binary_expression "string + sind" identifier + identifier) )))) ;) }) (else_clause "else {\n        if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }\n          if (uVar5 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar5 = 1;\n        }\n        sind = sind + uVar5;\n        __s = (byte *)(string + sind);\n      }" else (compound_statement "{\n        if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }\n          if (uVar5 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar5 = 1;\n        }\n        sind = sind + uVar5;\n        __s = (byte *)(string + sind);\n      }" { (if_statement "if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }\n          if (uVar5 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar5 = 1;\n        }" if (parenthesized_expression "(((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[uVar9 >> 5 & 7]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "uVar9 >> 5 & 7" (binary_expression "uVar9 >> 5" identifier >> number_literal) & number_literal) ]) >> (parenthesized_expression "(bVar7 & 0x1f)" ( (binary_expression "bVar7 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }\n          if (uVar5 == 0) goto LAB_000665f0;\n        }" { (if_statement "if ((locale_utf8locale == 0) || ((char)bVar7 < '\0')) {\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar5 = (uint)(bVar7 != 0);\n          }" if (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar7 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || ((char)bVar7 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "((char)bVar7 < '\0')" ( (binary_expression "(char)bVar7 < '\0'" (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }\n          }" { (expression_statement "uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);" (assignment_expression "uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "slen - sind" identifier - identifier) , (cast_expression "(mbstate_t *)&state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&state" & identifier)) )))) ;) (if_statement "if (0xfffffffd < uVar5) {\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }" if (parenthesized_expression "(0xfffffffd < uVar5)" ( (binary_expression "0xfffffffd < uVar5" number_literal < identifier) )) (compound_statement "{\n              sind = sind + 1;\n              __s = (byte *)(string + sind);\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_000663d0;\n            }" { (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;) (expression_statement "__s = (byte *)(string + sind);" (assignment_expression "__s = (byte *)(string + sind)" identifier = (cast_expression "(byte *)(string + sind)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(string + sind)" ( (binary_expression "string + sind" identifier + identifier) )))) ;) (expression_statement "state.__count = iVar6;" (assignment_expression "state.__count = iVar6" (field_expression "state.__count" identifier . field_identifier) = identifier) ;) (expression_statement "state.__value = aVar3;" (assignment_expression "state.__value = aVar3" (field_expression "state.__value" identifier . field_identifier) = identifier) ;) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) }) (else_clause "else {\n            uVar5 = (uint)(bVar7 != 0);\n          }" else (compound_statement "{\n            uVar5 = (uint)(bVar7 != 0);\n          }" { (expression_statement "uVar5 = (uint)(bVar7 != 0);" (assignment_expression "uVar5 = (uint)(bVar7 != 0)" identifier = (call_expression "(uint)(bVar7 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )))) ;) }))) (if_statement "if (uVar5 == 0) goto LAB_000665f0;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000665f0;" goto statement_identifier ;)) }) (else_clause "else {\n          uVar5 = 1;\n        }" else (compound_statement "{\n          uVar5 = 1;\n        }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) }))) (expression_statement "sind = sind + uVar5;" (assignment_expression "sind = sind + uVar5" identifier = (binary_expression "sind + uVar5" identifier + identifier)) ;) (expression_statement "__s = (byte *)(string + sind);" (assignment_expression "__s = (byte *)(string + sind)" identifier = (cast_expression "(byte *)(string + sind)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(string + sind)" ( (binary_expression "string + sind" identifier + identifier) )))) ;) }))) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) (if_statement "if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_00066668;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_000666c5:\n        sind = sind + uVar5;\n      }\n      bVar2 = false;\n      __s = (byte *)(string + sind);\n      goto LAB_000663d0;\n    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_00066668;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_000666c5:\n        sind = sind + uVar5;\n      }\n      bVar2 = false;\n      __s = (byte *)(string + sind);\n      goto LAB_000663d0;\n    }" { (if_statement "if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_00066668;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_000666c5:\n        sind = sind + uVar5;\n      }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0006666c:\n        sind = sind + 1;\n      }" { (labeled_statement "LAB_0006666c:\n        sind = sind + 1;" statement_identifier : (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;)) }) (else_clause "else if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_00066668;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_000666c5:\n        sind = sind + uVar5;\n      }" else (if_statement "if (((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_00066668;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_000666c5:\n        sind = sind + uVar5;\n      }" if (parenthesized_expression "(((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[uVar9 >> 5 & 7] >> (bVar7 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[uVar9 >> 5 & 7]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "uVar9 >> 5 & 7" (binary_expression "uVar9 >> 5" identifier >> number_literal) & number_literal) ]) >> (parenthesized_expression "(bVar7 & 0x1f)" ( (binary_expression "bVar7 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_00066668;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }" { (if_statement "if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }" if (parenthesized_expression "((locale_utf8locale != 0) && (-1 < (char)bVar7))" ( (binary_expression "(locale_utf8locale != 0) && (-1 < (char)bVar7)" (parenthesized_expression "(locale_utf8locale != 0)" ( (binary_expression "locale_utf8locale != 0" identifier != number_literal) )) && (parenthesized_expression "(-1 < (char)bVar7)" ( (binary_expression "-1 < (char)bVar7" number_literal < (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          uVar5 = (uint)(bVar7 != 0);\nLAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }" { (expression_statement "uVar5 = (uint)(bVar7 != 0);" (assignment_expression "uVar5 = (uint)(bVar7 != 0)" identifier = (call_expression "(uint)(bVar7 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )))) ;) (labeled_statement "LAB_00066668:\n          if (uVar5 == 0) goto LAB_0006666c;" statement_identifier : (if_statement "if (uVar5 == 0) goto LAB_0006666c;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0006666c;" goto statement_identifier ;))) (goto_statement "goto LAB_000666c5;" goto statement_identifier ;) })) (expression_statement "uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);" (assignment_expression "uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "slen - sind" identifier - identifier) , (cast_expression "(mbstate_t *)&state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&state" & identifier)) )))) ;) (if_statement "if (uVar5 < 0xfffffffe) goto LAB_00066668;" if (parenthesized_expression "(uVar5 < 0xfffffffe)" ( (binary_expression "uVar5 < 0xfffffffe" identifier < number_literal) )) (goto_statement "goto LAB_00066668;" goto statement_identifier ;)) (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;) (expression_statement "state.__count = iVar6;" (assignment_expression "state.__count = iVar6" (field_expression "state.__count" identifier . field_identifier) = identifier) ;) (expression_statement "state.__value = aVar3;" (assignment_expression "state.__value = aVar3" (field_expression "state.__value" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\n        uVar5 = 1;\nLAB_000666c5:\n        sind = sind + uVar5;\n      }" else (compound_statement "{\n        uVar5 = 1;\nLAB_000666c5:\n        sind = sind + uVar5;\n      }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000666c5:\n        sind = sind + uVar5;" statement_identifier : (expression_statement "sind = sind + uVar5;" (assignment_expression "sind = sind + uVar5" identifier = (binary_expression "sind + uVar5" identifier + identifier)) ;)) }))))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "__s = (byte *)(string + sind);" (assignment_expression "__s = (byte *)(string + sind)" identifier = (cast_expression "(byte *)(string + sind)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(string + sind)" ( (binary_expression "string + sind" identifier + identifier) )))) ;) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) (if_statement "if ((flags & 8U) == 0) {\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) {\nLAB_0006660e:\n        sind = sind + 1;\n        bVar10 = false;\n        bVar2 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        si = sind + local_64;\n        extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1);\n        goto LAB_0006672c;\n      }\n      uVar5 = uVar9;\n      if (bVar7 == *opener) {\n        iVar6 = strncmp((char *)__s,opener,local_64);\n        uVar5 = (uint)bVar7;\n        if (iVar6 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar5 == *alt_opener)) {\n        iVar6 = strncmp((char *)__s,alt_opener,local_4c);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) {\n          si = sind + local_4c;\n          extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);\n          uVar5 = slen;\n          if (slen <= (uint)si) goto LAB_00066741;\n          bVar10 = false;\n          sind = si;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        slen = (sind - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar5 == *closer) {\n        iVar6 = strncmp((char *)__s,closer,local_50);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) goto LAB_000668cd;\n      }\n      aVar3 = state.__value;\n      iVar6 = state.__count;\n      if (uVar9 == 0x60) {\n        si = sind + 1;\n        string_extract(string,&si,"`",flags | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar9 == 0x27) || (uVar9 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar7 = (byte)uVar5;\n      if (((uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_000664d4:\n          if (uVar5 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_000664d4;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_00066935:\n        sind = sind + uVar5;\n      }\n    }\n    else {\n      if (uVar9 == 0x23) {\n        if (((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))\n        goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          sind = sind + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }\nLAB_0006680a:\n        bVar10 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) goto LAB_0006660e;\n      if ((bVar7 != 0x24) || (string[sind + 1] != '(')) goto LAB_00066431;\n      si = sind + 2;\n      extract_command_subst(string,&si,flags | 1);\nLAB_0006672c:\n      uVar5 = slen;\n      sind = si;\n      if (slen <= (uint)si) goto LAB_00066741;\nLAB_000664e0:\n      sind = sind + 1;\n    }" if (parenthesized_expression "((flags & 8U) == 0)" ( (binary_expression "(flags & 8U) == 0" (parenthesized_expression "(flags & 8U)" ( (binary_expression "flags & 8U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) {\nLAB_0006660e:\n        sind = sind + 1;\n        bVar10 = false;\n        bVar2 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        si = sind + local_64;\n        extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1);\n        goto LAB_0006672c;\n      }\n      uVar5 = uVar9;\n      if (bVar7 == *opener) {\n        iVar6 = strncmp((char *)__s,opener,local_64);\n        uVar5 = (uint)bVar7;\n        if (iVar6 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar5 == *alt_opener)) {\n        iVar6 = strncmp((char *)__s,alt_opener,local_4c);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) {\n          si = sind + local_4c;\n          extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);\n          uVar5 = slen;\n          if (slen <= (uint)si) goto LAB_00066741;\n          bVar10 = false;\n          sind = si;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        slen = (sind - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar5 == *closer) {\n        iVar6 = strncmp((char *)__s,closer,local_50);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) goto LAB_000668cd;\n      }\n      aVar3 = state.__value;\n      iVar6 = state.__count;\n      if (uVar9 == 0x60) {\n        si = sind + 1;\n        string_extract(string,&si,"`",flags | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar9 == 0x27) || (uVar9 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar7 = (byte)uVar5;\n      if (((uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_000664d4:\n          if (uVar5 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_000664d4;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_00066935:\n        sind = sind + uVar5;\n      }\n    }" { (if_statement "if ((uVar9 == 1) || (uVar9 == 0x5c)) {\nLAB_0006660e:\n        sind = sind + 1;\n        bVar10 = false;\n        bVar2 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }" if (parenthesized_expression "((uVar9 == 1) || (uVar9 == 0x5c))" ( (binary_expression "(uVar9 == 1) || (uVar9 == 0x5c)" (parenthesized_expression "(uVar9 == 1)" ( (binary_expression "uVar9 == 1" identifier == number_literal) )) || (parenthesized_expression "(uVar9 == 0x5c)" ( (binary_expression "uVar9 == 0x5c" identifier == number_literal) ))) )) (compound_statement "{\nLAB_0006660e:\n        sind = sind + 1;\n        bVar10 = false;\n        bVar2 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }" { (labeled_statement "LAB_0006660e:\n        sind = sind + 1;" statement_identifier : (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;)) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "__s = (byte *)(string + sind);" (assignment_expression "__s = (byte *)(string + sind)" identifier = (cast_expression "(byte *)(string + sind)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(string + sind)" ( (binary_expression "string + sind" identifier + identifier) )))) ;) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) (labeled_statement "LAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        si = sind + local_64;\n        extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1);\n        goto LAB_0006672c;\n      }" statement_identifier : (if_statement "if (local_64 == 0) {\nLAB_000666fd:\n        si = sind + local_64;\n        extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1);\n        goto LAB_0006672c;\n      }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000666fd:\n        si = sind + local_64;\n        extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1);\n        goto LAB_0006672c;\n      }" { (labeled_statement "LAB_000666fd:\n        si = sind + local_64;" statement_identifier : (expression_statement "si = sind + local_64;" (assignment_expression "si = sind + local_64" identifier = (binary_expression "sind + local_64" identifier + identifier)) ;)) (expression_statement "extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1);" (call_expression "extract_delimited_string(string,&si,opener,alt_opener,closer,flags | 1)" identifier (argument_list "(string,&si,opener,alt_opener,closer,flags | 1)" ( identifier , (pointer_expression "&si" & identifier) , identifier , identifier , identifier , (binary_expression "flags | 1" identifier | number_literal) ))) ;) (goto_statement "goto LAB_0006672c;" goto statement_identifier ;) }))) (expression_statement "uVar5 = uVar9;" (assignment_expression "uVar5 = uVar9" identifier = identifier) ;) (if_statement "if (bVar7 == *opener) {\n        iVar6 = strncmp((char *)__s,opener,local_64);\n        uVar5 = (uint)bVar7;\n        if (iVar6 == 0) goto LAB_000666fd;\n      }" if (parenthesized_expression "(bVar7 == *opener)" ( (binary_expression "bVar7 == *opener" identifier == (pointer_expression "*opener" * identifier)) )) (compound_statement "{\n        iVar6 = strncmp((char *)__s,opener,local_64);\n        uVar5 = (uint)bVar7;\n        if (iVar6 == 0) goto LAB_000666fd;\n      }" { (expression_statement "iVar6 = strncmp((char *)__s,opener,local_64);" (assignment_expression "iVar6 = strncmp((char *)__s,opener,local_64)" identifier = (call_expression "strncmp((char *)__s,opener,local_64)" identifier (argument_list "((char *)__s,opener,local_64)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (expression_statement "uVar5 = (uint)bVar7;" (assignment_expression "uVar5 = (uint)bVar7" identifier = (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (iVar6 == 0) goto LAB_000666fd;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000666fd;" goto statement_identifier ;)) })) (if_statement "if ((local_4c != 0) && ((char)uVar5 == *alt_opener)) {\n        iVar6 = strncmp((char *)__s,alt_opener,local_4c);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) {\n          si = sind + local_4c;\n          extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);\n          uVar5 = slen;\n          if (slen <= (uint)si) goto LAB_00066741;\n          bVar10 = false;\n          sind = si;\n          goto LAB_0006666c;\n        }\n      }" if (parenthesized_expression "((local_4c != 0) && ((char)uVar5 == *alt_opener))" ( (binary_expression "(local_4c != 0) && ((char)uVar5 == *alt_opener)" (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) && (parenthesized_expression "((char)uVar5 == *alt_opener)" ( (binary_expression "(char)uVar5 == *alt_opener" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) == (pointer_expression "*alt_opener" * identifier)) ))) )) (compound_statement "{\n        iVar6 = strncmp((char *)__s,alt_opener,local_4c);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) {\n          si = sind + local_4c;\n          extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);\n          uVar5 = slen;\n          if (slen <= (uint)si) goto LAB_00066741;\n          bVar10 = false;\n          sind = si;\n          goto LAB_0006666c;\n        }\n      }" { (expression_statement "iVar6 = strncmp((char *)__s,alt_opener,local_4c);" (assignment_expression "iVar6 = strncmp((char *)__s,alt_opener,local_4c)" identifier = (call_expression "strncmp((char *)__s,alt_opener,local_4c)" identifier (argument_list "((char *)__s,alt_opener,local_4c)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (expression_statement "uVar5 = uVar5 & 0xff;" (assignment_expression "uVar5 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) (if_statement "if (iVar6 == 0) {\n          si = sind + local_4c;\n          extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);\n          uVar5 = slen;\n          if (slen <= (uint)si) goto LAB_00066741;\n          bVar10 = false;\n          sind = si;\n          goto LAB_0006666c;\n        }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          si = sind + local_4c;\n          extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);\n          uVar5 = slen;\n          if (slen <= (uint)si) goto LAB_00066741;\n          bVar10 = false;\n          sind = si;\n          goto LAB_0006666c;\n        }" { (expression_statement "si = sind + local_4c;" (assignment_expression "si = sind + local_4c" identifier = (binary_expression "sind + local_4c" identifier + identifier)) ;) (expression_statement "extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1);" (call_expression "extract_delimited_string(string,&si,alt_opener,alt_opener,closer,flags | 1)" identifier (argument_list "(string,&si,alt_opener,alt_opener,closer,flags | 1)" ( identifier , (pointer_expression "&si" & identifier) , identifier , identifier , identifier , (binary_expression "flags | 1" identifier | number_literal) ))) ;) (expression_statement "uVar5 = slen;" (assignment_expression "uVar5 = slen" identifier = identifier) ;) (if_statement "if (slen <= (uint)si) goto LAB_00066741;" if (parenthesized_expression "(slen <= (uint)si)" ( (binary_expression "slen <= (uint)si" identifier <= (cast_expression "(uint)si" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (goto_statement "goto LAB_00066741;" goto statement_identifier ;)) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "sind = si;" (assignment_expression "sind = si" identifier = identifier) ;) (goto_statement "goto LAB_0006666c;" goto statement_identifier ;) })) })) (if_statement "if (local_50 == 0) {\nLAB_000668cd:\n        slen = (sind - 1) + local_50;\n        goto LAB_0006651a;\n      }" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000668cd:\n        slen = (sind - 1) + local_50;\n        goto LAB_0006651a;\n      }" { (labeled_statement "LAB_000668cd:\n        slen = (sind - 1) + local_50;" statement_identifier : (expression_statement "slen = (sind - 1) + local_50;" (assignment_expression "slen = (sind - 1) + local_50" identifier = (binary_expression "(sind - 1) + local_50" (parenthesized_expression "(sind - 1)" ( (binary_expression "sind - 1" identifier - number_literal) )) + identifier)) ;)) (goto_statement "goto LAB_0006651a;" goto statement_identifier ;) })) (if_statement "if ((char)uVar5 == *closer) {\n        iVar6 = strncmp((char *)__s,closer,local_50);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) goto LAB_000668cd;\n      }" if (parenthesized_expression "((char)uVar5 == *closer)" ( (binary_expression "(char)uVar5 == *closer" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) == (pointer_expression "*closer" * identifier)) )) (compound_statement "{\n        iVar6 = strncmp((char *)__s,closer,local_50);\n        uVar5 = uVar5 & 0xff;\n        if (iVar6 == 0) goto LAB_000668cd;\n      }" { (expression_statement "iVar6 = strncmp((char *)__s,closer,local_50);" (assignment_expression "iVar6 = strncmp((char *)__s,closer,local_50)" identifier = (call_expression "strncmp((char *)__s,closer,local_50)" identifier (argument_list "((char *)__s,closer,local_50)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (expression_statement "uVar5 = uVar5 & 0xff;" (assignment_expression "uVar5 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) (if_statement "if (iVar6 == 0) goto LAB_000668cd;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000668cd;" goto statement_identifier ;)) })) (expression_statement "aVar3 = state.__value;" (assignment_expression "aVar3 = state.__value" identifier = (field_expression "state.__value" identifier . field_identifier)) ;) (expression_statement "iVar6 = state.__count;" (assignment_expression "iVar6 = state.__count" identifier = (field_expression "state.__count" identifier . field_identifier)) ;) (if_statement "if (uVar9 == 0x60) {\n        si = sind + 1;\n        string_extract(string,&si,"`",flags | 1);\n        goto LAB_0006672c;\n      }" if (parenthesized_expression "(uVar9 == 0x60)" ( (binary_expression "uVar9 == 0x60" identifier == number_literal) )) (compound_statement "{\n        si = sind + 1;\n        string_extract(string,&si,"`",flags | 1);\n        goto LAB_0006672c;\n      }" { (expression_statement "si = sind + 1;" (assignment_expression "si = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;) (expression_statement "string_extract(string,&si,"`",flags | 1);" (call_expression "string_extract(string,&si,"`",flags | 1)" identifier (argument_list "(string,&si,"`",flags | 1)" ( identifier , (pointer_expression "&si" & identifier) , (string_literal ""`"" " string_content ") , (binary_expression "flags | 1" identifier | number_literal) ))) ;) (goto_statement "goto LAB_0006672c;" goto statement_identifier ;) })) (if_statement "if ((uVar9 == 0x27) || (uVar9 == 0x22)) break;" if (parenthesized_expression "((uVar9 == 0x27) || (uVar9 == 0x22))" ( (binary_expression "(uVar9 == 0x27) || (uVar9 == 0x22)" (parenthesized_expression "(uVar9 == 0x27)" ( (binary_expression "uVar9 == 0x27" identifier == number_literal) )) || (parenthesized_expression "(uVar9 == 0x22)" ( (binary_expression "uVar9 == 0x22" identifier == number_literal) ))) )) (break_statement "break;" break ;)) (if_statement "if (locale_mb_cur_max < 2) goto LAB_000664e0;" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (goto_statement "goto LAB_000664e0;" goto statement_identifier ;)) (expression_statement "bVar7 = (byte)uVar5;" (assignment_expression "bVar7 = (byte)uVar5" identifier = (cast_expression "(byte)uVar5" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (((uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_000664d4:\n          if (uVar5 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_000664d4;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }\n      else {\n        uVar5 = 1;\nLAB_00066935:\n        sind = sind + uVar5;\n      }" if (parenthesized_expression "(((uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[uVar5 >> 5 & 7] >> (bVar7 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[uVar5 >> 5 & 7]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "uVar5 >> 5 & 7" (binary_expression "uVar5 >> 5" identifier >> number_literal) & number_literal) ]) >> (parenthesized_expression "(bVar7 & 0x1f)" ( (binary_expression "bVar7 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_000664d4:\n          if (uVar5 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n        if (uVar5 < 0xfffffffe) goto LAB_000664d4;\n        sind = sind + 1;\n        state.__count = iVar6;\n        state.__value = aVar3;\n      }" { (if_statement "if ((locale_utf8locale != 0) && (-1 < (char)bVar7)) {\n          uVar5 = (uint)(bVar7 != 0);\nLAB_000664d4:\n          if (uVar5 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }" if (parenthesized_expression "((locale_utf8locale != 0) && (-1 < (char)bVar7))" ( (binary_expression "(locale_utf8locale != 0) && (-1 < (char)bVar7)" (parenthesized_expression "(locale_utf8locale != 0)" ( (binary_expression "locale_utf8locale != 0" identifier != number_literal) )) && (parenthesized_expression "(-1 < (char)bVar7)" ( (binary_expression "-1 < (char)bVar7" number_literal < (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          uVar5 = (uint)(bVar7 != 0);\nLAB_000664d4:\n          if (uVar5 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }" { (expression_statement "uVar5 = (uint)(bVar7 != 0);" (assignment_expression "uVar5 = (uint)(bVar7 != 0)" identifier = (call_expression "(uint)(bVar7 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )))) ;) (labeled_statement "LAB_000664d4:\n          if (uVar5 == 0) goto LAB_000664e0;" statement_identifier : (if_statement "if (uVar5 == 0) goto LAB_000664e0;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000664e0;" goto statement_identifier ;))) (goto_statement "goto LAB_00066935;" goto statement_identifier ;) })) (expression_statement "uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);" (assignment_expression "uVar5 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "slen - sind" identifier - identifier) , (cast_expression "(mbstate_t *)&state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&state" & identifier)) )))) ;) (if_statement "if (uVar5 < 0xfffffffe) goto LAB_000664d4;" if (parenthesized_expression "(uVar5 < 0xfffffffe)" ( (binary_expression "uVar5 < 0xfffffffe" identifier < number_literal) )) (goto_statement "goto LAB_000664d4;" goto statement_identifier ;)) (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;) (expression_statement "state.__count = iVar6;" (assignment_expression "state.__count = iVar6" (field_expression "state.__count" identifier . field_identifier) = identifier) ;) (expression_statement "state.__value = aVar3;" (assignment_expression "state.__value = aVar3" (field_expression "state.__value" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\n        uVar5 = 1;\nLAB_00066935:\n        sind = sind + uVar5;\n      }" else (compound_statement "{\n        uVar5 = 1;\nLAB_00066935:\n        sind = sind + uVar5;\n      }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00066935:\n        sind = sind + uVar5;" statement_identifier : (expression_statement "sind = sind + uVar5;" (assignment_expression "sind = sind + uVar5" identifier = (binary_expression "sind + uVar5" identifier + identifier)) ;)) }))) }) (else_clause "else {\n      if (uVar9 == 0x23) {\n        if (((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))\n        goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          sind = sind + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }\nLAB_0006680a:\n        bVar10 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) goto LAB_0006660e;\n      if ((bVar7 != 0x24) || (string[sind + 1] != '(')) goto LAB_00066431;\n      si = sind + 2;\n      extract_command_subst(string,&si,flags | 1);\nLAB_0006672c:\n      uVar5 = slen;\n      sind = si;\n      if (slen <= (uint)si) goto LAB_00066741;\nLAB_000664e0:\n      sind = sind + 1;\n    }" else (compound_statement "{\n      if (uVar9 == 0x23) {\n        if (((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))\n        goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          sind = sind + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }\nLAB_0006680a:\n        bVar10 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }\n      if ((uVar9 == 1) || (uVar9 == 0x5c)) goto LAB_0006660e;\n      if ((bVar7 != 0x24) || (string[sind + 1] != '(')) goto LAB_00066431;\n      si = sind + 2;\n      extract_command_subst(string,&si,flags | 1);\nLAB_0006672c:\n      uVar5 = slen;\n      sind = si;\n      if (slen <= (uint)si) goto LAB_00066741;\nLAB_000664e0:\n      sind = sind + 1;\n    }" { (if_statement "if (uVar9 == 0x23) {\n        if (((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))\n        goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          sind = sind + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }\nLAB_0006680a:\n        bVar10 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }" if (parenthesized_expression "(uVar9 == 0x23)" ( (binary_expression "uVar9 == 0x23" identifier == number_literal) )) (compound_statement "{\n        if (((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))\n        goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          sind = sind + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }\nLAB_0006680a:\n        bVar10 = true;\n        __s = (byte *)(string + sind);\n        goto LAB_000663d0;\n      }" { (if_statement "if (((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))\n        goto LAB_00066431;" if (parenthesized_expression "(((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0))" ( (binary_expression "((sind != 0) && (string[sind - 1] != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0)" (parenthesized_expression "((sind != 0) && (string[sind - 1] != 10))" ( (binary_expression "(sind != 0) && (string[sind - 1] != 10)" (parenthesized_expression "(sind != 0)" ( (binary_expression "sind != 0" identifier != number_literal) )) && (parenthesized_expression "(string[sind - 1] != 10)" ( (binary_expression "string[sind - 1] != 10" (subscript_expression "string[sind - 1]" identifier [ (binary_expression "sind - 1" identifier - number_literal) ]) != number_literal) ))) )) && (parenthesized_expression "((*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20)" ( (binary_expression "*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1) & 0x20" (pointer_expression "*(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1)" * (cast_expression "(byte *)((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1)" ( (binary_expression "(int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4 + 1" (binary_expression "(int)&sh_syntaxtab + (uint)(byte)string[sind - 1] * 4" (cast_expression "(int)&sh_syntaxtab" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&sh_syntaxtab" & identifier)) + (binary_expression "(uint)(byte)string[sind - 1] * 4" (cast_expression "(uint)(byte)string[sind - 1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)string[sind - 1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "string[sind - 1]" identifier [ (binary_expression "sind - 1" identifier - number_literal) ]))) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_00066431;" goto statement_identifier ;)) (if_statement "if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          sind = sind + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00066807:\n          sind = sind + 1;\n        }" { (labeled_statement "LAB_00066807:\n          sind = sind + 1;" statement_identifier : (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;)) }) (else_clause "else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }" else (compound_statement "{\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          sind = sind + sVar4;\n        }" { (if_statement "if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }" if (parenthesized_expression "((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0)" ( (binary_expression "(DAT_001051c4 & 8) == 0 && locale_utf8locale == 0" (binary_expression "(DAT_001051c4 & 8) == 0" (parenthesized_expression "(DAT_001051c4 & 8)" ( (binary_expression "DAT_001051c4 & 8" identifier & number_literal) )) == number_literal) && (binary_expression "locale_utf8locale == 0" identifier == number_literal)) )) (compound_statement "{\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);\n            if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }" { (expression_statement "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state);" (assignment_expression "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "slen - sind" identifier - identifier) , (cast_expression "(mbstate_t *)&state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&state" & identifier)) )))) ;) (if_statement "if (0xfffffffd < sVar4) {\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }" if (parenthesized_expression "(0xfffffffd < sVar4)" ( (binary_expression "0xfffffffd < sVar4" number_literal < identifier) )) (compound_statement "{\n              sind = sind + 1;\n              state.__count = iVar6;\n              state.__value = aVar3;\n              goto LAB_0006680a;\n            }" { (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;) (expression_statement "state.__count = iVar6;" (assignment_expression "state.__count = iVar6" (field_expression "state.__count" identifier . field_identifier) = identifier) ;) (expression_statement "state.__value = aVar3;" (assignment_expression "state.__value = aVar3" (field_expression "state.__value" identifier . field_identifier) = identifier) ;) (goto_statement "goto LAB_0006680a;" goto statement_identifier ;) })) (if_statement "if (sVar4 == 0) goto LAB_00066807;" if (parenthesized_expression "(sVar4 == 0)" ( (binary_expression "sVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00066807;" goto statement_identifier ;)) }) (else_clause "else {\n            sVar4 = 1;\n          }" else (compound_statement "{\n            sVar4 = 1;\n          }" { (expression_statement "sVar4 = 1;" (assignment_expression "sVar4 = 1" identifier = number_literal) ;) }))) (expression_statement "sind = sind + sVar4;" (assignment_expression "sind = sind + sVar4" identifier = (binary_expression "sind + sVar4" identifier + identifier)) ;) }))) (labeled_statement "LAB_0006680a:\n        bVar10 = true;" statement_identifier : (expression_statement "bVar10 = true;" (assignment_expression "bVar10 = true" identifier = true) ;)) (expression_statement "__s = (byte *)(string + sind);" (assignment_expression "__s = (byte *)(string + sind)" identifier = (cast_expression "(byte *)(string + sind)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(string + sind)" ( (binary_expression "string + sind" identifier + identifier) )))) ;) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) (if_statement "if ((uVar9 == 1) || (uVar9 == 0x5c)) goto LAB_0006660e;" if (parenthesized_expression "((uVar9 == 1) || (uVar9 == 0x5c))" ( (binary_expression "(uVar9 == 1) || (uVar9 == 0x5c)" (parenthesized_expression "(uVar9 == 1)" ( (binary_expression "uVar9 == 1" identifier == number_literal) )) || (parenthesized_expression "(uVar9 == 0x5c)" ( (binary_expression "uVar9 == 0x5c" identifier == number_literal) ))) )) (goto_statement "goto LAB_0006660e;" goto statement_identifier ;)) (if_statement "if ((bVar7 != 0x24) || (string[sind + 1] != '(')) goto LAB_00066431;" if (parenthesized_expression "((bVar7 != 0x24) || (string[sind + 1] != '('))" ( (binary_expression "(bVar7 != 0x24) || (string[sind + 1] != '(')" (parenthesized_expression "(bVar7 != 0x24)" ( (binary_expression "bVar7 != 0x24" identifier != number_literal) )) || (parenthesized_expression "(string[sind + 1] != '(')" ( (binary_expression "string[sind + 1] != '('" (subscript_expression "string[sind + 1]" identifier [ (binary_expression "sind + 1" identifier + number_literal) ]) != (char_literal "'('" ' character ')) ))) )) (goto_statement "goto LAB_00066431;" goto statement_identifier ;)) (expression_statement "si = sind + 2;" (assignment_expression "si = sind + 2" identifier = (binary_expression "sind + 2" identifier + number_literal)) ;) (expression_statement "extract_command_subst(string,&si,flags | 1);" (call_expression "extract_command_subst(string,&si,flags | 1)" identifier (argument_list "(string,&si,flags | 1)" ( identifier , (pointer_expression "&si" & identifier) , (binary_expression "flags | 1" identifier | number_literal) ))) ;) (labeled_statement "LAB_0006672c:\n      uVar5 = slen;" statement_identifier : (expression_statement "uVar5 = slen;" (assignment_expression "uVar5 = slen" identifier = identifier) ;)) (expression_statement "sind = si;" (assignment_expression "sind = si" identifier = identifier) ;) (if_statement "if (slen <= (uint)si) goto LAB_00066741;" if (parenthesized_expression "(slen <= (uint)si)" ( (binary_expression "slen <= (uint)si" identifier <= (cast_expression "(uint)si" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (goto_statement "goto LAB_00066741;" goto statement_identifier ;)) (labeled_statement "LAB_000664e0:\n      sind = sind + 1;" statement_identifier : (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;)) }))) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "__s = (byte *)(string + sind);" (assignment_expression "__s = (byte *)(string + sind)" identifier = (cast_expression "(byte *)(string + sind)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(string + sind)" ( (binary_expression "string + sind" identifier + identifier) )))) ;) (expression_statement "bVar7 = *__s;" (assignment_expression "bVar7 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) (expression_statement "iVar6 = state.__count;" (assignment_expression "iVar6 = state.__count" identifier = (field_expression "state.__count" identifier . field_identifier)) ;) (expression_statement "aVar3 = state.__value;" (assignment_expression "aVar3 = state.__value" identifier = (field_expression "state.__value" identifier . field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;) (expression_statement "si = sind;" (assignment_expression "si = sind" identifier = identifier) ;) (if_statement "if (uVar9 == 0x27) {\n    state_1.__count = 0;\n    state_1.__value.__wch = 0;\n    while( true ) {\n      aVar3 = state_1.__value;\n      iVar6 = state_1.__count;\n      __s = (byte *)(string + sind);\n      bVar7 = *__s;\n      if ((bVar7 == 0) || (bVar7 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }\n        else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }\n      }\n      else {\n        sind = sind + 1;\n        state_1.__count = iVar6;\n        state_1.__value = aVar3;\n      }\n    }\n    if (bVar7 != 0) {\n      sind = sind + 1;\n      __s = (byte *)(string + sind);\n    }\n    bVar10 = false;\n  }\n  else {\n    sind = skip_double_quoted(string,slen,sind,0);\n    bVar10 = false;\n    __s = (byte *)(string + sind);\n  }" if (parenthesized_expression "(uVar9 == 0x27)" ( (binary_expression "uVar9 == 0x27" identifier == number_literal) )) (compound_statement "{\n    state_1.__count = 0;\n    state_1.__value.__wch = 0;\n    while( true ) {\n      aVar3 = state_1.__value;\n      iVar6 = state_1.__count;\n      __s = (byte *)(string + sind);\n      bVar7 = *__s;\n      if ((bVar7 == 0) || (bVar7 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }\n        else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }\n      }\n      else {\n        sind = sind + 1;\n        state_1.__count = iVar6;\n        state_1.__value = aVar3;\n      }\n    }\n    if (bVar7 != 0) {\n      sind = sind + 1;\n      __s = (byte *)(string + sind);\n    }\n    bVar10 = false;\n  }" { (expression_statement "state_1.__count = 0;" (assignment_expression "state_1.__count = 0" (field_expression "state_1.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "state_1.__value.__wch = 0;" (assignment_expression "state_1.__value.__wch = 0" (field_expression "state_1.__value.__wch" (field_expression "state_1.__value" identifier . field_identifier) . field_identifier) = number_literal) ;) (while_statement "while( true ) {\n      aVar3 = state_1.__value;\n      iVar6 = state_1.__count;\n      __s = (byte *)(string + sind);\n      bVar7 = *__s;\n      if ((bVar7 == 0) || (bVar7 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }\n        else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }\n      }\n      else {\n        sind = sind + 1;\n        state_1.__count = iVar6;\n        state_1.__value = aVar3;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      aVar3 = state_1.__value;\n      iVar6 = state_1.__count;\n      __s = (byte *)(string + sind);\n      bVar7 = *__s;\n      if ((bVar7 == 0) || (bVar7 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }\n        else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }\n      }\n      else {\n        sind = sind + 1;\n        state_1.__count = iVar6;\n        state_1.__value = aVar3;\n      }\n    }" { (expression_statement "aVar3 = state_1.__value;" (assignment_expression "aVar3 = state_1.__value" identifier = (field_expression "state_1.__value" identifier . field_identifier)) ;) (expression_statement "iVar6 = state_1.__count;" (assignment_expression "iVar6 = state_1.__count" identifier = (field_expression "state_1.__count" identifier . field_identifier)) ;) (expression_statement "__s = (byte *)(string + sind);" (assignment_expression "__s = (byte *)(string + sind)" identifier = (cast_expression "(byte *)(string + sind)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(string + sind)" ( (binary_expression "string + sind" identifier + identifier) )))) ;) (expression_statement "bVar7 = *__s;" (assignment_expression "bVar7 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) (if_statement "if ((bVar7 == 0) || (bVar7 == 0x27)) break;" if (parenthesized_expression "((bVar7 == 0) || (bVar7 == 0x27))" ( (binary_expression "(bVar7 == 0) || (bVar7 == 0x27)" (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar7 == 0x27)" ( (binary_expression "bVar7 == 0x27" identifier == number_literal) ))) )) (break_statement "break;" break ;)) (if_statement "if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        sind = sind + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }\n        else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }\n      }\n      else {\n        sind = sind + 1;\n        state_1.__count = iVar6;\n        state_1.__value = aVar3;\n      }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00066a70:\n        sind = sind + 1;\n      }" { (labeled_statement "LAB_00066a70:\n        sind = sind + 1;" statement_identifier : (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;)) }) (else_clause "else if (((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }\n        else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }\n      }\n      else {\n        sind = sind + 1;\n        state_1.__count = iVar6;\n        state_1.__value = aVar3;\n      }" else (if_statement "if (((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }\n        else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }\n      }\n      else {\n        sind = sind + 1;\n        state_1.__count = iVar6;\n        state_1.__value = aVar3;\n      }" if (parenthesized_expression "(((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[bVar7 >> 5] >> (bVar7 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[bVar7 >> 5]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "bVar7 >> 5" identifier >> number_literal) ]) >> (parenthesized_expression "(bVar7 & 0x1f)" ( (binary_expression "bVar7 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }\n        else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }\n      }" { (if_statement "if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }\n        else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }" if (parenthesized_expression "((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || (sVar4 = 1, (char)bVar7 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "(sVar4 = 1, (char)bVar7 < '\0')" ( (comma_expression "sVar4 = 1, (char)bVar7 < '\0'" (assignment_expression "sVar4 = 1" identifier = number_literal) , (binary_expression "(char)bVar7 < '\0'" (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          sind = sind + 1;\n          state_1.__count = iVar6;\n          state_1.__value = aVar3;\n        }" { (expression_statement "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1);" (assignment_expression "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,slen - sind,(mbstate_t *)&state_1)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "slen - sind" identifier - identifier) , (cast_expression "(mbstate_t *)&state_1" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&state_1" & identifier)) )))) ;) (if_statement "if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }" if (parenthesized_expression "(sVar4 < 0xfffffffe)" ( (binary_expression "sVar4 < 0xfffffffe" identifier < number_literal) )) (compound_statement "{\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }" { (if_statement "if (sVar4 == 0) goto LAB_00066a70;" if (parenthesized_expression "(sVar4 == 0)" ( (binary_expression "sVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00066a70;" goto statement_identifier ;)) (goto_statement "goto LAB_000669de;" goto statement_identifier ;) })) (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;) (expression_statement "state_1.__count = iVar6;" (assignment_expression "state_1.__count = iVar6" (field_expression "state_1.__count" identifier . field_identifier) = identifier) ;) (expression_statement "state_1.__value = aVar3;" (assignment_expression "state_1.__value = aVar3" (field_expression "state_1.__value" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\nLAB_000669de:\n          sind = sind + sVar4;\n        }" else (compound_statement "{\nLAB_000669de:\n          sind = sind + sVar4;\n        }" { (labeled_statement "LAB_000669de:\n          sind = sind + sVar4;" statement_identifier : (expression_statement "sind = sind + sVar4;" (assignment_expression "sind = sind + sVar4" identifier = (binary_expression "sind + sVar4" identifier + identifier)) ;)) }))) }) (else_clause "else {\n        sind = sind + 1;\n        state_1.__count = iVar6;\n        state_1.__value = aVar3;\n      }" else (compound_statement "{\n        sind = sind + 1;\n        state_1.__count = iVar6;\n        state_1.__value = aVar3;\n      }" { (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;) (expression_statement "state_1.__count = iVar6;" (assignment_expression "state_1.__count = iVar6" (field_expression "state_1.__count" identifier . field_identifier) = identifier) ;) (expression_statement "state_1.__value = aVar3;" (assignment_expression "state_1.__value = aVar3" (field_expression "state_1.__value" identifier . field_identifier) = identifier) ;) }))))) })) (if_statement "if (bVar7 != 0) {\n      sind = sind + 1;\n      __s = (byte *)(string + sind);\n    }" if (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      sind = sind + 1;\n      __s = (byte *)(string + sind);\n    }" { (expression_statement "sind = sind + 1;" (assignment_expression "sind = sind + 1" identifier = (binary_expression "sind + 1" identifier + number_literal)) ;) (expression_statement "__s = (byte *)(string + sind);" (assignment_expression "__s = (byte *)(string + sind)" identifier = (cast_expression "(byte *)(string + sind)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(string + sind)" ( (binary_expression "string + sind" identifier + identifier) )))) ;) })) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) }) (else_clause "else {\n    sind = skip_double_quoted(string,slen,sind,0);\n    bVar10 = false;\n    __s = (byte *)(string + sind);\n  }" else (compound_statement "{\n    sind = skip_double_quoted(string,slen,sind,0);\n    bVar10 = false;\n    __s = (byte *)(string + sind);\n  }" { (expression_statement "sind = skip_double_quoted(string,slen,sind,0);" (assignment_expression "sind = skip_double_quoted(string,slen,sind,0)" identifier = (call_expression "skip_double_quoted(string,slen,sind,0)" identifier (argument_list "(string,slen,sind,0)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "__s = (byte *)(string + sind);" (assignment_expression "__s = (byte *)(string + sind)" identifier = (cast_expression "(byte *)(string + sind)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(string + sind)" ( (binary_expression "string + sind" identifier + identifier) )))) ;) }))) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })))
(translation_unit "char * __regparm3\nFUN_000662b0(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)\n\n{\n  byte bVar1;\n  bool bVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  byte bVar9;\n  byte *__s;\n  uint uVar10;\n  char *__dest;\n  uint uVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  size_t local_64;\n  size_t local_50;\n  size_t local_4c;\n  uint local_34;\n  mbstate_t local_30;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x662bb;\n  uVar10 = *param_2;\n  __s = (byte *)(param_1 + uVar10);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30.__count = 0;\n  local_30.__value.__wch = 0;\n  sVar4 = strlen((char *)__s);\n  uVar5 = sVar4 + uVar10;\n  local_64 = 0;\n  if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {\n    local_64 = strlen((char *)param_3);\n  }\n  if (*param_4 == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }\n  if (*param_5 == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }\n  bVar2 = false;\n  bVar12 = false;\nLAB_000663d0:\n  bVar9 = *__s;\n  iVar7 = local_30.__count;\n  _Var3 = local_30.__value;\n  do {\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  } while( true );\n  uVar10 = uVar10 + 1;\n  local_34 = uVar10;\n  if (uVar11 == 0x27) {\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }\n  else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }\n  goto LAB_000663d0;\n}\n\n" (function_definition "char * __regparm3\nFUN_000662b0(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)\n\n{\n  byte bVar1;\n  bool bVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  byte bVar9;\n  byte *__s;\n  uint uVar10;\n  char *__dest;\n  uint uVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  size_t local_64;\n  size_t local_50;\n  size_t local_4c;\n  uint local_34;\n  mbstate_t local_30;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x662bb;\n  uVar10 = *param_2;\n  __s = (byte *)(param_1 + uVar10);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30.__count = 0;\n  local_30.__value.__wch = 0;\n  sVar4 = strlen((char *)__s);\n  uVar5 = sVar4 + uVar10;\n  local_64 = 0;\n  if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {\n    local_64 = strlen((char *)param_3);\n  }\n  if (*param_4 == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }\n  if (*param_5 == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }\n  bVar2 = false;\n  bVar12 = false;\nLAB_000663d0:\n  bVar9 = *__s;\n  iVar7 = local_30.__count;\n  _Var3 = local_30.__value;\n  do {\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  } while( true );\n  uVar10 = uVar10 + 1;\n  local_34 = uVar10;\n  if (uVar11 == 0x27) {\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }\n  else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }\n  goto LAB_000663d0;\n}" primitive_type (pointer_declarator "* __regparm3\nFUN_000662b0(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_000662b0(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)" identifier (parameter_list "(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "char *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "uint param_6" type_identifier identifier) )))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  byte bVar9;\n  byte *__s;\n  uint uVar10;\n  char *__dest;\n  uint uVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  size_t local_64;\n  size_t local_50;\n  size_t local_4c;\n  uint local_34;\n  mbstate_t local_30;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x662bb;\n  uVar10 = *param_2;\n  __s = (byte *)(param_1 + uVar10);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30.__count = 0;\n  local_30.__value.__wch = 0;\n  sVar4 = strlen((char *)__s);\n  uVar5 = sVar4 + uVar10;\n  local_64 = 0;\n  if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {\n    local_64 = strlen((char *)param_3);\n  }\n  if (*param_4 == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }\n  if (*param_5 == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }\n  bVar2 = false;\n  bVar12 = false;\nLAB_000663d0:\n  bVar9 = *__s;\n  iVar7 = local_30.__count;\n  _Var3 = local_30.__value;\n  do {\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  } while( true );\n  uVar10 = uVar10 + 1;\n  local_34 = uVar10;\n  if (uVar11 == 0x27) {\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }\n  else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }\n  goto LAB_000663d0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "_union_54 _Var3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "byte *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "size_t local_64;" primitive_type identifier ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "size_t local_4c;" primitive_type identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "mbstate_t local_30;" type_identifier identifier ;) (declaration "mbstate_t local_28;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x662bb;" (assignment_expression "uStack_14 = 0x662bb" identifier = number_literal) ;) (expression_statement "uVar10 = *param_2;" (assignment_expression "uVar10 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_30.__count = 0;" (assignment_expression "local_30.__count = 0" (field_expression "local_30.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_30.__value.__wch = 0;" (assignment_expression "local_30.__value.__wch = 0" (field_expression "local_30.__value.__wch" (field_expression "local_30.__value" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "sVar4 = strlen((char *)__s);" (assignment_expression "sVar4 = strlen((char *)__s)" identifier = (call_expression "strlen((char *)__s)" identifier (argument_list "((char *)__s)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "uVar5 = sVar4 + uVar10;" (assignment_expression "uVar5 = sVar4 + uVar10" identifier = (binary_expression "sVar4 + uVar10" identifier + identifier)) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (if_statement "if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {\n    local_64 = strlen((char *)param_3);\n  }" if (parenthesized_expression "(((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0))" ( (binary_expression "((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)" (parenthesized_expression "((*param_3 != 0) && (local_64 = 1, param_3[1] != 0))" ( (binary_expression "(*param_3 != 0) && (local_64 = 1, param_3[1] != 0)" (parenthesized_expression "(*param_3 != 0)" ( (binary_expression "*param_3 != 0" (pointer_expression "*param_3" * identifier) != number_literal) )) && (parenthesized_expression "(local_64 = 1, param_3[1] != 0)" ( (comma_expression "local_64 = 1, param_3[1] != 0" (assignment_expression "local_64 = 1" identifier = number_literal) , (binary_expression "param_3[1] != 0" (subscript_expression "param_3[1]" identifier [ number_literal ]) != number_literal)) ))) )) && (parenthesized_expression "(local_64 = 2, param_3[2] != 0)" ( (comma_expression "local_64 = 2, param_3[2] != 0" (assignment_expression "local_64 = 2" identifier = number_literal) , (binary_expression "param_3[2] != 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n    local_64 = strlen((char *)param_3);\n  }" { (expression_statement "local_64 = strlen((char *)param_3);" (assignment_expression "local_64 = strlen((char *)param_3)" identifier = (call_expression "strlen((char *)param_3)" identifier (argument_list "((char *)param_3)" ( (cast_expression "(char *)param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) })) (if_statement "if (*param_4 == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }" if (parenthesized_expression "(*param_4 == '\0')" ( (binary_expression "*param_4 == '\0'" (pointer_expression "*param_4" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_4c = 0;\n  }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }" else (compound_statement "{\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }" { (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) (if_statement "if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }" if (parenthesized_expression "((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0'))" ( (binary_expression "(param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')" (parenthesized_expression "(param_4[1] != '\0')" ( (binary_expression "param_4[1] != '\0'" (subscript_expression "param_4[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_4c = 2, param_4[2] != '\0')" ( (comma_expression "local_4c = 2, param_4[2] != '\0'" (assignment_expression "local_4c = 2" identifier = number_literal) , (binary_expression "param_4[2] != '\0'" (subscript_expression "param_4[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      local_4c = strlen(param_4);\n    }" { (expression_statement "local_4c = strlen(param_4);" (assignment_expression "local_4c = strlen(param_4)" identifier = (call_expression "strlen(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) })) }))) (if_statement "if (*param_5 == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }" if (parenthesized_expression "(*param_5 == '\0')" ( (binary_expression "*param_5 == '\0'" (pointer_expression "*param_5" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_50 = 0;\n  }" { (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }" else (compound_statement "{\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }" { (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (if_statement "if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }" if (parenthesized_expression "((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0'))" ( (binary_expression "(param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')" (parenthesized_expression "(param_5[1] != '\0')" ( (binary_expression "param_5[1] != '\0'" (subscript_expression "param_5[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(local_50 = 2, param_5[2] != '\0')" ( (comma_expression "local_50 = 2, param_5[2] != '\0'" (assignment_expression "local_50 = 2" identifier = number_literal) , (binary_expression "param_5[2] != '\0'" (subscript_expression "param_5[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      local_50 = strlen(param_5);\n    }" { (expression_statement "local_50 = strlen(param_5);" (assignment_expression "local_50 = strlen(param_5)" identifier = (call_expression "strlen(param_5)" identifier (argument_list "(param_5)" ( identifier )))) ;) })) }))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (labeled_statement "LAB_000663d0:\n  bVar9 = *__s;" statement_identifier : (expression_statement "bVar9 = *__s;" (assignment_expression "bVar9 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;)) (expression_statement "iVar7 = local_30.__count;" (assignment_expression "iVar7 = local_30.__count" identifier = (field_expression "local_30.__count" identifier . field_identifier)) ;) (expression_statement "_Var3 = local_30.__value;" (assignment_expression "_Var3 = local_30.__value" identifier = (field_expression "local_30.__value" identifier . field_identifier)) ;) (do_statement "do {\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  } while( true );" do (compound_statement "{\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  }" { (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" identifier . field_identifier) = identifier) ;) (if_statement "if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }" if (parenthesized_expression "(uVar5 < uVar10)" ( (binary_expression "uVar5 < uVar10" identifier < identifier) )) (compound_statement "{\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }" { (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) (if_statement "if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;" if (parenthesized_expression "(*(char *)(param_1 + uVar5) == '\0')" ( (binary_expression "*(char *)(param_1 + uVar5) == '\0'" (pointer_expression "*(char *)(param_1 + uVar5)" * (cast_expression "(char *)(param_1 + uVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar5)" ( (binary_expression "param_1 + uVar5" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00066741;" goto statement_identifier ;)) (labeled_statement "LAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;" statement_identifier : (expression_statement "iVar7 = (uVar5 - *param_2) - local_50;" (assignment_expression "iVar7 = (uVar5 - *param_2) - local_50" identifier = (binary_expression "(uVar5 - *param_2) - local_50" (parenthesized_expression "(uVar5 - *param_2)" ( (binary_expression "uVar5 - *param_2" identifier - (pointer_expression "*param_2" * identifier)) )) - identifier)) ;)) (expression_statement "__dest = (char *)0x0;" (assignment_expression "__dest = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = iVar7 + 1;" (assignment_expression "local_34 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (if_statement "if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }" if (parenthesized_expression "((param_6 & 1) == 0)" ( (binary_expression "(param_6 & 1) == 0" (parenthesized_expression "(param_6 & 1)" ( (binary_expression "param_6 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }" { (expression_statement "__dest = (char *)xmalloc(iVar7 + 2);" (assignment_expression "__dest = (char *)xmalloc(iVar7 + 2)" identifier = (cast_expression "(char *)xmalloc(iVar7 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar7 + 2)" identifier (argument_list "(iVar7 + 2)" ( (binary_expression "iVar7 + 2" identifier + number_literal) ))))) ;) (expression_statement "strncpy(__dest,(char *)(param_1 + *param_2),local_34);" (call_expression "strncpy(__dest,(char *)(param_1 + *param_2),local_34)" identifier (argument_list "(__dest,(char *)(param_1 + *param_2),local_34)" ( identifier , (cast_expression "(char *)(param_1 + *param_2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *param_2)" ( (binary_expression "param_1 + *param_2" identifier + (pointer_expression "*param_2" * identifier)) ))) , identifier ))) ;) (expression_statement "__dest[local_34] = '\0';" (assignment_expression "__dest[local_34] = '\0'" (subscript_expression "__dest[local_34]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "*param_2 = uVar5;" (assignment_expression "*param_2 = uVar5" (pointer_expression "*param_2" * identifier) = identifier) ;) (goto_statement "goto LAB_00066757;" goto statement_identifier ;) })) (expression_statement "uVar11 = (uint)(char)bVar9;" (assignment_expression "uVar11 = (uint)(char)bVar9" identifier = (cast_expression "(uint)(char)bVar9" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(char)bVar9" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "uVar6 = uVar10;" (assignment_expression "uVar6 = uVar10" identifier = identifier) ;) (if_statement "if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }" { (labeled_statement "LAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }" statement_identifier : (if_statement "if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }" if (parenthesized_expression "(no_longjmp_on_fatal_error == 0)" ( (binary_expression "no_longjmp_on_fatal_error == 0" identifier == number_literal) )) (compound_statement "{\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }" { (expression_statement "last_command_exit_value = 1;" (assignment_expression "last_command_exit_value = 1" identifier = number_literal) ;) (expression_statement "uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);" (assignment_expression "uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value)" identifier = (call_expression "dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value)" identifier (argument_list "(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value)" ( number_literal , (string_literal ""bad substitution: no closing `%s\' in %s"" " string_content escape_sequence string_content ") , number_literal , (pointer_expression "&last_command_exit_value" & identifier) )))) ;) (expression_statement "report_error(uVar8,param_5,param_1);" (call_expression "report_error(uVar8,param_5,param_1)" identifier (argument_list "(uVar8,param_5,param_1)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00064460();" (call_expression "FUN_00064460()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "__dest = (char *)0x0;" (assignment_expression "__dest = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*param_2 = uVar6;" (assignment_expression "*param_2 = uVar6" (pointer_expression "*param_2" * identifier) = identifier) ;) (labeled_statement "LAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n        return __dest;\n      }" { (return_statement "return __dest;" return identifier ;) }))) (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }" { (expression_statement "bVar12 = uVar11 != 10;" (assignment_expression "bVar12 = uVar11 != 10" identifier = (binary_expression "uVar11 != 10" identifier != number_literal)) ;) (if_statement "if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }" { (labeled_statement "LAB_000665f0:\n        uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) }) (else_clause "else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }" else (compound_statement "{\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }" { (if_statement "if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }" if (parenthesized_expression "(((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "uVar11 >> 5 & 7" (binary_expression "uVar11 >> 5" identifier >> number_literal) & number_literal) ]) >> (parenthesized_expression "(bVar9 & 0x1f)" ( (binary_expression "bVar9 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }" { (if_statement "if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }" if (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar9 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || ((char)bVar9 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "((char)bVar9 < '\0')" ( (binary_expression "(char)bVar9 < '\0'" (cast_expression "(char)bVar9" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }" { (expression_statement "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);" (assignment_expression "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "uVar5 - uVar10" identifier - identifier) , (pointer_expression "&local_30" & identifier) )))) ;) (if_statement "if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }" if (parenthesized_expression "(0xfffffffd < uVar6)" ( (binary_expression "0xfffffffd < uVar6" number_literal < identifier) )) (compound_statement "{\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }" { (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" identifier . field_identifier) = identifier) ;) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) }) (else_clause "else {\n            uVar6 = (uint)(bVar9 != 0);\n          }" else (compound_statement "{\n            uVar6 = (uint)(bVar9 != 0);\n          }" { (expression_statement "uVar6 = (uint)(bVar9 != 0);" (assignment_expression "uVar6 = (uint)(bVar9 != 0)" identifier = (call_expression "(uint)(bVar9 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )))) ;) }))) (if_statement "if (uVar6 == 0) goto LAB_000665f0;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000665f0;" goto statement_identifier ;)) }) (else_clause "else {\n          uVar6 = 1;\n        }" else (compound_statement "{\n          uVar6 = 1;\n        }" { (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) }))) (expression_statement "uVar10 = uVar10 + uVar6;" (assignment_expression "uVar10 = uVar10 + uVar6" identifier = (binary_expression "uVar10 + uVar6" identifier + identifier)) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) }))) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) (if_statement "if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }" { (if_statement "if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }" { (labeled_statement "LAB_0006666c:\n        uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) }) (else_clause "else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" else (if_statement "if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" if (parenthesized_expression "(((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "uVar11 >> 5 & 7" (binary_expression "uVar11 >> 5" identifier >> number_literal) & number_literal) ]) >> (parenthesized_expression "(bVar9 & 0x1f)" ( (binary_expression "bVar9 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }" { (if_statement "if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }" if (parenthesized_expression "((locale_utf8locale != 0) && (-1 < (char)bVar9))" ( (binary_expression "(locale_utf8locale != 0) && (-1 < (char)bVar9)" (parenthesized_expression "(locale_utf8locale != 0)" ( (binary_expression "locale_utf8locale != 0" identifier != number_literal) )) && (parenthesized_expression "(-1 < (char)bVar9)" ( (binary_expression "-1 < (char)bVar9" number_literal < (cast_expression "(char)bVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }" { (expression_statement "uVar6 = (uint)(bVar9 != 0);" (assignment_expression "uVar6 = (uint)(bVar9 != 0)" identifier = (call_expression "(uint)(bVar9 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )))) ;) (labeled_statement "LAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;" statement_identifier : (if_statement "if (uVar6 == 0) goto LAB_0006666c;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0006666c;" goto statement_identifier ;))) (goto_statement "goto LAB_000666c5;" goto statement_identifier ;) })) (expression_statement "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);" (assignment_expression "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "uVar5 - uVar10" identifier - identifier) , (pointer_expression "&local_30" & identifier) )))) ;) (if_statement "if (uVar6 < 0xfffffffe) goto LAB_00066668;" if (parenthesized_expression "(uVar6 < 0xfffffffe)" ( (binary_expression "uVar6 < 0xfffffffe" identifier < number_literal) )) (goto_statement "goto LAB_00066668;" goto statement_identifier ;)) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" else (compound_statement "{\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" { (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000666c5:\n        uVar10 = uVar10 + uVar6;" statement_identifier : (expression_statement "uVar10 = uVar10 + uVar6;" (assignment_expression "uVar10 = uVar10 + uVar6" identifier = (binary_expression "uVar10 + uVar6" identifier + identifier)) ;)) }))))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) (if_statement "if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }" if (parenthesized_expression "((param_6 & 8) == 0)" ( (binary_expression "(param_6 & 8) == 0" (parenthesized_expression "(param_6 & 8)" ( (binary_expression "param_6 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }" { (if_statement "if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }" if (parenthesized_expression "((uVar11 == 1) || (uVar11 == 0x5c))" ( (binary_expression "(uVar11 == 1) || (uVar11 == 0x5c)" (parenthesized_expression "(uVar11 == 1)" ( (binary_expression "uVar11 == 1" identifier == number_literal) )) || (parenthesized_expression "(uVar11 == 0x5c)" ( (binary_expression "uVar11 == 0x5c" identifier == number_literal) ))) )) (compound_statement "{\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }" { (labeled_statement "LAB_0006660e:\n        uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) (labeled_statement "LAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }" statement_identifier : (if_statement "if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }" { (labeled_statement "LAB_000666fd:\n        local_34 = uVar10 + local_64;" statement_identifier : (expression_statement "local_34 = uVar10 + local_64;" (assignment_expression "local_34 = uVar10 + local_64" identifier = (binary_expression "uVar10 + local_64" identifier + identifier)) ;)) (expression_statement "FUN_000662b0(param_4,param_5,param_6 | 1);" (call_expression "FUN_000662b0(param_4,param_5,param_6 | 1)" identifier (argument_list "(param_4,param_5,param_6 | 1)" ( identifier , identifier , (binary_expression "param_6 | 1" identifier | number_literal) ))) ;) (goto_statement "goto LAB_0006672c;" goto statement_identifier ;) }))) (expression_statement "uVar6 = uVar11;" (assignment_expression "uVar6 = uVar11" identifier = identifier) ;) (if_statement "if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }" if (parenthesized_expression "(bVar9 == *param_3)" ( (binary_expression "bVar9 == *param_3" identifier == (pointer_expression "*param_3" * identifier)) )) (compound_statement "{\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }" { (expression_statement "iVar7 = strncmp((char *)__s,(char *)param_3,local_64);" (assignment_expression "iVar7 = strncmp((char *)__s,(char *)param_3,local_64)" identifier = (call_expression "strncmp((char *)__s,(char *)param_3,local_64)" identifier (argument_list "((char *)__s,(char *)param_3,local_64)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "uVar6 = (uint)bVar9;" (assignment_expression "uVar6 = (uint)bVar9" identifier = (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (iVar7 == 0) goto LAB_000666fd;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000666fd;" goto statement_identifier ;)) })) (if_statement "if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }" if (parenthesized_expression "((local_4c != 0) && ((char)uVar6 == *param_4))" ( (binary_expression "(local_4c != 0) && ((char)uVar6 == *param_4)" (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) && (parenthesized_expression "((char)uVar6 == *param_4)" ( (binary_expression "(char)uVar6 == *param_4" (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier) == (pointer_expression "*param_4" * identifier)) ))) )) (compound_statement "{\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }" { (expression_statement "iVar7 = strncmp((char *)__s,param_4,local_4c);" (assignment_expression "iVar7 = strncmp((char *)__s,param_4,local_4c)" identifier = (call_expression "strncmp((char *)__s,param_4,local_4c)" identifier (argument_list "((char *)__s,param_4,local_4c)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (expression_statement "uVar6 = uVar6 & 0xff;" (assignment_expression "uVar6 = uVar6 & 0xff" identifier = (binary_expression "uVar6 & 0xff" identifier & number_literal)) ;) (if_statement "if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }" { (expression_statement "local_34 = uVar10 + local_4c;" (assignment_expression "local_34 = uVar10 + local_4c" identifier = (binary_expression "uVar10 + local_4c" identifier + identifier)) ;) (expression_statement "FUN_000662b0(param_4,param_5,param_6 | 1);" (call_expression "FUN_000662b0(param_4,param_5,param_6 | 1)" identifier (argument_list "(param_4,param_5,param_6 | 1)" ( identifier , identifier , (binary_expression "param_6 | 1" identifier | number_literal) ))) ;) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) (if_statement "if (uVar5 <= local_34) goto LAB_00066741;" if (parenthesized_expression "(uVar5 <= local_34)" ( (binary_expression "uVar5 <= local_34" identifier <= identifier) )) (goto_statement "goto LAB_00066741;" goto statement_identifier ;)) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "uVar10 = local_34;" (assignment_expression "uVar10 = local_34" identifier = identifier) ;) (goto_statement "goto LAB_0006666c;" goto statement_identifier ;) })) })) (if_statement "if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }" { (labeled_statement "LAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;" statement_identifier : (expression_statement "uVar5 = (uVar10 - 1) + local_50;" (assignment_expression "uVar5 = (uVar10 - 1) + local_50" identifier = (binary_expression "(uVar10 - 1) + local_50" (parenthesized_expression "(uVar10 - 1)" ( (binary_expression "uVar10 - 1" identifier - number_literal) )) + identifier)) ;)) (goto_statement "goto LAB_0006651a;" goto statement_identifier ;) })) (if_statement "if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }" if (parenthesized_expression "((char)uVar6 == *param_5)" ( (binary_expression "(char)uVar6 == *param_5" (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier) == (pointer_expression "*param_5" * identifier)) )) (compound_statement "{\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }" { (expression_statement "iVar7 = strncmp((char *)__s,param_5,local_50);" (assignment_expression "iVar7 = strncmp((char *)__s,param_5,local_50)" identifier = (call_expression "strncmp((char *)__s,param_5,local_50)" identifier (argument_list "((char *)__s,param_5,local_50)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (expression_statement "uVar6 = uVar6 & 0xff;" (assignment_expression "uVar6 = uVar6 & 0xff" identifier = (binary_expression "uVar6 & 0xff" identifier & number_literal)) ;) (if_statement "if (iVar7 == 0) goto LAB_000668cd;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000668cd;" goto statement_identifier ;)) })) (expression_statement "_Var3 = local_30.__value;" (assignment_expression "_Var3 = local_30.__value" identifier = (field_expression "local_30.__value" identifier . field_identifier)) ;) (expression_statement "iVar7 = local_30.__count;" (assignment_expression "iVar7 = local_30.__count" identifier = (field_expression "local_30.__count" identifier . field_identifier)) ;) (if_statement "if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }" if (parenthesized_expression "(uVar11 == 0x60)" ( (binary_expression "uVar11 == 0x60" identifier == number_literal) )) (compound_statement "{\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }" { (expression_statement "local_34 = uVar10 + 1;" (assignment_expression "local_34 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000671c0(param_6 | 1);" (call_expression "FUN_000671c0(param_6 | 1)" identifier (argument_list "(param_6 | 1)" ( (binary_expression "param_6 | 1" identifier | number_literal) ))) ;) (goto_statement "goto LAB_0006672c;" goto statement_identifier ;) })) (if_statement "if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;" if (parenthesized_expression "((uVar11 == 0x27) || (uVar11 == 0x22))" ( (binary_expression "(uVar11 == 0x27) || (uVar11 == 0x22)" (parenthesized_expression "(uVar11 == 0x27)" ( (binary_expression "uVar11 == 0x27" identifier == number_literal) )) || (parenthesized_expression "(uVar11 == 0x22)" ( (binary_expression "uVar11 == 0x22" identifier == number_literal) ))) )) (break_statement "break;" break ;)) (if_statement "if (locale_mb_cur_max < 2) goto LAB_000664e0;" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (goto_statement "goto LAB_000664e0;" goto statement_identifier ;)) (expression_statement "bVar9 = (byte)uVar6;" (assignment_expression "bVar9 = (byte)uVar6" identifier = (cast_expression "(byte)uVar6" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }" if (parenthesized_expression "(((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[uVar6 >> 5 & 7]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "uVar6 >> 5 & 7" (binary_expression "uVar6 >> 5" identifier >> number_literal) & number_literal) ]) >> (parenthesized_expression "(bVar9 & 0x1f)" ( (binary_expression "bVar9 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }" { (if_statement "if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }" if (parenthesized_expression "((locale_utf8locale != 0) && (-1 < (char)bVar9))" ( (binary_expression "(locale_utf8locale != 0) && (-1 < (char)bVar9)" (parenthesized_expression "(locale_utf8locale != 0)" ( (binary_expression "locale_utf8locale != 0" identifier != number_literal) )) && (parenthesized_expression "(-1 < (char)bVar9)" ( (binary_expression "-1 < (char)bVar9" number_literal < (cast_expression "(char)bVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }" { (expression_statement "uVar6 = (uint)(bVar9 != 0);" (assignment_expression "uVar6 = (uint)(bVar9 != 0)" identifier = (call_expression "(uint)(bVar9 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )))) ;) (labeled_statement "LAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;" statement_identifier : (if_statement "if (uVar6 == 0) goto LAB_000664e0;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000664e0;" goto statement_identifier ;))) (goto_statement "goto LAB_00066935;" goto statement_identifier ;) })) (expression_statement "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);" (assignment_expression "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "uVar5 - uVar10" identifier - identifier) , (pointer_expression "&local_30" & identifier) )))) ;) (if_statement "if (uVar6 < 0xfffffffe) goto LAB_000664d4;" if (parenthesized_expression "(uVar6 < 0xfffffffe)" ( (binary_expression "uVar6 < 0xfffffffe" identifier < number_literal) )) (goto_statement "goto LAB_000664d4;" goto statement_identifier ;)) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }" else (compound_statement "{\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }" { (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00066935:\n        uVar10 = uVar10 + uVar6;" statement_identifier : (expression_statement "uVar10 = uVar10 + uVar6;" (assignment_expression "uVar10 = uVar10 + uVar6" identifier = (binary_expression "uVar10 + uVar6" identifier + identifier)) ;)) }))) }) (else_clause "else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }" else (compound_statement "{\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }" { (if_statement "if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }" if (parenthesized_expression "(uVar11 == 0x23)" ( (binary_expression "uVar11 == 0x23" identifier == number_literal) )) (compound_statement "{\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }" { (if_statement "if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;" if (parenthesized_expression "(((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0))" ( (binary_expression "((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)" (parenthesized_expression "((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10))" ( (binary_expression "(uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)" (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) && (parenthesized_expression "(bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)" ( (comma_expression "bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10" (assignment_expression "bVar1 = *(byte *)(param_1 + -1 + uVar10)" identifier = (pointer_expression "*(byte *)(param_1 + -1 + uVar10)" * (cast_expression "(byte *)(param_1 + -1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + -1 + uVar10)" ( (binary_expression "param_1 + -1 + uVar10" (binary_expression "param_1 + -1" identifier + number_literal) + identifier) ))))) , (binary_expression "bVar1 != 10" identifier != number_literal)) ))) )) && (parenthesized_expression "((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20)" ( (binary_expression "*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20" (pointer_expression "*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1)" * (cast_expression "(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1)" ( (binary_expression "(int)&sh_syntaxtab + (uint)bVar1 * 4 + 1" (binary_expression "(int)&sh_syntaxtab + (uint)bVar1 * 4" (cast_expression "(int)&sh_syntaxtab" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&sh_syntaxtab" & identifier)) + (binary_expression "(uint)bVar1 * 4" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_00066431;" goto statement_identifier ;)) (if_statement "if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }" { (labeled_statement "LAB_00066807:\n          uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) }) (else_clause "else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }" else (compound_statement "{\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }" { (if_statement "if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }" if (parenthesized_expression "((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0)" ( (binary_expression "(DAT_001051c4 & 8) == 0 && locale_utf8locale == 0" (binary_expression "(DAT_001051c4 & 8) == 0" (parenthesized_expression "(DAT_001051c4 & 8)" ( (binary_expression "DAT_001051c4 & 8" identifier & number_literal) )) == number_literal) && (binary_expression "locale_utf8locale == 0" identifier == number_literal)) )) (compound_statement "{\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }" { (expression_statement "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);" (assignment_expression "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "uVar5 - uVar10" identifier - identifier) , (pointer_expression "&local_30" & identifier) )))) ;) (if_statement "if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }" if (parenthesized_expression "(0xfffffffd < sVar4)" ( (binary_expression "0xfffffffd < sVar4" number_literal < identifier) )) (compound_statement "{\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }" { (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" identifier . field_identifier) = identifier) ;) (goto_statement "goto LAB_0006680a;" goto statement_identifier ;) })) (if_statement "if (sVar4 == 0) goto LAB_00066807;" if (parenthesized_expression "(sVar4 == 0)" ( (binary_expression "sVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00066807;" goto statement_identifier ;)) }) (else_clause "else {\n            sVar4 = 1;\n          }" else (compound_statement "{\n            sVar4 = 1;\n          }" { (expression_statement "sVar4 = 1;" (assignment_expression "sVar4 = 1" identifier = number_literal) ;) }))) (expression_statement "uVar10 = uVar10 + sVar4;" (assignment_expression "uVar10 = uVar10 + sVar4" identifier = (binary_expression "uVar10 + sVar4" identifier + identifier)) ;) }))) (labeled_statement "LAB_0006680a:\n        bVar12 = true;" statement_identifier : (expression_statement "bVar12 = true;" (assignment_expression "bVar12 = true" identifier = true) ;)) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })) (if_statement "if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;" if (parenthesized_expression "((uVar11 == 1) || (uVar11 == 0x5c))" ( (binary_expression "(uVar11 == 1) || (uVar11 == 0x5c)" (parenthesized_expression "(uVar11 == 1)" ( (binary_expression "uVar11 == 1" identifier == number_literal) )) || (parenthesized_expression "(uVar11 == 0x5c)" ( (binary_expression "uVar11 == 0x5c" identifier == number_literal) ))) )) (goto_statement "goto LAB_0006660e;" goto statement_identifier ;)) (if_statement "if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;" if (parenthesized_expression "((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '('))" ( (binary_expression "(bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')" (parenthesized_expression "(bVar9 != 0x24)" ( (binary_expression "bVar9 != 0x24" identifier != number_literal) )) || (parenthesized_expression "(*(char *)(param_1 + 1 + uVar10) != '(')" ( (binary_expression "*(char *)(param_1 + 1 + uVar10) != '('" (pointer_expression "*(char *)(param_1 + 1 + uVar10)" * (cast_expression "(char *)(param_1 + 1 + uVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1 + uVar10)" ( (binary_expression "param_1 + 1 + uVar10" (binary_expression "param_1 + 1" identifier + number_literal) + identifier) )))) != (char_literal "'('" ' character ')) ))) )) (goto_statement "goto LAB_00066431;" goto statement_identifier ;)) (expression_statement "local_34 = uVar10 + 2;" (assignment_expression "local_34 = uVar10 + 2" identifier = (binary_expression "uVar10 + 2" identifier + number_literal)) ;) (expression_statement "extract_command_subst(param_1,&local_34,param_6 | 1);" (call_expression "extract_command_subst(param_1,&local_34,param_6 | 1)" identifier (argument_list "(param_1,&local_34,param_6 | 1)" ( identifier , (pointer_expression "&local_34" & identifier) , (binary_expression "param_6 | 1" identifier | number_literal) ))) ;) (labeled_statement "LAB_0006672c:\n      uVar6 = uVar5;" statement_identifier : (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;)) (expression_statement "uVar10 = local_34;" (assignment_expression "uVar10 = local_34" identifier = identifier) ;) (if_statement "if (uVar5 <= local_34) goto LAB_00066741;" if (parenthesized_expression "(uVar5 <= local_34)" ( (binary_expression "uVar5 <= local_34" identifier <= identifier) )) (goto_statement "goto LAB_00066741;" goto statement_identifier ;)) (labeled_statement "LAB_000664e0:\n      uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) }))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (expression_statement "bVar9 = *__s;" (assignment_expression "bVar9 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) (expression_statement "iVar7 = local_30.__count;" (assignment_expression "iVar7 = local_30.__count" identifier = (field_expression "local_30.__count" identifier . field_identifier)) ;) (expression_statement "_Var3 = local_30.__value;" (assignment_expression "_Var3 = local_30.__value" identifier = (field_expression "local_30.__value" identifier . field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_34 = uVar10;" (assignment_expression "local_34 = uVar10" identifier = identifier) ;) (if_statement "if (uVar11 == 0x27) {\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }\n  else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }" if (parenthesized_expression "(uVar11 == 0x27)" ( (binary_expression "uVar11 == 0x27" identifier == number_literal) )) (compound_statement "{\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }" { (expression_statement "local_28.__count = 0;" (assignment_expression "local_28.__count = 0" (field_expression "local_28.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_28.__value.__wch = 0;" (assignment_expression "local_28.__value.__wch = 0" (field_expression "local_28.__value.__wch" (field_expression "local_28.__value" identifier . field_identifier) . field_identifier) = number_literal) ;) (while_statement "while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }" { (expression_statement "_Var3 = local_28.__value;" (assignment_expression "_Var3 = local_28.__value" identifier = (field_expression "local_28.__value" identifier . field_identifier)) ;) (expression_statement "iVar7 = local_28.__count;" (assignment_expression "iVar7 = local_28.__count" identifier = (field_expression "local_28.__count" identifier . field_identifier)) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) (expression_statement "bVar9 = *__s;" (assignment_expression "bVar9 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) (if_statement "if ((bVar9 == 0) || (bVar9 == 0x27)) break;" if (parenthesized_expression "((bVar9 == 0) || (bVar9 == 0x27))" ( (binary_expression "(bVar9 == 0) || (bVar9 == 0x27)" (parenthesized_expression "(bVar9 == 0)" ( (binary_expression "bVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar9 == 0x27)" ( (binary_expression "bVar9 == 0x27" identifier == number_literal) ))) )) (break_statement "break;" break ;)) (if_statement "if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }" { (labeled_statement "LAB_00066a70:\n        uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) }) (else_clause "else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" else (if_statement "if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" if (parenthesized_expression "(((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0)" ( (binary_expression "((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1)" ( (binary_expression "(uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[bVar9 >> 5]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&is_basic_table)" ( (pointer_expression "&is_basic_table" & identifier) ))) [ (binary_expression "bVar9 >> 5" identifier >> number_literal) ]) >> (parenthesized_expression "(bVar9 & 0x1f)" ( (binary_expression "bVar9 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }" { (if_statement "if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }" if (parenthesized_expression "((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "(sVar4 = 1, (char)bVar9 < '\0')" ( (comma_expression "sVar4 = 1, (char)bVar9 < '\0'" (assignment_expression "sVar4 = 1" identifier = number_literal) , (binary_expression "(char)bVar9 < '\0'" (cast_expression "(char)bVar9" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }" { (expression_statement "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);" (assignment_expression "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28)" identifier (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "uVar5 - uVar10" identifier - identifier) , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }" if (parenthesized_expression "(sVar4 < 0xfffffffe)" ( (binary_expression "sVar4 < 0xfffffffe" identifier < number_literal) )) (compound_statement "{\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }" { (if_statement "if (sVar4 == 0) goto LAB_00066a70;" if (parenthesized_expression "(sVar4 == 0)" ( (binary_expression "sVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00066a70;" goto statement_identifier ;)) (goto_statement "goto LAB_000669de;" goto statement_identifier ;) })) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_28.__count = iVar7;" (assignment_expression "local_28.__count = iVar7" (field_expression "local_28.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_28.__value = _Var3;" (assignment_expression "local_28.__value = _Var3" (field_expression "local_28.__value" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }" else (compound_statement "{\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }" { (labeled_statement "LAB_000669de:\n          uVar10 = uVar10 + sVar4;" statement_identifier : (expression_statement "uVar10 = uVar10 + sVar4;" (assignment_expression "uVar10 = uVar10 + sVar4" identifier = (binary_expression "uVar10 + sVar4" identifier + identifier)) ;)) }))) }) (else_clause "else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" else (compound_statement "{\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" { (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_28.__count = iVar7;" (assignment_expression "local_28.__count = iVar7" (field_expression "local_28.__count" identifier . field_identifier) = identifier) ;) (expression_statement "local_28.__value = _Var3;" (assignment_expression "local_28.__value = _Var3" (field_expression "local_28.__value" identifier . field_identifier) = identifier) ;) }))))) })) (if_statement "if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }" if (parenthesized_expression "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }" { (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) })) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) }) (else_clause "else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }" else (compound_statement "{\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }" { (expression_statement "uVar10 = FUN_00067c30(0);" (assignment_expression "uVar10 = FUN_00067c30(0)" identifier = (call_expression "FUN_00067c30(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" identifier = (cast_expression "(byte *)(param_1 + uVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + uVar10)" ( (binary_expression "param_1 + uVar10" identifier + identifier) )))) ;) }))) (goto_statement "goto LAB_000663d0;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * 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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression (field_expression IDENT . field_identifier) . field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence '))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence '))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * IDENT)) )) - IDENT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * IDENT)) ))) , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (char_literal ' escape_sequence ')) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT , (pointer_expression & IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (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) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = 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) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) }))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (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 LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_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 = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (binary_expression IDENT - IDENT) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) }))))) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT | LIT) ))) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (pointer_expression * IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT , IDENT )))) ;) (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 = (binary_expression IDENT + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT | LIT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) + IDENT)) ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT | LIT) ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (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 LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_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 = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (binary_expression IDENT - IDENT) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (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 (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) , (binary_expression IDENT != LIT)) ))) )) && (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 TYPE) ) (pointer_expression & IDENT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) & LIT) )) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (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 (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) != (char_literal ' character ')) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (binary_expression IDENT | LIT) ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (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)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) }) while (parenthesized_expression ( BOOL )) ;) (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 (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression (field_expression IDENT . field_identifier) . field_identifier) = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (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 IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression IDENT >> 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 ( (comma_expression (assignment_expression IDENT = LIT) , (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) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (binary_expression IDENT - IDENT) , (pointer_expression & IDENT) )))) ;) (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 ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) }))))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) }))) (goto_statement goto statement_identifier ;) })))
(function_definition "char * __regparm3\nFUN_000662b0(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)\n\n{\n  byte bVar1;\n  bool bVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  byte bVar9;\n  byte *__s;\n  uint uVar10;\n  char *__dest;\n  uint uVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  size_t local_64;\n  size_t local_50;\n  size_t local_4c;\n  uint local_34;\n  mbstate_t local_30;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x662bb;\n  uVar10 = *param_2;\n  __s = (byte *)(param_1 + uVar10);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30.__count = 0;\n  local_30.__value.__wch = 0;\n  sVar4 = strlen((char *)__s);\n  uVar5 = sVar4 + uVar10;\n  local_64 = 0;\n  if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {\n    local_64 = strlen((char *)param_3);\n  }\n  if (*param_4 == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }\n  if (*param_5 == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }\n  bVar2 = false;\n  bVar12 = false;\nLAB_000663d0:\n  bVar9 = *__s;\n  iVar7 = local_30.__count;\n  _Var3 = local_30.__value;\n  do {\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  } while( true );\n  uVar10 = uVar10 + 1;\n  local_34 = uVar10;\n  if (uVar11 == 0x27) {\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }\n  else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }\n  goto LAB_000663d0;\n}" (primitive_type "char") (pointer_declarator "* __regparm3\nFUN_000662b0(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)" (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000662b0(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)" (identifier "FUN_000662b0") (parameter_list "(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "byte *param_3" (type_identifier "byte") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "char *param_4" (primitive_type "char") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "char *param_5" (primitive_type "char") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) () ")")))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  _union_54 _Var3;\n  size_t sVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  byte bVar9;\n  byte *__s;\n  uint uVar10;\n  char *__dest;\n  uint uVar11;\n  int in_GS_OFFSET;\n  bool bVar12;\n  size_t local_64;\n  size_t local_50;\n  size_t local_4c;\n  uint local_34;\n  mbstate_t local_30;\n  mbstate_t local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x662bb;\n  uVar10 = *param_2;\n  __s = (byte *)(param_1 + uVar10);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_30.__count = 0;\n  local_30.__value.__wch = 0;\n  sVar4 = strlen((char *)__s);\n  uVar5 = sVar4 + uVar10;\n  local_64 = 0;\n  if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {\n    local_64 = strlen((char *)param_3);\n  }\n  if (*param_4 == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }\n  if (*param_5 == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }\n  bVar2 = false;\n  bVar12 = false;\nLAB_000663d0:\n  bVar9 = *__s;\n  iVar7 = local_30.__count;\n  _Var3 = local_30.__value;\n  do {\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  } while( true );\n  uVar10 = uVar10 + 1;\n  local_34 = uVar10;\n  if (uVar11 == 0x27) {\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }\n  else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }\n  goto LAB_000663d0;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "_union_54 _Var3;" (type_identifier "_union_54") (identifier "_Var3") (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (declaration "byte *__s;" (type_identifier "byte") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "char *__dest;" (primitive_type "char") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "size_t local_64;" (primitive_type "size_t") (identifier "local_64") (; ";")) (declaration "size_t local_50;" (primitive_type "size_t") (identifier "local_50") (; ";")) (declaration "size_t local_4c;" (primitive_type "size_t") (identifier "local_4c") (; ";")) (declaration "uint local_34;" (type_identifier "uint") (identifier "local_34") (; ";")) (declaration "mbstate_t local_30;" (type_identifier "mbstate_t") (identifier "local_30") (; ";")) (declaration "mbstate_t local_28;" (type_identifier "mbstate_t") (identifier "local_28") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x662bb;" (assignment_expression "uStack_14 = 0x662bb" (identifier "uStack_14") (= "=") (number_literal "0x662bb")) (; ";")) (expression_statement "uVar10 = *param_2;" (assignment_expression "uVar10 = *param_2" (identifier "uVar10") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" (identifier "__s") (= "=") (cast_expression "(byte *)(param_1 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar10)" (( "(") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_30.__count = 0;" (assignment_expression "local_30.__count = 0" (field_expression "local_30.__count" (identifier "local_30") (. ".") (field_identifier "__count")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30.__value.__wch = 0;" (assignment_expression "local_30.__value.__wch = 0" (field_expression "local_30.__value.__wch" (field_expression "local_30.__value" (identifier "local_30") (. ".") (field_identifier "__value")) (. ".") (field_identifier "__wch")) (= "=") (number_literal "0")) (; ";")) (expression_statement "sVar4 = strlen((char *)__s);" (assignment_expression "sVar4 = strlen((char *)__s)" (identifier "sVar4") (= "=") (call_expression "strlen((char *)__s)" (identifier "strlen") (argument_list "((char *)__s)" (( "(") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) () ")")))) (; ";")) (expression_statement "uVar5 = sVar4 + uVar10;" (assignment_expression "uVar5 = sVar4 + uVar10" (identifier "uVar5") (= "=") (binary_expression "sVar4 + uVar10" (identifier "sVar4") (+ "+") (identifier "uVar10"))) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (if_statement "if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {\n    local_64 = strlen((char *)param_3);\n  }" (if "if") (parenthesized_expression "(((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0))" (( "(") (binary_expression "((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)" (parenthesized_expression "((*param_3 != 0) && (local_64 = 1, param_3[1] != 0))" (( "(") (binary_expression "(*param_3 != 0) && (local_64 = 1, param_3[1] != 0)" (parenthesized_expression "(*param_3 != 0)" (( "(") (binary_expression "*param_3 != 0" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_64 = 1, param_3[1] != 0)" (( "(") (comma_expression "local_64 = 1, param_3[1] != 0" (assignment_expression "local_64 = 1" (identifier "local_64") (= "=") (number_literal "1")) (, ",") (binary_expression "param_3[1] != 0" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(local_64 = 2, param_3[2] != 0)" (( "(") (comma_expression "local_64 = 2, param_3[2] != 0" (assignment_expression "local_64 = 2" (identifier "local_64") (= "=") (number_literal "2")) (, ",") (binary_expression "param_3[2] != 0" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    local_64 = strlen((char *)param_3);\n  }" ({ "{") (expression_statement "local_64 = strlen((char *)param_3);" (assignment_expression "local_64 = strlen((char *)param_3)" (identifier "local_64") (= "=") (call_expression "strlen((char *)param_3)" (identifier "strlen") (argument_list "((char *)param_3)" (( "(") (cast_expression "(char *)param_3" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_3")) () ")")))) (; ";")) (} "}"))) (if_statement "if (*param_4 == '\0') {\n    local_4c = 0;\n  }\n  else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }" (if "if") (parenthesized_expression "(*param_4 == '\0')" (( "(") (binary_expression "*param_4 == '\0'" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_4c = 0;\n  }" ({ "{") (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }" (else "else") (compound_statement "{\n    local_4c = 1;\n    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }\n  }" ({ "{") (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" (identifier "local_4c") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {\n      local_4c = strlen(param_4);\n    }" (if "if") (parenthesized_expression "((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0'))" (( "(") (binary_expression "(param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')" (parenthesized_expression "(param_4[1] != '\0')" (( "(") (binary_expression "param_4[1] != '\0'" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(local_4c = 2, param_4[2] != '\0')" (( "(") (comma_expression "local_4c = 2, param_4[2] != '\0'" (assignment_expression "local_4c = 2" (identifier "local_4c") (= "=") (number_literal "2")) (, ",") (binary_expression "param_4[2] != '\0'" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n      local_4c = strlen(param_4);\n    }" ({ "{") (expression_statement "local_4c = strlen(param_4);" (assignment_expression "local_4c = strlen(param_4)" (identifier "local_4c") (= "=") (call_expression "strlen(param_4)" (identifier "strlen") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (*param_5 == '\0') {\n    local_50 = 0;\n  }\n  else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }" (if "if") (parenthesized_expression "(*param_5 == '\0')" (( "(") (binary_expression "*param_5 == '\0'" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_50 = 0;\n  }" ({ "{") (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }" (else "else") (compound_statement "{\n    local_50 = 1;\n    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }\n  }" ({ "{") (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" (identifier "local_50") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {\n      local_50 = strlen(param_5);\n    }" (if "if") (parenthesized_expression "((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0'))" (( "(") (binary_expression "(param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')" (parenthesized_expression "(param_5[1] != '\0')" (( "(") (binary_expression "param_5[1] != '\0'" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(local_50 = 2, param_5[2] != '\0')" (( "(") (comma_expression "local_50 = 2, param_5[2] != '\0'" (assignment_expression "local_50 = 2" (identifier "local_50") (= "=") (number_literal "2")) (, ",") (binary_expression "param_5[2] != '\0'" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n      local_50 = strlen(param_5);\n    }" ({ "{") (expression_statement "local_50 = strlen(param_5);" (assignment_expression "local_50 = strlen(param_5)" (identifier "local_50") (= "=") (call_expression "strlen(param_5)" (identifier "strlen") (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (} "}"))) (} "}")))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (labeled_statement "LAB_000663d0:\n  bVar9 = *__s;" (statement_identifier "LAB_000663d0") (: ":") (expression_statement "bVar9 = *__s;" (assignment_expression "bVar9 = *__s" (identifier "bVar9") (= "=") (pointer_expression "*__s" (* "*") (identifier "__s"))) (; ";"))) (expression_statement "iVar7 = local_30.__count;" (assignment_expression "iVar7 = local_30.__count" (identifier "iVar7") (= "=") (field_expression "local_30.__count" (identifier "local_30") (. ".") (field_identifier "__count"))) (; ";")) (expression_statement "_Var3 = local_30.__value;" (assignment_expression "_Var3 = local_30.__value" (identifier "_Var3") (= "=") (field_expression "local_30.__value" (identifier "local_30") (. ".") (field_identifier "__value"))) (; ";")) (do_statement "do {\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  } while( true );" (do "do") (compound_statement "{\n    local_30.__count = iVar7;\n    local_30.__value = _Var3;\n    if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }\n    uVar11 = (uint)(char)bVar9;\n    uVar6 = uVar10;\n    if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }\n    if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }\n    if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }\n    if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n    bVar9 = *__s;\n    iVar7 = local_30.__count;\n    _Var3 = local_30.__value;\n  }" ({ "{") (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" (identifier "local_30") (. ".") (field_identifier "__count")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" (identifier "local_30") (. ".") (field_identifier "__value")) (= "=") (identifier "_Var3")) (; ";")) (if_statement "if (uVar5 < uVar10) {\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }" (if "if") (parenthesized_expression "(uVar5 < uVar10)" (( "(") (binary_expression "uVar5 < uVar10" (identifier "uVar5") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n      uVar6 = uVar5;\n      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;\nLAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;\n      __dest = (char *)0x0;\n      local_34 = iVar7 + 1;\n      if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }\n      *param_2 = uVar5;\n      goto LAB_00066757;\n    }" ({ "{") (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" (identifier "uVar6") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;" (if "if") (parenthesized_expression "(*(char *)(param_1 + uVar5) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + uVar5) == '\0'" (pointer_expression "*(char *)(param_1 + uVar5)" (* "*") (cast_expression "(char *)(param_1 + uVar5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar5)" (( "(") (binary_expression "param_1 + uVar5" (identifier "param_1") (+ "+") (identifier "uVar5")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00066741;" (goto "goto") (statement_identifier "LAB_00066741") (; ";"))) (labeled_statement "LAB_0006651a:\n      iVar7 = (uVar5 - *param_2) - local_50;" (statement_identifier "LAB_0006651a") (: ":") (expression_statement "iVar7 = (uVar5 - *param_2) - local_50;" (assignment_expression "iVar7 = (uVar5 - *param_2) - local_50" (identifier "iVar7") (= "=") (binary_expression "(uVar5 - *param_2) - local_50" (parenthesized_expression "(uVar5 - *param_2)" (( "(") (binary_expression "uVar5 - *param_2" (identifier "uVar5") (- "-") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (- "-") (identifier "local_50"))) (; ";"))) (expression_statement "__dest = (char *)0x0;" (assignment_expression "__dest = (char *)0x0" (identifier "__dest") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_34 = iVar7 + 1;" (assignment_expression "local_34 = iVar7 + 1" (identifier "local_34") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((param_6 & 1) == 0) {\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }" (if "if") (parenthesized_expression "((param_6 & 1) == 0)" (( "(") (binary_expression "(param_6 & 1) == 0" (parenthesized_expression "(param_6 & 1)" (( "(") (binary_expression "param_6 & 1" (identifier "param_6") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        __dest = (char *)xmalloc(iVar7 + 2);\n        strncpy(__dest,(char *)(param_1 + *param_2),local_34);\n        __dest[local_34] = '\0';\n      }" ({ "{") (expression_statement "__dest = (char *)xmalloc(iVar7 + 2);" (assignment_expression "__dest = (char *)xmalloc(iVar7 + 2)" (identifier "__dest") (= "=") (cast_expression "(char *)xmalloc(iVar7 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(iVar7 + 2)" (identifier "xmalloc") (argument_list "(iVar7 + 2)" (( "(") (binary_expression "iVar7 + 2" (identifier "iVar7") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "strncpy(__dest,(char *)(param_1 + *param_2),local_34);" (call_expression "strncpy(__dest,(char *)(param_1 + *param_2),local_34)" (identifier "strncpy") (argument_list "(__dest,(char *)(param_1 + *param_2),local_34)" (( "(") (identifier "__dest") (, ",") (cast_expression "(char *)(param_1 + *param_2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + *param_2)" (( "(") (binary_expression "param_1 + *param_2" (identifier "param_1") (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")"))) (, ",") (identifier "local_34") () ")"))) (; ";")) (expression_statement "__dest[local_34] = '\0';" (assignment_expression "__dest[local_34] = '\0'" (subscript_expression "__dest[local_34]" (identifier "__dest") ([ "[") (identifier "local_34") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}"))) (expression_statement "*param_2 = uVar5;" (assignment_expression "*param_2 = uVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar5")) (; ";")) (goto_statement "goto LAB_00066757;" (goto "goto") (statement_identifier "LAB_00066757") (; ";")) (} "}"))) (expression_statement "uVar11 = (uint)(char)bVar9;" (assignment_expression "uVar11 = (uint)(char)bVar9" (identifier "uVar11") (= "=") (cast_expression "(uint)(char)bVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(char)bVar9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar9")))) (; ";")) (expression_statement "uVar6 = uVar10;" (assignment_expression "uVar6 = uVar10" (identifier "uVar6") (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (uVar11 == 0) {\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }\n      __dest = (char *)0x0;\n      *param_2 = uVar6;\nLAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }\n                    \n      FUN_000ecc40();\n    }" ({ "{") (labeled_statement "LAB_00066741:\n      if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }" (statement_identifier "LAB_00066741") (: ":") (if_statement "if (no_longjmp_on_fatal_error == 0) {\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }" (if "if") (parenthesized_expression "(no_longjmp_on_fatal_error == 0)" (( "(") (binary_expression "no_longjmp_on_fatal_error == 0" (identifier "no_longjmp_on_fatal_error") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        last_command_exit_value = 1;\n        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);\n        report_error(uVar8,param_5,param_1);\n                    \n        FUN_00064460();\n      }" ({ "{") (expression_statement "last_command_exit_value = 1;" (assignment_expression "last_command_exit_value = 1" (identifier "last_command_exit_value") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);" (assignment_expression "uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value)" (identifier "uVar8") (= "=") (call_expression "dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value)" (identifier "dcgettext") (argument_list "(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value)" (( "(") (number_literal "0") (, ",") (string_literal ""bad substitution: no closing `%s\' in %s"" (" """) (string_content "bad substitution: no closing `%s") (escape_sequence "\'") (string_content " in %s") (" """)) (, ",") (number_literal "5") (, ",") (pointer_expression "&last_command_exit_value" (& "&") (identifier "last_command_exit_value")) () ")")))) (; ";")) (expression_statement "report_error(uVar8,param_5,param_1);" (call_expression "report_error(uVar8,param_5,param_1)" (identifier "report_error") (argument_list "(uVar8,param_5,param_1)" (( "(") (identifier "uVar8") (, ",") (identifier "param_5") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "FUN_00064460();" (call_expression "FUN_00064460()" (identifier "FUN_00064460") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "__dest = (char *)0x0;" (assignment_expression "__dest = (char *)0x0" (identifier "__dest") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*param_2 = uVar6;" (assignment_expression "*param_2 = uVar6" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar6")) (; ";")) (labeled_statement "LAB_00066757:\n      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }" (statement_identifier "LAB_00066757") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n        return __dest;\n      }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n        return __dest;\n      }" ({ "{") (return_statement "return __dest;" (return "return") (identifier "__dest") (; ";")) (} "}")))) (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" (identifier "FUN_000ecc40") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (bVar12) {\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }" (if "if") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (compound_statement "{\n      bVar12 = uVar11 != 10;\n      if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      goto LAB_000663d0;\n    }" ({ "{") (expression_statement "bVar12 = uVar11 != 10;" (assignment_expression "bVar12 = uVar11 != 10" (identifier "bVar12") (= "=") (binary_expression "uVar11 != 10" (identifier "uVar11") (!= "!=") (number_literal "10"))) (; ";")) (if_statement "if (locale_mb_cur_max < 2) {\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }\n      else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\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 "{\nLAB_000665f0:\n        uVar10 = uVar10 + 1;\n        __s = (byte *)(param_1 + uVar10);\n      }" ({ "{") (labeled_statement "LAB_000665f0:\n        uVar10 = uVar10 + 1;" (statement_identifier "LAB_000665f0") (: ":") (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" (identifier "__s") (= "=") (cast_expression "(byte *)(param_1 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar10)" (( "(") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }" (else "else") (compound_statement "{\n        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }\n        uVar10 = uVar10 + uVar6;\n        __s = (byte *)(param_1 + uVar10);\n      }" ({ "{") (if_statement "if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }\n        else {\n          uVar6 = 1;\n        }" (if "if") (parenthesized_expression "(((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0)" (( "(") (binary_expression "((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1)" (( "(") (binary_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(&is_basic_table)" (( "(") (pointer_expression "&is_basic_table" (& "&") (identifier "is_basic_table")) () ")"))) ([ "[") (binary_expression "uVar11 >> 5 & 7" (binary_expression "uVar11 >> 5" (identifier "uVar11") (>> ">>") (number_literal "5")) (& "&") (number_literal "7")) (] "]")) (>> ">>") (parenthesized_expression "(bVar9 & 0x1f)" (( "(") (binary_expression "bVar9 & 0x1f" (identifier "bVar9") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }\n          if (uVar6 == 0) goto LAB_000665f0;\n        }" ({ "{") (if_statement "if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }\n          else {\n            uVar6 = (uint)(bVar9 != 0);\n          }" (if "if") (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar9 < '\0'))" (( "(") (binary_expression "(locale_utf8locale == 0) || ((char)bVar9 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" (( "(") (binary_expression "locale_utf8locale == 0" (identifier "locale_utf8locale") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((char)bVar9 < '\0')" (( "(") (binary_expression "(char)bVar9 < '\0'" (cast_expression "(char)bVar9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar9")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }\n          }" ({ "{") (expression_statement "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);" (assignment_expression "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" (identifier "uVar6") (= "=") (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" (identifier "mbrtowc") (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" (( "(") (cast_expression "(wchar_t *)0x0" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) (, ",") (binary_expression "uVar5 - uVar10" (identifier "uVar5") (- "-") (identifier "uVar10")) (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")")))) (; ";")) (if_statement "if (0xfffffffd < uVar6) {\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }" (if "if") (parenthesized_expression "(0xfffffffd < uVar6)" (( "(") (binary_expression "0xfffffffd < uVar6" (number_literal "0xfffffffd") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n              uVar10 = uVar10 + 1;\n              __s = (byte *)(param_1 + uVar10);\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_000663d0;\n            }" ({ "{") (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" (identifier "__s") (= "=") (cast_expression "(byte *)(param_1 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar10)" (( "(") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" (identifier "local_30") (. ".") (field_identifier "__count")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" (identifier "local_30") (. ".") (field_identifier "__value")) (= "=") (identifier "_Var3")) (; ";")) (goto_statement "goto LAB_000663d0;" (goto "goto") (statement_identifier "LAB_000663d0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            uVar6 = (uint)(bVar9 != 0);\n          }" (else "else") (compound_statement "{\n            uVar6 = (uint)(bVar9 != 0);\n          }" ({ "{") (expression_statement "uVar6 = (uint)(bVar9 != 0);" (assignment_expression "uVar6 = (uint)(bVar9 != 0)" (identifier "uVar6") (= "=") (call_expression "(uint)(bVar9 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar9 != 0)" (( "(") (binary_expression "bVar9 != 0" (identifier "bVar9") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar6 == 0) goto LAB_000665f0;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000665f0;" (goto "goto") (statement_identifier "LAB_000665f0") (; ";"))) (} "}")) (else_clause "else {\n          uVar6 = 1;\n        }" (else "else") (compound_statement "{\n          uVar6 = 1;\n        }" ({ "{") (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" (identifier "uVar6") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "uVar10 = uVar10 + uVar6;" (assignment_expression "uVar10 = uVar10 + uVar6" (identifier "uVar10") (= "=") (binary_expression "uVar10 + uVar6" (identifier "uVar10") (+ "+") (identifier "uVar6"))) (; ";")) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" (identifier "__s") (= "=") (cast_expression "(byte *)(param_1 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar10)" (( "(") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_000663d0;" (goto "goto") (statement_identifier "LAB_000663d0") (; ";")) (} "}"))) (if_statement "if (bVar2) {\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n      if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }\n      bVar2 = false;\n      __s = (byte *)(param_1 + uVar10);\n      goto LAB_000663d0;\n    }" ({ "{") (if_statement "if (locale_mb_cur_max < 2) {\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\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 "{\nLAB_0006666c:\n        uVar10 = uVar10 + 1;\n      }" ({ "{") (labeled_statement "LAB_0006666c:\n        uVar10 = uVar10 + 1;" (statement_identifier "LAB_0006666c") (: ":") (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";"))) (} "}")) (else_clause "else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" (else "else") (if_statement "if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" (if "if") (parenthesized_expression "(((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0)" (( "(") (binary_expression "((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1)" (( "(") (binary_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[uVar11 >> 5 & 7]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(&is_basic_table)" (( "(") (pointer_expression "&is_basic_table" (& "&") (identifier "is_basic_table")) () ")"))) ([ "[") (binary_expression "uVar11 >> 5 & 7" (binary_expression "uVar11 >> 5" (identifier "uVar11") (>> ">>") (number_literal "5")) (& "&") (number_literal "7")) (] "]")) (>> ">>") (parenthesized_expression "(bVar9 & 0x1f)" (( "(") (binary_expression "bVar9 & 0x1f" (identifier "bVar9") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_00066668;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }" ({ "{") (if_statement "if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }" (if "if") (parenthesized_expression "((locale_utf8locale != 0) && (-1 < (char)bVar9))" (( "(") (binary_expression "(locale_utf8locale != 0) && (-1 < (char)bVar9)" (parenthesized_expression "(locale_utf8locale != 0)" (( "(") (binary_expression "locale_utf8locale != 0" (identifier "locale_utf8locale") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(-1 < (char)bVar9)" (( "(") (binary_expression "-1 < (char)bVar9" (number_literal "-1") (< "<") (cast_expression "(char)bVar9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar9"))) () ")"))) () ")")) (compound_statement "{\n          uVar6 = (uint)(bVar9 != 0);\nLAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;\n          goto LAB_000666c5;\n        }" ({ "{") (expression_statement "uVar6 = (uint)(bVar9 != 0);" (assignment_expression "uVar6 = (uint)(bVar9 != 0)" (identifier "uVar6") (= "=") (call_expression "(uint)(bVar9 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar9 != 0)" (( "(") (binary_expression "bVar9 != 0" (identifier "bVar9") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (labeled_statement "LAB_00066668:\n          if (uVar6 == 0) goto LAB_0006666c;" (statement_identifier "LAB_00066668") (: ":") (if_statement "if (uVar6 == 0) goto LAB_0006666c;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0006666c;" (goto "goto") (statement_identifier "LAB_0006666c") (; ";")))) (goto_statement "goto LAB_000666c5;" (goto "goto") (statement_identifier "LAB_000666c5") (; ";")) (} "}"))) (expression_statement "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);" (assignment_expression "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" (identifier "uVar6") (= "=") (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" (identifier "mbrtowc") (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" (( "(") (cast_expression "(wchar_t *)0x0" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) (, ",") (binary_expression "uVar5 - uVar10" (identifier "uVar5") (- "-") (identifier "uVar10")) (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")")))) (; ";")) (if_statement "if (uVar6 < 0xfffffffe) goto LAB_00066668;" (if "if") (parenthesized_expression "(uVar6 < 0xfffffffe)" (( "(") (binary_expression "uVar6 < 0xfffffffe" (identifier "uVar6") (< "<") (number_literal "0xfffffffe")) () ")")) (goto_statement "goto LAB_00066668;" (goto "goto") (statement_identifier "LAB_00066668") (; ";"))) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" (identifier "local_30") (. ".") (field_identifier "__count")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" (identifier "local_30") (. ".") (field_identifier "__value")) (= "=") (identifier "_Var3")) (; ";")) (} "}")) (else_clause "else {\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" (else "else") (compound_statement "{\n        uVar6 = 1;\nLAB_000666c5:\n        uVar10 = uVar10 + uVar6;\n      }" ({ "{") (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" (identifier "uVar6") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_000666c5:\n        uVar10 = uVar10 + uVar6;" (statement_identifier "LAB_000666c5") (: ":") (expression_statement "uVar10 = uVar10 + uVar6;" (assignment_expression "uVar10 = uVar10 + uVar6" (identifier "uVar10") (= "=") (binary_expression "uVar10 + uVar6" (identifier "uVar10") (+ "+") (identifier "uVar6"))) (; ";"))) (} "}")))))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" (identifier "__s") (= "=") (cast_expression "(byte *)(param_1 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar10)" (( "(") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (goto_statement "goto LAB_000663d0;" (goto "goto") (statement_identifier "LAB_000663d0") (; ";")) (} "}"))) (if_statement "if ((param_6 & 8) == 0) {\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }\n    else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }" (if "if") (parenthesized_expression "((param_6 & 8) == 0)" (( "(") (binary_expression "(param_6 & 8) == 0" (parenthesized_expression "(param_6 & 8)" (( "(") (binary_expression "param_6 & 8" (identifier "param_6") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\nLAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }\n      uVar6 = uVar11;\n      if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }\n      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }\n      if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }\n      if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }\n      _Var3 = local_30.__value;\n      iVar7 = local_30.__count;\n      if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }\n      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;\n      if (locale_mb_cur_max < 2) goto LAB_000664e0;\n      bVar9 = (byte)uVar6;\n      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }\n    }" ({ "{") (if_statement "if ((uVar11 == 1) || (uVar11 == 0x5c)) {\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }" (if "if") (parenthesized_expression "((uVar11 == 1) || (uVar11 == 0x5c))" (( "(") (binary_expression "(uVar11 == 1) || (uVar11 == 0x5c)" (parenthesized_expression "(uVar11 == 1)" (( "(") (binary_expression "uVar11 == 1" (identifier "uVar11") (== "==") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(uVar11 == 0x5c)" (( "(") (binary_expression "uVar11 == 0x5c" (identifier "uVar11") (== "==") (number_literal "0x5c")) () ")"))) () ")")) (compound_statement "{\nLAB_0006660e:\n        uVar10 = uVar10 + 1;\n        bVar12 = false;\n        bVar2 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }" ({ "{") (labeled_statement "LAB_0006660e:\n        uVar10 = uVar10 + 1;" (statement_identifier "LAB_0006660e") (: ":") (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" (identifier "__s") (= "=") (cast_expression "(byte *)(param_1 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar10)" (( "(") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (goto_statement "goto LAB_000663d0;" (goto "goto") (statement_identifier "LAB_000663d0") (; ";")) (} "}"))) (labeled_statement "LAB_00066431:\n      if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }" (statement_identifier "LAB_00066431") (: ":") (if_statement "if (local_64 == 0) {\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }" (if "if") (parenthesized_expression "(local_64 == 0)" (( "(") (binary_expression "local_64 == 0" (identifier "local_64") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000666fd:\n        local_34 = uVar10 + local_64;\n        FUN_000662b0(param_4,param_5,param_6 | 1);\n        goto LAB_0006672c;\n      }" ({ "{") (labeled_statement "LAB_000666fd:\n        local_34 = uVar10 + local_64;" (statement_identifier "LAB_000666fd") (: ":") (expression_statement "local_34 = uVar10 + local_64;" (assignment_expression "local_34 = uVar10 + local_64" (identifier "local_34") (= "=") (binary_expression "uVar10 + local_64" (identifier "uVar10") (+ "+") (identifier "local_64"))) (; ";"))) (expression_statement "FUN_000662b0(param_4,param_5,param_6 | 1);" (call_expression "FUN_000662b0(param_4,param_5,param_6 | 1)" (identifier "FUN_000662b0") (argument_list "(param_4,param_5,param_6 | 1)" (( "(") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (binary_expression "param_6 | 1" (identifier "param_6") (| "|") (number_literal "1")) () ")"))) (; ";")) (goto_statement "goto LAB_0006672c;" (goto "goto") (statement_identifier "LAB_0006672c") (; ";")) (} "}")))) (expression_statement "uVar6 = uVar11;" (assignment_expression "uVar6 = uVar11" (identifier "uVar6") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if (bVar9 == *param_3) {\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }" (if "if") (parenthesized_expression "(bVar9 == *param_3)" (( "(") (binary_expression "bVar9 == *param_3" (identifier "bVar9") (== "==") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) () ")")) (compound_statement "{\n        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);\n        uVar6 = (uint)bVar9;\n        if (iVar7 == 0) goto LAB_000666fd;\n      }" ({ "{") (expression_statement "iVar7 = strncmp((char *)__s,(char *)param_3,local_64);" (assignment_expression "iVar7 = strncmp((char *)__s,(char *)param_3,local_64)" (identifier "iVar7") (= "=") (call_expression "strncmp((char *)__s,(char *)param_3,local_64)" (identifier "strncmp") (argument_list "((char *)__s,(char *)param_3,local_64)" (( "(") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) (, ",") (cast_expression "(char *)param_3" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_3")) (, ",") (identifier "local_64") () ")")))) (; ";")) (expression_statement "uVar6 = (uint)bVar9;" (assignment_expression "uVar6 = (uint)bVar9" (identifier "uVar6") (= "=") (cast_expression "(uint)bVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar9"))) (; ";")) (if_statement "if (iVar7 == 0) goto LAB_000666fd;" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000666fd;" (goto "goto") (statement_identifier "LAB_000666fd") (; ";"))) (} "}"))) (if_statement "if ((local_4c != 0) && ((char)uVar6 == *param_4)) {\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }" (if "if") (parenthesized_expression "((local_4c != 0) && ((char)uVar6 == *param_4))" (( "(") (binary_expression "(local_4c != 0) && ((char)uVar6 == *param_4)" (parenthesized_expression "(local_4c != 0)" (( "(") (binary_expression "local_4c != 0" (identifier "local_4c") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((char)uVar6 == *param_4)" (( "(") (binary_expression "(char)uVar6 == *param_4" (cast_expression "(char)uVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar6")) (== "==") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) () ")"))) () ")")) (compound_statement "{\n        iVar7 = strncmp((char *)__s,param_4,local_4c);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }\n      }" ({ "{") (expression_statement "iVar7 = strncmp((char *)__s,param_4,local_4c);" (assignment_expression "iVar7 = strncmp((char *)__s,param_4,local_4c)" (identifier "iVar7") (= "=") (call_expression "strncmp((char *)__s,param_4,local_4c)" (identifier "strncmp") (argument_list "((char *)__s,param_4,local_4c)" (( "(") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) (, ",") (identifier "param_4") (, ",") (identifier "local_4c") () ")")))) (; ";")) (expression_statement "uVar6 = uVar6 & 0xff;" (assignment_expression "uVar6 = uVar6 & 0xff" (identifier "uVar6") (= "=") (binary_expression "uVar6 & 0xff" (identifier "uVar6") (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if (iVar7 == 0) {\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          local_34 = uVar10 + local_4c;\n          FUN_000662b0(param_4,param_5,param_6 | 1);\n          uVar6 = uVar5;\n          if (uVar5 <= local_34) goto LAB_00066741;\n          bVar12 = false;\n          uVar10 = local_34;\n          goto LAB_0006666c;\n        }" ({ "{") (expression_statement "local_34 = uVar10 + local_4c;" (assignment_expression "local_34 = uVar10 + local_4c" (identifier "local_34") (= "=") (binary_expression "uVar10 + local_4c" (identifier "uVar10") (+ "+") (identifier "local_4c"))) (; ";")) (expression_statement "FUN_000662b0(param_4,param_5,param_6 | 1);" (call_expression "FUN_000662b0(param_4,param_5,param_6 | 1)" (identifier "FUN_000662b0") (argument_list "(param_4,param_5,param_6 | 1)" (( "(") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (binary_expression "param_6 | 1" (identifier "param_6") (| "|") (number_literal "1")) () ")"))) (; ";")) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" (identifier "uVar6") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (uVar5 <= local_34) goto LAB_00066741;" (if "if") (parenthesized_expression "(uVar5 <= local_34)" (( "(") (binary_expression "uVar5 <= local_34" (identifier "uVar5") (<= "<=") (identifier "local_34")) () ")")) (goto_statement "goto LAB_00066741;" (goto "goto") (statement_identifier "LAB_00066741") (; ";"))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (expression_statement "uVar10 = local_34;" (assignment_expression "uVar10 = local_34" (identifier "uVar10") (= "=") (identifier "local_34")) (; ";")) (goto_statement "goto LAB_0006666c;" (goto "goto") (statement_identifier "LAB_0006666c") (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_50 == 0) {\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }" (if "if") (parenthesized_expression "(local_50 == 0)" (( "(") (binary_expression "local_50 == 0" (identifier "local_50") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;\n        goto LAB_0006651a;\n      }" ({ "{") (labeled_statement "LAB_000668cd:\n        uVar5 = (uVar10 - 1) + local_50;" (statement_identifier "LAB_000668cd") (: ":") (expression_statement "uVar5 = (uVar10 - 1) + local_50;" (assignment_expression "uVar5 = (uVar10 - 1) + local_50" (identifier "uVar5") (= "=") (binary_expression "(uVar10 - 1) + local_50" (parenthesized_expression "(uVar10 - 1)" (( "(") (binary_expression "uVar10 - 1" (identifier "uVar10") (- "-") (number_literal "1")) () ")")) (+ "+") (identifier "local_50"))) (; ";"))) (goto_statement "goto LAB_0006651a;" (goto "goto") (statement_identifier "LAB_0006651a") (; ";")) (} "}"))) (if_statement "if ((char)uVar6 == *param_5) {\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }" (if "if") (parenthesized_expression "((char)uVar6 == *param_5)" (( "(") (binary_expression "(char)uVar6 == *param_5" (cast_expression "(char)uVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar6")) (== "==") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) () ")")) (compound_statement "{\n        iVar7 = strncmp((char *)__s,param_5,local_50);\n        uVar6 = uVar6 & 0xff;\n        if (iVar7 == 0) goto LAB_000668cd;\n      }" ({ "{") (expression_statement "iVar7 = strncmp((char *)__s,param_5,local_50);" (assignment_expression "iVar7 = strncmp((char *)__s,param_5,local_50)" (identifier "iVar7") (= "=") (call_expression "strncmp((char *)__s,param_5,local_50)" (identifier "strncmp") (argument_list "((char *)__s,param_5,local_50)" (( "(") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) (, ",") (identifier "param_5") (, ",") (identifier "local_50") () ")")))) (; ";")) (expression_statement "uVar6 = uVar6 & 0xff;" (assignment_expression "uVar6 = uVar6 & 0xff" (identifier "uVar6") (= "=") (binary_expression "uVar6 & 0xff" (identifier "uVar6") (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if (iVar7 == 0) goto LAB_000668cd;" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000668cd;" (goto "goto") (statement_identifier "LAB_000668cd") (; ";"))) (} "}"))) (expression_statement "_Var3 = local_30.__value;" (assignment_expression "_Var3 = local_30.__value" (identifier "_Var3") (= "=") (field_expression "local_30.__value" (identifier "local_30") (. ".") (field_identifier "__value"))) (; ";")) (expression_statement "iVar7 = local_30.__count;" (assignment_expression "iVar7 = local_30.__count" (identifier "iVar7") (= "=") (field_expression "local_30.__count" (identifier "local_30") (. ".") (field_identifier "__count"))) (; ";")) (if_statement "if (uVar11 == 0x60) {\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }" (if "if") (parenthesized_expression "(uVar11 == 0x60)" (( "(") (binary_expression "uVar11 == 0x60" (identifier "uVar11") (== "==") (number_literal "0x60")) () ")")) (compound_statement "{\n        local_34 = uVar10 + 1;\n        FUN_000671c0(param_6 | 1);\n        goto LAB_0006672c;\n      }" ({ "{") (expression_statement "local_34 = uVar10 + 1;" (assignment_expression "local_34 = uVar10 + 1" (identifier "local_34") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_000671c0(param_6 | 1);" (call_expression "FUN_000671c0(param_6 | 1)" (identifier "FUN_000671c0") (argument_list "(param_6 | 1)" (( "(") (binary_expression "param_6 | 1" (identifier "param_6") (| "|") (number_literal "1")) () ")"))) (; ";")) (goto_statement "goto LAB_0006672c;" (goto "goto") (statement_identifier "LAB_0006672c") (; ";")) (} "}"))) (if_statement "if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;" (if "if") (parenthesized_expression "((uVar11 == 0x27) || (uVar11 == 0x22))" (( "(") (binary_expression "(uVar11 == 0x27) || (uVar11 == 0x22)" (parenthesized_expression "(uVar11 == 0x27)" (( "(") (binary_expression "uVar11 == 0x27" (identifier "uVar11") (== "==") (number_literal "0x27")) () ")")) (|| "||") (parenthesized_expression "(uVar11 == 0x22)" (( "(") (binary_expression "uVar11 == 0x22" (identifier "uVar11") (== "==") (number_literal "0x22")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (locale_mb_cur_max < 2) goto LAB_000664e0;" (if "if") (parenthesized_expression "(locale_mb_cur_max < 2)" (( "(") (binary_expression "locale_mb_cur_max < 2" (identifier "locale_mb_cur_max") (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_000664e0;" (goto "goto") (statement_identifier "LAB_000664e0") (; ";"))) (expression_statement "bVar9 = (byte)uVar6;" (assignment_expression "bVar9 = (byte)uVar6" (identifier "bVar9") (= "=") (cast_expression "(byte)uVar6" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar6"))) (; ";")) (if_statement "if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }\n      else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }" (if "if") (parenthesized_expression "(((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0)" (( "(") (binary_expression "((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1)" (( "(") (binary_expression "(uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[uVar6 >> 5 & 7]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(&is_basic_table)" (( "(") (pointer_expression "&is_basic_table" (& "&") (identifier "is_basic_table")) () ")"))) ([ "[") (binary_expression "uVar6 >> 5 & 7" (binary_expression "uVar6 >> 5" (identifier "uVar6") (>> ">>") (number_literal "5")) (& "&") (number_literal "7")) (] "]")) (>> ">>") (parenthesized_expression "(bVar9 & 0x1f)" (( "(") (binary_expression "bVar9 & 0x1f" (identifier "bVar9") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }\n        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n        if (uVar6 < 0xfffffffe) goto LAB_000664d4;\n        uVar10 = uVar10 + 1;\n        local_30.__count = iVar7;\n        local_30.__value = _Var3;\n      }" ({ "{") (if_statement "if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }" (if "if") (parenthesized_expression "((locale_utf8locale != 0) && (-1 < (char)bVar9))" (( "(") (binary_expression "(locale_utf8locale != 0) && (-1 < (char)bVar9)" (parenthesized_expression "(locale_utf8locale != 0)" (( "(") (binary_expression "locale_utf8locale != 0" (identifier "locale_utf8locale") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(-1 < (char)bVar9)" (( "(") (binary_expression "-1 < (char)bVar9" (number_literal "-1") (< "<") (cast_expression "(char)bVar9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar9"))) () ")"))) () ")")) (compound_statement "{\n          uVar6 = (uint)(bVar9 != 0);\nLAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;\n          goto LAB_00066935;\n        }" ({ "{") (expression_statement "uVar6 = (uint)(bVar9 != 0);" (assignment_expression "uVar6 = (uint)(bVar9 != 0)" (identifier "uVar6") (= "=") (call_expression "(uint)(bVar9 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar9 != 0)" (( "(") (binary_expression "bVar9 != 0" (identifier "bVar9") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (labeled_statement "LAB_000664d4:\n          if (uVar6 == 0) goto LAB_000664e0;" (statement_identifier "LAB_000664d4") (: ":") (if_statement "if (uVar6 == 0) goto LAB_000664e0;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000664e0;" (goto "goto") (statement_identifier "LAB_000664e0") (; ";")))) (goto_statement "goto LAB_00066935;" (goto "goto") (statement_identifier "LAB_00066935") (; ";")) (} "}"))) (expression_statement "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);" (assignment_expression "uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" (identifier "uVar6") (= "=") (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" (identifier "mbrtowc") (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" (( "(") (cast_expression "(wchar_t *)0x0" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) (, ",") (binary_expression "uVar5 - uVar10" (identifier "uVar5") (- "-") (identifier "uVar10")) (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")")))) (; ";")) (if_statement "if (uVar6 < 0xfffffffe) goto LAB_000664d4;" (if "if") (parenthesized_expression "(uVar6 < 0xfffffffe)" (( "(") (binary_expression "uVar6 < 0xfffffffe" (identifier "uVar6") (< "<") (number_literal "0xfffffffe")) () ")")) (goto_statement "goto LAB_000664d4;" (goto "goto") (statement_identifier "LAB_000664d4") (; ";"))) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" (identifier "local_30") (. ".") (field_identifier "__count")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" (identifier "local_30") (. ".") (field_identifier "__value")) (= "=") (identifier "_Var3")) (; ";")) (} "}")) (else_clause "else {\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }" (else "else") (compound_statement "{\n        uVar6 = 1;\nLAB_00066935:\n        uVar10 = uVar10 + uVar6;\n      }" ({ "{") (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" (identifier "uVar6") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_00066935:\n        uVar10 = uVar10 + uVar6;" (statement_identifier "LAB_00066935") (: ":") (expression_statement "uVar10 = uVar10 + uVar6;" (assignment_expression "uVar10 = uVar10 + uVar6" (identifier "uVar10") (= "=") (binary_expression "uVar10 + uVar6" (identifier "uVar10") (+ "+") (identifier "uVar6"))) (; ";"))) (} "}")))) (} "}")) (else_clause "else {\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }" (else "else") (compound_statement "{\n      if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }\n      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;\n      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;\n      local_34 = uVar10 + 2;\n      extract_command_subst(param_1,&local_34,param_6 | 1);\nLAB_0006672c:\n      uVar6 = uVar5;\n      uVar10 = local_34;\n      if (uVar5 <= local_34) goto LAB_00066741;\nLAB_000664e0:\n      uVar10 = uVar10 + 1;\n    }" ({ "{") (if_statement "if (uVar11 == 0x23) {\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }" (if "if") (parenthesized_expression "(uVar11 == 0x23)" (( "(") (binary_expression "uVar11 == 0x23" (identifier "uVar11") (== "==") (number_literal "0x23")) () ")")) (compound_statement "{\n        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;\n        if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }\nLAB_0006680a:\n        bVar12 = true;\n        __s = (byte *)(param_1 + uVar10);\n        goto LAB_000663d0;\n      }" ({ "{") (if_statement "if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;" (if "if") (parenthesized_expression "(((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0))" (( "(") (binary_expression "((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&\n           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)" (parenthesized_expression "((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10))" (( "(") (binary_expression "(uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)" (parenthesized_expression "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)" (( "(") (comma_expression "bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10" (assignment_expression "bVar1 = *(byte *)(param_1 + -1 + uVar10)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + -1 + uVar10)" (* "*") (cast_expression "(byte *)(param_1 + -1 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + -1 + uVar10)" (( "(") (binary_expression "param_1 + -1 + uVar10" (binary_expression "param_1 + -1" (identifier "param_1") (+ "+") (number_literal "-1")) (+ "+") (identifier "uVar10")) () ")"))))) (, ",") (binary_expression "bVar1 != 10" (identifier "bVar1") (!= "!=") (number_literal "10"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20)" (( "(") (binary_expression "*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20" (pointer_expression "*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1)" (* "*") (cast_expression "(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1)" (( "(") (binary_expression "(int)&sh_syntaxtab + (uint)bVar1 * 4 + 1" (binary_expression "(int)&sh_syntaxtab + (uint)bVar1 * 4" (cast_expression "(int)&sh_syntaxtab" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&sh_syntaxtab" (& "&") (identifier "sh_syntaxtab"))) (+ "+") (binary_expression "(uint)bVar1 * 4" (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (* "*") (number_literal "4"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00066431;" (goto "goto") (statement_identifier "LAB_00066431") (; ";"))) (if_statement "if (locale_mb_cur_max < 2) {\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }\n        else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\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 "{\nLAB_00066807:\n          uVar10 = uVar10 + 1;\n        }" ({ "{") (labeled_statement "LAB_00066807:\n          uVar10 = uVar10 + 1;" (statement_identifier "LAB_00066807") (: ":") (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";"))) (} "}")) (else_clause "else {\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }" (else "else") (compound_statement "{\n          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }\n          uVar10 = uVar10 + sVar4;\n        }" ({ "{") (if_statement "if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }\n          else {\n            sVar4 = 1;\n          }" (if "if") (parenthesized_expression "((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0)" (( "(") (binary_expression "(DAT_001051c4 & 8) == 0 && locale_utf8locale == 0" (binary_expression "(DAT_001051c4 & 8) == 0" (parenthesized_expression "(DAT_001051c4 & 8)" (( "(") (binary_expression "DAT_001051c4 & 8" (identifier "DAT_001051c4") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "locale_utf8locale == 0" (identifier "locale_utf8locale") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);\n            if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }\n            if (sVar4 == 0) goto LAB_00066807;\n          }" ({ "{") (expression_statement "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);" (assignment_expression "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" (identifier "sVar4") (= "=") (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" (identifier "mbrtowc") (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30)" (( "(") (cast_expression "(wchar_t *)0x0" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) (, ",") (binary_expression "uVar5 - uVar10" (identifier "uVar5") (- "-") (identifier "uVar10")) (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")")))) (; ";")) (if_statement "if (0xfffffffd < sVar4) {\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }" (if "if") (parenthesized_expression "(0xfffffffd < sVar4)" (( "(") (binary_expression "0xfffffffd < sVar4" (number_literal "0xfffffffd") (< "<") (identifier "sVar4")) () ")")) (compound_statement "{\n              uVar10 = uVar10 + 1;\n              local_30.__count = iVar7;\n              local_30.__value = _Var3;\n              goto LAB_0006680a;\n            }" ({ "{") (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_30.__count = iVar7;" (assignment_expression "local_30.__count = iVar7" (field_expression "local_30.__count" (identifier "local_30") (. ".") (field_identifier "__count")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "local_30.__value = _Var3;" (assignment_expression "local_30.__value = _Var3" (field_expression "local_30.__value" (identifier "local_30") (. ".") (field_identifier "__value")) (= "=") (identifier "_Var3")) (; ";")) (goto_statement "goto LAB_0006680a;" (goto "goto") (statement_identifier "LAB_0006680a") (; ";")) (} "}"))) (if_statement "if (sVar4 == 0) goto LAB_00066807;" (if "if") (parenthesized_expression "(sVar4 == 0)" (( "(") (binary_expression "sVar4 == 0" (identifier "sVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00066807;" (goto "goto") (statement_identifier "LAB_00066807") (; ";"))) (} "}")) (else_clause "else {\n            sVar4 = 1;\n          }" (else "else") (compound_statement "{\n            sVar4 = 1;\n          }" ({ "{") (expression_statement "sVar4 = 1;" (assignment_expression "sVar4 = 1" (identifier "sVar4") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "uVar10 = uVar10 + sVar4;" (assignment_expression "uVar10 = uVar10 + sVar4" (identifier "uVar10") (= "=") (binary_expression "uVar10 + sVar4" (identifier "uVar10") (+ "+") (identifier "sVar4"))) (; ";")) (} "}")))) (labeled_statement "LAB_0006680a:\n        bVar12 = true;" (statement_identifier "LAB_0006680a") (: ":") (expression_statement "bVar12 = true;" (assignment_expression "bVar12 = true" (identifier "bVar12") (= "=") (true "true")) (; ";"))) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" (identifier "__s") (= "=") (cast_expression "(byte *)(param_1 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar10)" (( "(") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (goto_statement "goto LAB_000663d0;" (goto "goto") (statement_identifier "LAB_000663d0") (; ";")) (} "}"))) (if_statement "if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;" (if "if") (parenthesized_expression "((uVar11 == 1) || (uVar11 == 0x5c))" (( "(") (binary_expression "(uVar11 == 1) || (uVar11 == 0x5c)" (parenthesized_expression "(uVar11 == 1)" (( "(") (binary_expression "uVar11 == 1" (identifier "uVar11") (== "==") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(uVar11 == 0x5c)" (( "(") (binary_expression "uVar11 == 0x5c" (identifier "uVar11") (== "==") (number_literal "0x5c")) () ")"))) () ")")) (goto_statement "goto LAB_0006660e;" (goto "goto") (statement_identifier "LAB_0006660e") (; ";"))) (if_statement "if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;" (if "if") (parenthesized_expression "((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '('))" (( "(") (binary_expression "(bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')" (parenthesized_expression "(bVar9 != 0x24)" (( "(") (binary_expression "bVar9 != 0x24" (identifier "bVar9") (!= "!=") (number_literal "0x24")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(param_1 + 1 + uVar10) != '(')" (( "(") (binary_expression "*(char *)(param_1 + 1 + uVar10) != '('" (pointer_expression "*(char *)(param_1 + 1 + uVar10)" (* "*") (cast_expression "(char *)(param_1 + 1 + uVar10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1 + uVar10)" (( "(") (binary_expression "param_1 + 1 + uVar10" (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar10")) () ")")))) (!= "!=") (char_literal "'('" (' "'") (character "(") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_00066431;" (goto "goto") (statement_identifier "LAB_00066431") (; ";"))) (expression_statement "local_34 = uVar10 + 2;" (assignment_expression "local_34 = uVar10 + 2" (identifier "local_34") (= "=") (binary_expression "uVar10 + 2" (identifier "uVar10") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "extract_command_subst(param_1,&local_34,param_6 | 1);" (call_expression "extract_command_subst(param_1,&local_34,param_6 | 1)" (identifier "extract_command_subst") (argument_list "(param_1,&local_34,param_6 | 1)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (binary_expression "param_6 | 1" (identifier "param_6") (| "|") (number_literal "1")) () ")"))) (; ";")) (labeled_statement "LAB_0006672c:\n      uVar6 = uVar5;" (statement_identifier "LAB_0006672c") (: ":") (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" (identifier "uVar6") (= "=") (identifier "uVar5")) (; ";"))) (expression_statement "uVar10 = local_34;" (assignment_expression "uVar10 = local_34" (identifier "uVar10") (= "=") (identifier "local_34")) (; ";")) (if_statement "if (uVar5 <= local_34) goto LAB_00066741;" (if "if") (parenthesized_expression "(uVar5 <= local_34)" (( "(") (binary_expression "uVar5 <= local_34" (identifier "uVar5") (<= "<=") (identifier "local_34")) () ")")) (goto_statement "goto LAB_00066741;" (goto "goto") (statement_identifier "LAB_00066741") (; ";"))) (labeled_statement "LAB_000664e0:\n      uVar10 = uVar10 + 1;" (statement_identifier "LAB_000664e0") (: ":") (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";"))) (} "}")))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" (identifier "__s") (= "=") (cast_expression "(byte *)(param_1 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar10)" (( "(") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (expression_statement "bVar9 = *__s;" (assignment_expression "bVar9 = *__s" (identifier "bVar9") (= "=") (pointer_expression "*__s" (* "*") (identifier "__s"))) (; ";")) (expression_statement "iVar7 = local_30.__count;" (assignment_expression "iVar7 = local_30.__count" (identifier "iVar7") (= "=") (field_expression "local_30.__count" (identifier "local_30") (. ".") (field_identifier "__count"))) (; ";")) (expression_statement "_Var3 = local_30.__value;" (assignment_expression "_Var3 = local_30.__value" (identifier "_Var3") (= "=") (field_expression "local_30.__value" (identifier "local_30") (. ".") (field_identifier "__value"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_34 = uVar10;" (assignment_expression "local_34 = uVar10" (identifier "local_34") (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (uVar11 == 0x27) {\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }\n  else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }" (if "if") (parenthesized_expression "(uVar11 == 0x27)" (( "(") (binary_expression "uVar11 == 0x27" (identifier "uVar11") (== "==") (number_literal "0x27")) () ")")) (compound_statement "{\n    local_28.__count = 0;\n    local_28.__value.__wch = 0;\n    while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }\n    if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }\n    bVar12 = false;\n  }" ({ "{") (expression_statement "local_28.__count = 0;" (assignment_expression "local_28.__count = 0" (field_expression "local_28.__count" (identifier "local_28") (. ".") (field_identifier "__count")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28.__value.__wch = 0;" (assignment_expression "local_28.__value.__wch = 0" (field_expression "local_28.__value.__wch" (field_expression "local_28.__value" (identifier "local_28") (. ".") (field_identifier "__value")) (. ".") (field_identifier "__wch")) (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      _Var3 = local_28.__value;\n      iVar7 = local_28.__count;\n      __s = (byte *)(param_1 + uVar10);\n      bVar9 = *__s;\n      if ((bVar9 == 0) || (bVar9 == 0x27)) break;\n      if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }\n    }" ({ "{") (expression_statement "_Var3 = local_28.__value;" (assignment_expression "_Var3 = local_28.__value" (identifier "_Var3") (= "=") (field_expression "local_28.__value" (identifier "local_28") (. ".") (field_identifier "__value"))) (; ";")) (expression_statement "iVar7 = local_28.__count;" (assignment_expression "iVar7 = local_28.__count" (identifier "iVar7") (= "=") (field_expression "local_28.__count" (identifier "local_28") (. ".") (field_identifier "__count"))) (; ";")) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" (identifier "__s") (= "=") (cast_expression "(byte *)(param_1 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar10)" (( "(") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (expression_statement "bVar9 = *__s;" (assignment_expression "bVar9 = *__s" (identifier "bVar9") (= "=") (pointer_expression "*__s" (* "*") (identifier "__s"))) (; ";")) (if_statement "if ((bVar9 == 0) || (bVar9 == 0x27)) break;" (if "if") (parenthesized_expression "((bVar9 == 0) || (bVar9 == 0x27))" (( "(") (binary_expression "(bVar9 == 0) || (bVar9 == 0x27)" (parenthesized_expression "(bVar9 == 0)" (( "(") (binary_expression "bVar9 == 0" (identifier "bVar9") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar9 == 0x27)" (( "(") (binary_expression "bVar9 == 0x27" (identifier "bVar9") (== "==") (number_literal "0x27")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (locale_mb_cur_max < 2) {\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }\n      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\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 "{\nLAB_00066a70:\n        uVar10 = uVar10 + 1;\n      }" ({ "{") (labeled_statement "LAB_00066a70:\n        uVar10 = uVar10 + 1;" (statement_identifier "LAB_00066a70") (: ":") (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";"))) (} "}")) (else_clause "else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" (else "else") (if_statement "if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }\n      else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" (if "if") (parenthesized_expression "(((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0)" (( "(") (binary_expression "((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0" (parenthesized_expression "((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1)" (( "(") (binary_expression "(uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1" (binary_expression "(uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f)" (subscript_expression "(uint)(&is_basic_table)[bVar9 >> 5]" (call_expression "(uint)(&is_basic_table)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(&is_basic_table)" (( "(") (pointer_expression "&is_basic_table" (& "&") (identifier "is_basic_table")) () ")"))) ([ "[") (binary_expression "bVar9 >> 5" (identifier "bVar9") (>> ">>") (number_literal "5")) (] "]")) (>> ">>") (parenthesized_expression "(bVar9 & 0x1f)" (( "(") (binary_expression "bVar9 & 0x1f" (identifier "bVar9") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }\n      }" ({ "{") (if_statement "if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }\n        else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }" (if "if") (parenthesized_expression "((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0'))" (( "(") (binary_expression "(locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" (( "(") (binary_expression "locale_utf8locale == 0" (identifier "locale_utf8locale") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(sVar4 = 1, (char)bVar9 < '\0')" (( "(") (comma_expression "sVar4 = 1, (char)bVar9 < '\0'" (assignment_expression "sVar4 = 1" (identifier "sVar4") (= "=") (number_literal "1")) (, ",") (binary_expression "(char)bVar9 < '\0'" (cast_expression "(char)bVar9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar9")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);\n          if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }\n          uVar10 = uVar10 + 1;\n          local_28.__count = iVar7;\n          local_28.__value = _Var3;\n        }" ({ "{") (expression_statement "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);" (assignment_expression "sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28)" (identifier "sVar4") (= "=") (call_expression "mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28)" (identifier "mbrtowc") (argument_list "((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28)" (( "(") (cast_expression "(wchar_t *)0x0" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) (, ",") (binary_expression "uVar5 - uVar10" (identifier "uVar5") (- "-") (identifier "uVar10")) (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (if_statement "if (sVar4 < 0xfffffffe) {\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }" (if "if") (parenthesized_expression "(sVar4 < 0xfffffffe)" (( "(") (binary_expression "sVar4 < 0xfffffffe" (identifier "sVar4") (< "<") (number_literal "0xfffffffe")) () ")")) (compound_statement "{\n            if (sVar4 == 0) goto LAB_00066a70;\n            goto LAB_000669de;\n          }" ({ "{") (if_statement "if (sVar4 == 0) goto LAB_00066a70;" (if "if") (parenthesized_expression "(sVar4 == 0)" (( "(") (binary_expression "sVar4 == 0" (identifier "sVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00066a70;" (goto "goto") (statement_identifier "LAB_00066a70") (; ";"))) (goto_statement "goto LAB_000669de;" (goto "goto") (statement_identifier "LAB_000669de") (; ";")) (} "}"))) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_28.__count = iVar7;" (assignment_expression "local_28.__count = iVar7" (field_expression "local_28.__count" (identifier "local_28") (. ".") (field_identifier "__count")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "local_28.__value = _Var3;" (assignment_expression "local_28.__value = _Var3" (field_expression "local_28.__value" (identifier "local_28") (. ".") (field_identifier "__value")) (= "=") (identifier "_Var3")) (; ";")) (} "}")) (else_clause "else {\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }" (else "else") (compound_statement "{\nLAB_000669de:\n          uVar10 = uVar10 + sVar4;\n        }" ({ "{") (labeled_statement "LAB_000669de:\n          uVar10 = uVar10 + sVar4;" (statement_identifier "LAB_000669de") (: ":") (expression_statement "uVar10 = uVar10 + sVar4;" (assignment_expression "uVar10 = uVar10 + sVar4" (identifier "uVar10") (= "=") (binary_expression "uVar10 + sVar4" (identifier "uVar10") (+ "+") (identifier "sVar4"))) (; ";"))) (} "}")))) (} "}")) (else_clause "else {\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" (else "else") (compound_statement "{\n        uVar10 = uVar10 + 1;\n        local_28.__count = iVar7;\n        local_28.__value = _Var3;\n      }" ({ "{") (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_28.__count = iVar7;" (assignment_expression "local_28.__count = iVar7" (field_expression "local_28.__count" (identifier "local_28") (. ".") (field_identifier "__count")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "local_28.__value = _Var3;" (assignment_expression "local_28.__value = _Var3" (field_expression "local_28.__value" (identifier "local_28") (. ".") (field_identifier "__value")) (= "=") (identifier "_Var3")) (; ";")) (} "}")))))) (} "}"))) (if_statement "if (bVar9 != 0) {\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }" (if "if") (parenthesized_expression "(bVar9 != 0)" (( "(") (binary_expression "bVar9 != 0" (identifier "bVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar10 = uVar10 + 1;\n      __s = (byte *)(param_1 + uVar10);\n    }" ({ "{") (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" (identifier "__s") (= "=") (cast_expression "(byte *)(param_1 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar10)" (( "(") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (} "}"))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }" (else "else") (compound_statement "{\n    uVar10 = FUN_00067c30(0);\n    bVar12 = false;\n    __s = (byte *)(param_1 + uVar10);\n  }" ({ "{") (expression_statement "uVar10 = FUN_00067c30(0);" (assignment_expression "uVar10 = FUN_00067c30(0)" (identifier "uVar10") (= "=") (call_expression "FUN_00067c30(0)" (identifier "FUN_00067c30") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (expression_statement "__s = (byte *)(param_1 + uVar10);" (assignment_expression "__s = (byte *)(param_1 + uVar10)" (identifier "__s") (= "=") (cast_expression "(byte *)(param_1 + uVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + uVar10)" (( "(") (binary_expression "param_1 + uVar10" (identifier "param_1") (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_000663d0;" (goto "goto") (statement_identifier "LAB_000663d0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * __regparm3
function_1
          (char *var_1,int *sindex,char *opener,char *alt_opener,char *closer,int var_9)

{
  int var_17;
  bool bVar2;
  type_1 aVar3;
  size_t var_5;
  type_2 var_6;
  type_2 var_23;
  int var_8;
  type_3 var_20;
  type_3 *__s;
  type_2 var_2;
  char *pcVar8;
  type_2 var_12;
  int var_3;
  bool bVar10;
  size_t var_24;
  size_t var_7;
  size_t var_26;
  int si;
  type_4 state;
  type_4 state_1;
  
  var_2 = *sindex;
  __s = (type_3 *)(var_1 + var_2);
  var_17 = *(int *)(var_3 + 0x14);
  state.__count = 0;
  state.__value.__wch = 0;
  var_5 = var_4((char *)__s);
  var_6 = var_5 + var_2;
  var_24 = 0;
  if (((*opener != '\0') && (var_24 = 1, opener[1] != '\0')) && (var_24 = 2, opener[2] != '\0'))
  {
    var_24 = var_4(opener);
  }
  if (*alt_opener == '\0') {
    var_26 = 0;
  }
  else {
    var_26 = 1;
    if ((alt_opener[1] != '\0') && (var_26 = 2, alt_opener[2] != '\0')) {
      var_26 = var_4(alt_opener);
    }
  }
  if (*closer == '\0') {
    var_7 = 0;
  }
  else {
    var_7 = 1;
    if ((closer[1] != '\0') && (var_7 = 2, closer[2] != '\0')) {
      var_7 = var_4(closer);
    }
  }
  bVar2 = false;
  bVar10 = false;
LAB_000663d0:
  var_20 = *__s;
  var_8 = state.__count;
  aVar3 = state.__value;
  do {
    state.__count = var_8;
    state.__value = aVar3;
    if (var_6 < var_2) {
      var_23 = var_6;
      if (var_1[var_6] == '\0') goto LAB_00066741;
LAB_0006651a:
      var_8 = (var_6 - *sindex) - var_7;
      pcVar8 = (char *)0x0;
      si = var_8 + 1;
      if ((var_9 & 1U) == 0) {
        pcVar8 = (char *)var_10(var_8 + 2);
        var_11(pcVar8,var_1 + *sindex,si);
        pcVar8[si] = '\0';
      }
      *sindex = var_6;
      goto LAB_00066757;
    }
    var_12 = (type_2)(char)var_20;
    var_23 = var_2;
    if (var_12 == 0) {
LAB_00066741:
      if (var_13 == 0) {
        last_command_exit_value = 1;
        pcVar8 = (char *)var_14(0,"bad substitution: no closing `%s\' in %s",5,
                                   &last_command_exit_value);
        var_15(pcVar8,closer,var_1);
                    /* WARNING: Subroutine does not return */
        var_16(2);
      }
      pcVar8 = (char *)0x0;
      *sindex = var_23;
LAB_00066757:
      if (var_17 == *(int *)(var_3 + 0x14)) {
        return pcVar8;
      }
                    /* WARNING: Subroutine does not return */
      var_18();
    }
    if (bVar10) {
      bVar10 = var_12 != 10;
      if (var_19 < 2) {
LAB_000665f0:
        var_2 = var_2 + 1;
        __s = (type_3 *)(var_1 + var_2);
      }
      else {
        if (((type_2)(&is_basic_table)[var_12 >> 5 & 7] >> (var_20 & 0x1f) & 1) == 0) {
          if ((var_21 == 0) || ((char)var_20 < '\0')) {
            var_23 = var_22((type_5 *)0x0,(char *)__s,var_6 - var_2,(type_4 *)&state);
            if (0xfffffffd < var_23) {
              var_2 = var_2 + 1;
              __s = (type_3 *)(var_1 + var_2);
              state.__count = var_8;
              state.__value = aVar3;
              goto LAB_000663d0;
            }
          }
          else {
            var_23 = (type_2)(var_20 != 0);
          }
          if (var_23 == 0) goto LAB_000665f0;
        }
        else {
          var_23 = 1;
        }
        var_2 = var_2 + var_23;
        __s = (type_3 *)(var_1 + var_2);
      }
      goto LAB_000663d0;
    }
    if (bVar2) {
      if (var_19 < 2) {
LAB_0006666c:
        var_2 = var_2 + 1;
      }
      else if (((type_2)(&is_basic_table)[var_12 >> 5 & 7] >> (var_20 & 0x1f) & 1) == 0) {
        if ((var_21 != 0) && (-1 < (char)var_20)) {
          var_23 = (type_2)(var_20 != 0);
LAB_00066668:
          if (var_23 == 0) goto LAB_0006666c;
          goto LAB_000666c5;
        }
        var_23 = var_22((type_5 *)0x0,(char *)__s,var_6 - var_2,(type_4 *)&state);
        if (var_23 < 0xfffffffe) goto LAB_00066668;
        var_2 = var_2 + 1;
        state.__count = var_8;
        state.__value = aVar3;
      }
      else {
        var_23 = 1;
LAB_000666c5:
        var_2 = var_2 + var_23;
      }
      bVar2 = false;
      __s = (type_3 *)(var_1 + var_2);
      goto LAB_000663d0;
    }
    if ((var_9 & 8U) == 0) {
      if ((var_12 == 1) || (var_12 == 0x5c)) {
LAB_0006660e:
        var_2 = var_2 + 1;
        bVar10 = false;
        bVar2 = true;
        __s = (type_3 *)(var_1 + var_2);
        goto LAB_000663d0;
      }
LAB_00066431:
      if (var_24 == 0) {
LAB_000666fd:
        si = var_2 + var_24;
        function_1(var_1,&si,opener,alt_opener,closer,var_9 | 1);
        goto LAB_0006672c;
      }
      var_23 = var_12;
      if (var_20 == *opener) {
        var_8 = var_25((char *)__s,opener,var_24);
        var_23 = (type_2)var_20;
        if (var_8 == 0) goto LAB_000666fd;
      }
      if ((var_26 != 0) && ((char)var_23 == *alt_opener)) {
        var_8 = var_25((char *)__s,alt_opener,var_26);
        var_23 = var_23 & 0xff;
        if (var_8 == 0) {
          si = var_2 + var_26;
          function_1(var_1,&si,alt_opener,alt_opener,closer,var_9 | 1);
          var_23 = var_6;
          if (var_6 <= (type_2)si) goto LAB_00066741;
          bVar10 = false;
          var_2 = si;
          goto LAB_0006666c;
        }
      }
      if (var_7 == 0) {
LAB_000668cd:
        var_6 = (var_2 - 1) + var_7;
        goto LAB_0006651a;
      }
      if ((char)var_23 == *closer) {
        var_8 = var_25((char *)__s,closer,var_7);
        var_23 = var_23 & 0xff;
        if (var_8 == 0) goto LAB_000668cd;
      }
      aVar3 = state.__value;
      var_8 = state.__count;
      if (var_12 == 0x60) {
        si = var_2 + 1;
        var_27(var_1,&si,"`",var_9 | 1);
        goto LAB_0006672c;
      }
      if ((var_12 == 0x27) || (var_12 == 0x22)) break;
      if (var_19 < 2) goto LAB_000664e0;
      var_20 = (type_3)var_23;
      if (((type_2)(&is_basic_table)[var_23 >> 5 & 7] >> (var_20 & 0x1f) & 1) == 0) {
        if ((var_21 != 0) && (-1 < (char)var_20)) {
          var_23 = (type_2)(var_20 != 0);
LAB_000664d4:
          if (var_23 == 0) goto LAB_000664e0;
          goto LAB_00066935;
        }
        var_23 = var_22((type_5 *)0x0,(char *)__s,var_6 - var_2,(type_4 *)&state);
        if (var_23 < 0xfffffffe) goto LAB_000664d4;
        var_2 = var_2 + 1;
        state.__count = var_8;
        state.__value = aVar3;
      }
      else {
        var_23 = 1;
LAB_00066935:
        var_2 = var_2 + var_23;
      }
    }
    else {
      if (var_12 == 0x23) {
        if (((var_2 != 0) && (var_1[var_2 - 1] != 10)) &&
           ((*(type_3 *)((int)&sh_syntaxtab + (type_2)(type_3)var_1[var_2 - 1] * 4 + 1) & 0x20) == 0))
        goto LAB_00066431;
        if (var_19 < 2) {
LAB_00066807:
          var_2 = var_2 + 1;
        }
        else {
          if ((var_28 & 8) == 0 && var_21 == 0) {
            var_5 = var_22((type_5 *)0x0,(char *)__s,var_6 - var_2,(type_4 *)&state);
            if (0xfffffffd < var_5) {
              var_2 = var_2 + 1;
              state.__count = var_8;
              state.__value = aVar3;
              goto LAB_0006680a;
            }
            if (var_5 == 0) goto LAB_00066807;
          }
          else {
            var_5 = 1;
          }
          var_2 = var_2 + var_5;
        }
LAB_0006680a:
        bVar10 = true;
        __s = (type_3 *)(var_1 + var_2);
        goto LAB_000663d0;
      }
      if ((var_12 == 1) || (var_12 == 0x5c)) goto LAB_0006660e;
      if ((var_20 != 0x24) || (var_1[var_2 + 1] != '(')) goto LAB_00066431;
      si = var_2 + 2;
      var_29(var_1,&si,var_9 | 1);
LAB_0006672c:
      var_23 = var_6;
      var_2 = si;
      if (var_6 <= (type_2)si) goto LAB_00066741;
LAB_000664e0:
      var_2 = var_2 + 1;
    }
    bVar10 = false;
    __s = (type_3 *)(var_1 + var_2);
    var_20 = *__s;
    var_8 = state.__count;
    aVar3 = state.__value;
  } while( true );
  var_2 = var_2 + 1;
  si = var_2;
  if (var_12 == 0x27) {
    state_1.__count = 0;
    state_1.__value.__wch = 0;
    while( true ) {
      aVar3 = state_1.__value;
      var_8 = state_1.__count;
      __s = (type_3 *)(var_1 + var_2);
      var_20 = *__s;
      if ((var_20 == 0) || (var_20 == 0x27)) break;
      if (var_19 < 2) {
LAB_00066a70:
        var_2 = var_2 + 1;
      }
      else if (((type_2)(&is_basic_table)[var_20 >> 5] >> (var_20 & 0x1f) & 1) == 0) {
        if ((var_21 == 0) || (var_5 = 1, (char)var_20 < '\0')) {
          var_5 = var_22((type_5 *)0x0,(char *)__s,var_6 - var_2,(type_4 *)&state_1);
          if (var_5 < 0xfffffffe) {
            if (var_5 == 0) goto LAB_00066a70;
            goto LAB_000669de;
          }
          var_2 = var_2 + 1;
          state_1.__count = var_8;
          state_1.__value = aVar3;
        }
        else {
LAB_000669de:
          var_2 = var_2 + var_5;
        }
      }
      else {
        var_2 = var_2 + 1;
        state_1.__count = var_8;
        state_1.__value = aVar3;
      }
    }
    if (var_20 != 0) {
      var_2 = var_2 + 1;
      __s = (type_3 *)(var_1 + var_2);
    }
    bVar10 = false;
  }
  else {
    var_2 = var_30(var_1,var_6,var_2,0);
    bVar10 = false;
    __s = (type_3 *)(var_1 + var_2);
  }
  goto LAB_000663d0;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * __regparm3
MASKED(int param_1,uint *param_2,byte *param_3,char *param_4,char *param_5,uint param_6)

{
  byte bVar1;
  bool bVar2;
  _union_54 _Var3;
  size_t sVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  undefined4 uVar8;
  byte bVar9;
  byte *__s;
  uint uVar10;
  char *__dest;
  uint uVar11;
  int in_GS_OFFSET;
  bool bVar12;
  size_t local_64;
  size_t local_50;
  size_t local_4c;
  uint local_34;
  mbstate_t local_30;
  mbstate_t local_28;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x662bb;
  uVar10 = *param_2;
  __s = (byte *)(param_1 + uVar10);
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_30.__count = 0;
  local_30.__value.__wch = 0;
  sVar4 = strlen((char *)__s);
  uVar5 = sVar4 + uVar10;
  local_64 = 0;
  if (((*param_3 != 0) && (local_64 = 1, param_3[1] != 0)) && (local_64 = 2, param_3[2] != 0)) {
    local_64 = strlen((char *)param_3);
  }
  if (*param_4 == '\0') {
    local_4c = 0;
  }
  else {
    local_4c = 1;
    if ((param_4[1] != '\0') && (local_4c = 2, param_4[2] != '\0')) {
      local_4c = strlen(param_4);
    }
  }
  if (*param_5 == '\0') {
    local_50 = 0;
  }
  else {
    local_50 = 1;
    if ((param_5[1] != '\0') && (local_50 = 2, param_5[2] != '\0')) {
      local_50 = strlen(param_5);
    }
  }
  bVar2 = false;
  bVar12 = false;
LAB_000663d0:
  bVar9 = *__s;
  iVar7 = local_30.__count;
  _Var3 = local_30.__value;
  do {
    local_30.__count = iVar7;
    local_30.__value = _Var3;
    if (uVar5 < uVar10) {
      uVar6 = uVar5;
      if (*(char *)(param_1 + uVar5) == '\0') goto LAB_00066741;
LAB_0006651a:
      iVar7 = (uVar5 - *param_2) - local_50;
      __dest = (char *)0x0;
      local_34 = iVar7 + 1;
      if ((param_6 & 1) == 0) {
        __dest = (char *)xmalloc(iVar7 + 2);
        strncpy(__dest,(char *)(param_1 + *param_2),local_34);
        __dest[local_34] = '\0';
      }
      *param_2 = uVar5;
      goto LAB_00066757;
    }
    uVar11 = (uint)(char)bVar9;
    uVar6 = uVar10;
    if (uVar11 == 0) {
LAB_00066741:
      if (no_longjmp_on_fatal_error == 0) {
        last_command_exit_value = 1;
        uVar8 = dcgettext(0,"bad substitution: no closing `%s\' in %s",5,&last_command_exit_value);
        report_error(uVar8,param_5,param_1);
                    /* WARNING: Subroutine does not return */
        FUN_00064460();
      }
      __dest = (char *)0x0;
      *param_2 = uVar6;
LAB_00066757:
      if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
        return __dest;
      }
                    /* WARNING: Subroutine does not return */
      FUN_000ecc40();
    }
    if (bVar12) {
      bVar12 = uVar11 != 10;
      if (locale_mb_cur_max < 2) {
LAB_000665f0:
        uVar10 = uVar10 + 1;
        __s = (byte *)(param_1 + uVar10);
      }
      else {
        if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {
          if ((locale_utf8locale == 0) || ((char)bVar9 < '\0')) {
            uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);
            if (0xfffffffd < uVar6) {
              uVar10 = uVar10 + 1;
              __s = (byte *)(param_1 + uVar10);
              local_30.__count = iVar7;
              local_30.__value = _Var3;
              goto LAB_000663d0;
            }
          }
          else {
            uVar6 = (uint)(bVar9 != 0);
          }
          if (uVar6 == 0) goto LAB_000665f0;
        }
        else {
          uVar6 = 1;
        }
        uVar10 = uVar10 + uVar6;
        __s = (byte *)(param_1 + uVar10);
      }
      goto LAB_000663d0;
    }
    if (bVar2) {
      if (locale_mb_cur_max < 2) {
LAB_0006666c:
        uVar10 = uVar10 + 1;
      }
      else if (((uint)(&is_basic_table)[uVar11 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {
        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {
          uVar6 = (uint)(bVar9 != 0);
LAB_00066668:
          if (uVar6 == 0) goto LAB_0006666c;
          goto LAB_000666c5;
        }
        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);
        if (uVar6 < 0xfffffffe) goto LAB_00066668;
        uVar10 = uVar10 + 1;
        local_30.__count = iVar7;
        local_30.__value = _Var3;
      }
      else {
        uVar6 = 1;
LAB_000666c5:
        uVar10 = uVar10 + uVar6;
      }
      bVar2 = false;
      __s = (byte *)(param_1 + uVar10);
      goto LAB_000663d0;
    }
    if ((param_6 & 8) == 0) {
      if ((uVar11 == 1) || (uVar11 == 0x5c)) {
LAB_0006660e:
        uVar10 = uVar10 + 1;
        bVar12 = false;
        bVar2 = true;
        __s = (byte *)(param_1 + uVar10);
        goto LAB_000663d0;
      }
LAB_00066431:
      if (local_64 == 0) {
LAB_000666fd:
        local_34 = uVar10 + local_64;
        MASKED(param_4,param_5,param_6 | 1);
        goto LAB_0006672c;
      }
      uVar6 = uVar11;
      if (bVar9 == *param_3) {
        iVar7 = strncmp((char *)__s,(char *)param_3,local_64);
        uVar6 = (uint)bVar9;
        if (iVar7 == 0) goto LAB_000666fd;
      }
      if ((local_4c != 0) && ((char)uVar6 == *param_4)) {
        iVar7 = strncmp((char *)__s,param_4,local_4c);
        uVar6 = uVar6 & 0xff;
        if (iVar7 == 0) {
          local_34 = uVar10 + local_4c;
          MASKED(param_4,param_5,param_6 | 1);
          uVar6 = uVar5;
          if (uVar5 <= local_34) goto LAB_00066741;
          bVar12 = false;
          uVar10 = local_34;
          goto LAB_0006666c;
        }
      }
      if (local_50 == 0) {
LAB_000668cd:
        uVar5 = (uVar10 - 1) + local_50;
        goto LAB_0006651a;
      }
      if ((char)uVar6 == *param_5) {
        iVar7 = strncmp((char *)__s,param_5,local_50);
        uVar6 = uVar6 & 0xff;
        if (iVar7 == 0) goto LAB_000668cd;
      }
      _Var3 = local_30.__value;
      iVar7 = local_30.__count;
      if (uVar11 == 0x60) {
        local_34 = uVar10 + 1;
        FUN_000671c0(param_6 | 1);
        goto LAB_0006672c;
      }
      if ((uVar11 == 0x27) || (uVar11 == 0x22)) break;
      if (locale_mb_cur_max < 2) goto LAB_000664e0;
      bVar9 = (byte)uVar6;
      if (((uint)(&is_basic_table)[uVar6 >> 5 & 7] >> (bVar9 & 0x1f) & 1) == 0) {
        if ((locale_utf8locale != 0) && (-1 < (char)bVar9)) {
          uVar6 = (uint)(bVar9 != 0);
LAB_000664d4:
          if (uVar6 == 0) goto LAB_000664e0;
          goto LAB_00066935;
        }
        uVar6 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);
        if (uVar6 < 0xfffffffe) goto LAB_000664d4;
        uVar10 = uVar10 + 1;
        local_30.__count = iVar7;
        local_30.__value = _Var3;
      }
      else {
        uVar6 = 1;
LAB_00066935:
        uVar10 = uVar10 + uVar6;
      }
    }
    else {
      if (uVar11 == 0x23) {
        if (((uVar10 != 0) && (bVar1 = *(byte *)(param_1 + -1 + uVar10), bVar1 != 10)) &&
           ((*(byte *)((int)&sh_syntaxtab + (uint)bVar1 * 4 + 1) & 0x20) == 0)) goto LAB_00066431;
        if (locale_mb_cur_max < 2) {
LAB_00066807:
          uVar10 = uVar10 + 1;
        }
        else {
          if ((DAT_001051c4 & 8) == 0 && locale_utf8locale == 0) {
            sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_30);
            if (0xfffffffd < sVar4) {
              uVar10 = uVar10 + 1;
              local_30.__count = iVar7;
              local_30.__value = _Var3;
              goto LAB_0006680a;
            }
            if (sVar4 == 0) goto LAB_00066807;
          }
          else {
            sVar4 = 1;
          }
          uVar10 = uVar10 + sVar4;
        }
LAB_0006680a:
        bVar12 = true;
        __s = (byte *)(param_1 + uVar10);
        goto LAB_000663d0;
      }
      if ((uVar11 == 1) || (uVar11 == 0x5c)) goto LAB_0006660e;
      if ((bVar9 != 0x24) || (*(char *)(param_1 + 1 + uVar10) != '(')) goto LAB_00066431;
      local_34 = uVar10 + 2;
      extract_command_subst(param_1,&local_34,param_6 | 1);
LAB_0006672c:
      uVar6 = uVar5;
      uVar10 = local_34;
      if (uVar5 <= local_34) goto LAB_00066741;
LAB_000664e0:
      uVar10 = uVar10 + 1;
    }
    bVar12 = false;
    __s = (byte *)(param_1 + uVar10);
    bVar9 = *__s;
    iVar7 = local_30.__count;
    _Var3 = local_30.__value;
  } while( true );
  uVar10 = uVar10 + 1;
  local_34 = uVar10;
  if (uVar11 == 0x27) {
    local_28.__count = 0;
    local_28.__value.__wch = 0;
    while( true ) {
      _Var3 = local_28.__value;
      iVar7 = local_28.__count;
      __s = (byte *)(param_1 + uVar10);
      bVar9 = *__s;
      if ((bVar9 == 0) || (bVar9 == 0x27)) break;
      if (locale_mb_cur_max < 2) {
LAB_00066a70:
        uVar10 = uVar10 + 1;
      }
      else if (((uint)(&is_basic_table)[bVar9 >> 5] >> (bVar9 & 0x1f) & 1) == 0) {
        if ((locale_utf8locale == 0) || (sVar4 = 1, (char)bVar9 < '\0')) {
          sVar4 = mbrtowc((wchar_t *)0x0,(char *)__s,uVar5 - uVar10,&local_28);
          if (sVar4 < 0xfffffffe) {
            if (sVar4 == 0) goto LAB_00066a70;
            goto LAB_000669de;
          }
          uVar10 = uVar10 + 1;
          local_28.__count = iVar7;
          local_28.__value = _Var3;
        }
        else {
LAB_000669de:
          uVar10 = uVar10 + sVar4;
        }
      }
      else {
        uVar10 = uVar10 + 1;
        local_28.__count = iVar7;
        local_28.__value = _Var3;
      }
    }
    if (bVar9 != 0) {
      uVar10 = uVar10 + 1;
      __s = (byte *)(param_1 + uVar10);
    }
    bVar12 = false;
  }
  else {
    uVar10 = FUN_00067c30(0);
    bVar12 = false;
    __s = (byte *)(param_1 + uVar10);
  }
  goto LAB_000663d0;
}

