
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* std::ostreambuf_iterator<char, std::char_traits<char> > std::money_put<char,
   std::ostreambuf_iterator<char, std::char_traits<char> >
   >::_M_insert<true>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char,
   std::string const&) const */

void std::money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>::_M_insert<true>
               (undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5,
               char param_6,undefined4 *param_7)

{
  uint uVar1;
  int *piVar2;
  undefined1 uVar3;
  ctype *pcVar4;
  uint uVar5;
  byte *pbVar6;
  char *pcVar7;
  int iVar8;
  uint uVar9;
  uint uVar10;
  __moneypunct_cache<char,true> *this;
  byte *pbVar11;
  bool bVar12;
  uint uVar13;
  int iVar14;
  byte *pbVar15;
  string *psVar16;
  char *local_8c;
  uint local_88;
  uint local_80;
  uint local_7c;
  char local_6d;
  undefined4 local_6c;
  undefined4 local_50;
  uint *local_4c;
  uint local_48;
  uint local_44 [4];
  uint *local_34;
  uint local_30;
  uint local_2c [7];
  
  local_6d = (char)param_4;
  local_6c = param_4;
  pcVar4 = use_facet<std::ctype<char>>((locale *)(param_5 + 0x6c));
  uVar5 = locale::id::_M_id((id *)PTR_id_003a9dfc);
  piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + uVar5 * 4);
  iVar14 = *piVar2;
  if (iVar14 == 0) {
                    /* try { // try from 002720f0 to 002720f4 has its CatchHandler @ 002722cf */
    this = (__moneypunct_cache<char,true> *)operator_new(0x44);
    *(undefined4 *)(this + 4) = 0;
    *(undefined4 *)(this + 8) = 0;
    *(undefined4 *)(this + 0xc) = 0;
    this[0x12] = (__moneypunct_cache<char,true>)0x0;
    *(undefined ***)this = &PTR____moneypunct_cache_003a76b8;
    *(undefined2 *)(this + 0x10) = 0;
    *(undefined4 *)(this + 0x14) = 0;
    *(undefined4 *)(this + 0x18) = 0;
    *(undefined4 *)(this + 0x1c) = 0;
    *(undefined4 *)(this + 0x20) = 0;
    *(undefined4 *)(this + 0x24) = 0;
    *(undefined4 *)(this + 0x28) = 0;
    *(undefined4 *)(this + 0x2c) = 0;
    *(undefined4 *)(this + 0x30) = 0;
    *(undefined4 *)(this + 0x34) = 0;
    this[0x43] = (__moneypunct_cache<char,true>)0x0;
                    /* try { // try from 0027216f to 00272173 has its CatchHandler @ 002722d1 */
    __moneypunct_cache<char,true>::_M_cache(this,(locale *)(param_5 + 0x6c));
    locale::_Impl::_M_install_cache(*(_Impl **)(param_5 + 0x6c),(facet *)this,uVar5);
    iVar14 = *piVar2;
  }
  pbVar15 = (byte *)*param_7;
  if (*pbVar15 == *(byte *)(iVar14 + 0x38)) {
    local_50 = *(undefined4 *)(iVar14 + 0x34);
    if (param_7[1] == 0) goto LAB_00271c00;
    local_8c = *(char **)(iVar14 + 0x24);
    pbVar15 = pbVar15 + 1;
    local_7c = *(uint *)(iVar14 + 0x28);
  }
  else {
    local_50 = *(undefined4 *)(iVar14 + 0x30);
    local_8c = *(char **)(iVar14 + 0x1c);
    local_7c = *(uint *)(iVar14 + 0x20);
  }
  pbVar11 = pbVar15 + param_7[1];
  if ((pbVar11 <= pbVar15) ||
     (pbVar6 = pbVar15, (*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2) & 8) == 0))
  goto LAB_00271c00;
  do {
    pbVar6 = pbVar6 + 1;
    if (pbVar11 == pbVar6) {
      uVar5 = (int)pbVar11 - (int)pbVar15;
      goto joined_r0x00271c37;
    }
  } while ((*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);
  uVar5 = (int)pbVar6 - (int)pbVar15;
joined_r0x00271c37:
  if (uVar5 == 0) goto LAB_00271c00;
  local_48 = 0;
  local_44[0] = local_44[0] & 0xffffff00;
  local_4c = local_44;
                    /* try { // try from 00271c61 to 00271cb0 has its CatchHandler @ 00272307 */
  std::string::reserve((string *)&local_4c,uVar5 * 2);
  iVar8 = *(int *)(iVar14 + 0x2c);
  local_88 = uVar5 - iVar8;
  if (0 < (int)local_88) {
    if (iVar8 < 0) {
      local_88 = uVar5;
    }
    if (*(int *)(iVar14 + 0xc) == 0) {
                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */
      std::string::_M_replace((string *)&local_4c,0,local_48,(char *)pbVar15,local_88);
      iVar8 = *(int *)(iVar14 + 0x2c);
    }
    else {
      std::string::_M_replace_aux((string *)&local_4c,0,local_48,local_88 * 2,'\0');
      pcVar7 = __add_grouping<char>
                         ((char *)local_4c,*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),
                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88));
      uVar13 = (int)pcVar7 - (int)local_4c;
      if (local_48 < uVar13) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */
        __throw_out_of_range_fmt
                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",
                   uVar13,local_48);
      }
      *pcVar7 = '\0';
      iVar8 = *(int *)(iVar14 + 0x2c);
      local_48 = uVar13;
    }
  }
  uVar13 = local_48;
  if (0 < iVar8) {
    uVar3 = *(undefined1 *)(iVar14 + 0x11);
    uVar1 = local_48 + 1;
    uVar9 = 0xf;
    if (local_4c != local_44) {
      uVar9 = local_44[0];
    }
    if (uVar9 < uVar1) {
      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);
    }
    *(undefined1 *)((int)local_4c + uVar13) = uVar3;
    *(undefined1 *)((int)local_4c + uVar1) = 0;
    local_48 = uVar1;
    if ((int)local_88 < 0) {
                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */
      std::string::_M_replace_aux((string *)&local_4c,uVar1,0,-local_88,*(char *)(iVar14 + 0x39));
      if (0x7fffffff - local_48 < uVar5) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */
        __throw_length_error("basic_string::append");
      }
      std::string::_M_append((string *)&local_4c,(char *)pbVar15,uVar5);
    }
    else {
      if (0x7fffffff - uVar1 < *(uint *)(iVar14 + 0x2c)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */
        __throw_length_error("basic_string::append");
      }
                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */
      std::string::_M_append
                ((string *)&local_4c,(char *)(pbVar15 + local_88),*(uint *)(iVar14 + 0x2c));
    }
  }
  uVar5 = *(uint *)(param_5 + 0xc) & 0xb0;
  uVar13 = local_48 + local_7c;
  if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {
    uVar13 = uVar13 + *(int *)(iVar14 + 0x18);
  }
  local_30 = 0;
  local_2c[0] = local_2c[0] & 0xffffff00;
  local_34 = local_2c;
                    /* try { // try from 00271d53 to 00271fe7 has its CatchHandler @ 00272303 */
  std::string::reserve((string *)&local_34,uVar13 * 2);
  local_80 = *(uint *)(param_5 + 8);
  psVar16 = (string *)&local_50;
  bVar12 = uVar5 == 0x10 && uVar13 < local_80;
  do {
    uVar1 = local_30;
    switch(*psVar16) {
    case (string)0x0:
      if (bVar12) {
        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);
      }
      break;
    case (string)0x1:
      if (bVar12) {
        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);
      }
      else {
        uVar9 = local_30 + 1;
        uVar10 = 0xf;
        if (local_34 != local_2c) {
          uVar10 = local_2c[0];
        }
        if (uVar10 < uVar9) {
                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */
          std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);
        }
        *(char *)((int)local_34 + uVar1) = param_6;
        local_30 = uVar9;
        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;
      }
      break;
    case (string)0x2:
      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {
        if (0x7fffffff - local_30 < *(uint *)(iVar14 + 0x18)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002722b8 to 002722bc has its CatchHandler @ 00272303 */
          __throw_length_error("basic_string::append");
        }
        std::string::_M_append
                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18));
      }
      break;
    case (string)0x3:
      if (local_7c != 0) {
        std::string::push_back((string *)&local_34,*local_8c);
      }
      break;
    case (string)0x4:
      std::string::_M_append((string *)&local_34,(char *)local_4c,local_48);
    }
    psVar16 = psVar16 + 1;
  } while ((string *)&local_4c != psVar16);
  if (local_7c < 2) {
    if (local_80 <= local_30) goto LAB_00271ef2;
LAB_00271f70:
    if (uVar5 == 0x20) {
                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */
      std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - local_30,param_6);
    }
    else {
      std::string::_M_replace_aux((string *)&local_34,0,0,local_80 - local_30,param_6);
    }
  }
  else {
    if (0x7fffffff - local_30 < local_7c - 1) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */
      __throw_length_error("basic_string::append");
    }
    std::string::_M_append((string *)&local_34,local_8c + 1,local_7c - 1);
    if (local_30 < local_80) goto LAB_00271f70;
LAB_00271ef2:
    local_80 = local_30;
  }
  if (local_6d == '\0') {
    uVar5 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);
    local_6d = local_80 != uVar5;
  }
  local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);
  local_6c = CONCAT31(local_6c._1_3_,local_6d);
  if (local_34 != local_2c) {
    operator_delete(local_34);
  }
  if (local_4c != local_44) {
    operator_delete(local_4c);
  }
LAB_00271c00:
  *(undefined4 *)(param_5 + 8) = 0;
  local_6c = CONCAT31(local_6c._1_3_,local_6d);
  *param_1 = param_3;
  param_1[1] = local_6c;
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void FUN_00271b30(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5
                 ,char param_6,undefined4 *param_7)

{
  uint uVar1;
  int *piVar2;
  undefined1 uVar3;
  int iVar4;
  int iVar5;
  byte *pbVar6;
  undefined1 *puVar7;
  uint uVar8;
  uint uVar9;
  undefined4 *puVar10;
  byte *pbVar11;
  uint uVar12;
  bool bVar13;
  uint uVar14;
  int iVar15;
  byte *pbVar16;
  uint **ppuVar17;
  char *local_8c;
  uint local_88;
  uint local_80;
  uint local_7c;
  char local_6d;
  undefined4 local_6c;
  uint *local_50;
  uint *local_4c;
  uint local_48;
  uint local_44 [4];
  uint *local_34;
  uint local_30;
  uint local_2c [7];
  
  local_6d = (char)param_4;
  local_6c = param_4;
  iVar4 = FUN_00212050(param_5 + 0x6c);
  iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);
  piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);
  iVar15 = *piVar2;
  if (iVar15 == 0) {
                    /* try { // try from 002720f0 to 002720f4 has its CatchHandler @ 002722cf */
    puVar10 = (undefined4 *)FUN_001fb470(0x44);
    puVar10[1] = 0;
    puVar10[2] = 0;
    puVar10[3] = 0;
    *(undefined1 *)((int)puVar10 + 0x12) = 0;
    *puVar10 = &PTR_FUN_003a76b8;
    *(undefined2 *)(puVar10 + 4) = 0;
    puVar10[5] = 0;
    puVar10[6] = 0;
    puVar10[7] = 0;
    puVar10[8] = 0;
    puVar10[9] = 0;
    puVar10[10] = 0;
    puVar10[0xb] = 0;
    puVar10[0xc] = 0;
    puVar10[0xd] = 0;
    *(undefined1 *)((int)puVar10 + 0x43) = 0;
                    /* try { // try from 0027216f to 00272173 has its CatchHandler @ 002722d1 */
    FUN_00212cd0(puVar10,param_5 + 0x6c);
    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);
    iVar15 = *piVar2;
  }
  pbVar16 = (byte *)*param_7;
  if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {
    local_50 = *(uint **)(iVar15 + 0x34);
    if (param_7[1] == 0) goto LAB_00271c00;
    local_8c = *(char **)(iVar15 + 0x24);
    pbVar16 = pbVar16 + 1;
    local_7c = *(uint *)(iVar15 + 0x28);
  }
  else {
    local_50 = *(uint **)(iVar15 + 0x30);
    local_8c = *(char **)(iVar15 + 0x1c);
    local_7c = *(uint *)(iVar15 + 0x20);
  }
  pbVar11 = pbVar16 + param_7[1];
  if ((pbVar11 <= pbVar16) ||
     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))
  goto LAB_00271c00;
  do {
    pbVar6 = pbVar6 + 1;
    if (pbVar11 == pbVar6) {
      uVar12 = (int)pbVar11 - (int)pbVar16;
      goto joined_r0x00271c37;
    }
  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);
  uVar12 = (int)pbVar6 - (int)pbVar16;
joined_r0x00271c37:
  if (uVar12 == 0) goto LAB_00271c00;
  local_48 = 0;
  local_44[0] = local_44[0] & 0xffffff00;
  local_4c = local_44;
                    /* try { // try from 00271c61 to 00271cb0 has its CatchHandler @ 00272307 */
  FUN_002052b0(&local_4c,uVar12 * 2);
  iVar4 = *(int *)(iVar15 + 0x2c);
  local_88 = uVar12 - iVar4;
  if (0 < (int)local_88) {
    if (iVar4 < 0) {
      local_88 = uVar12;
    }
    if (*(int *)(iVar15 + 0xc) == 0) {
                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */
      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);
      iVar4 = *(int *)(iVar15 + 0x2c);
    }
    else {
      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);
      puVar7 = (undefined1 *)
               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),
                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);
      uVar14 = (int)puVar7 - (int)local_4c;
      if (local_48 < uVar14) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */
        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",
                     uVar14,local_48);
      }
      *puVar7 = 0;
      iVar4 = *(int *)(iVar15 + 0x2c);
      local_48 = uVar14;
    }
  }
  uVar14 = local_48;
  if (0 < iVar4) {
    uVar3 = *(undefined1 *)(iVar15 + 0x11);
    uVar1 = local_48 + 1;
    uVar8 = 0xf;
    if (local_4c != local_44) {
      uVar8 = local_44[0];
    }
    if (uVar8 < uVar1) {
      FUN_00204d10(&local_4c,local_48,0,0,1);
    }
    *(undefined1 *)((int)local_4c + uVar14) = uVar3;
    *(undefined1 *)((int)local_4c + uVar1) = 0;
    local_48 = uVar1;
    if ((int)local_88 < 0) {
                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */
      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));
      if (0x7fffffff - local_48 < uVar12) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */
        FUN_00242a10("basic_string::append");
      }
      FUN_00206830(&local_4c,pbVar16,uVar12);
    }
    else {
      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */
        FUN_00242a10("basic_string::append");
      }
                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */
      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));
    }
  }
  uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;
  uVar14 = local_48 + local_7c;
  if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {
    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);
  }
  local_30 = 0;
  local_2c[0] = local_2c[0] & 0xffffff00;
  local_34 = local_2c;
                    /* try { // try from 00271d53 to 00271fe7 has its CatchHandler @ 00272303 */
  FUN_002052b0(&local_34,uVar14 * 2);
  local_80 = *(uint *)(param_5 + 8);
  ppuVar17 = &local_50;
  bVar13 = uVar12 == 0x10 && uVar14 < local_80;
  do {
    uVar1 = local_30;
    switch(*(undefined1 *)ppuVar17) {
    case 0:
      if (bVar13) {
        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);
      }
      break;
    case 1:
      if (bVar13) {
        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);
      }
      else {
        uVar8 = local_30 + 1;
        uVar9 = 0xf;
        if (local_34 != local_2c) {
          uVar9 = local_2c[0];
        }
        if (uVar9 < uVar8) {
          FUN_00204d10(&local_34,local_30,0,0,1);
        }
        *(char *)((int)local_34 + uVar1) = param_6;
        local_30 = uVar8;
        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;
      }
      break;
    case 2:
      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {
        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {
                    /* WARNING: Subroutine does not return */
          FUN_00242a10("basic_string::append");
        }
        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));
      }
      break;
    case 3:
      if (local_7c != 0) {
        FUN_002055d0(&local_34,(int)*local_8c);
      }
      break;
    case 4:
      FUN_00206830(&local_34,local_4c,local_48);
    }
    ppuVar17 = (uint **)((int)ppuVar17 + 1);
  } while (&local_4c != ppuVar17);
  if (local_7c < 2) {
    if (local_80 <= local_30) goto LAB_00271ef2;
LAB_00271f70:
    if (uVar12 == 0x20) {
                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */
      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);
    }
    else {
      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);
    }
  }
  else {
    if (0x7fffffff - local_30 < local_7c - 1) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */
      FUN_00242a10("basic_string::append");
    }
    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);
    if (local_30 < local_80) goto LAB_00271f70;
LAB_00271ef2:
    local_80 = local_30;
  }
  if (local_6d == '\0') {
    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);
    local_6d = local_80 != uVar12;
  }
  local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);
  local_6c = CONCAT31(local_6c._1_3_,local_6d);
  if (local_34 != local_2c) {
    FUN_001fd020(local_34);
  }
  if (local_4c != local_44) {
    FUN_001fd020(local_4c);
  }
LAB_00271c00:
  *(undefined4 *)(param_5 + 8) = 0;
  local_6c = CONCAT31(local_6c._1_3_,local_6d);
  *param_1 = param_3;
  param_1[1] = local_6c;
  return;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
CALL 0x00049ed6
ADD ESI,0x1384c6
PUSH EBX
SUB ESP,0xa8
MOV EAX,dword ptr [EBP + 0x10]
MOV EDI,dword ptr [EBP + 0x14]
MOV dword ptr [EBP + -0x70],EAX
MOV EAX,dword ptr [EBP + 0x1c]
MOV EBX,ESI
MOV dword ptr [EBP + -0x64],ESI
MOV dword ptr [EBP + -0x80],EAX
MOV byte ptr [EBP + -0x6a],AL
MOV EAX,EDI
MOV byte ptr [EBP + -0x69],AL
MOV EAX,dword ptr [EBP + 0x18]
MOV dword ptr [EBP + -0x68],EDI
ADD EAX,0x6c
PUSH EAX
MOV dword ptr [EBP + -0x78],EAX
CALL 0x00212050
MOV dword ptr [EBP + -0x74],EAX
POP EAX
PUSH dword ptr [ESI + 0xfffffdfc]
CALL 0x001ff9b0
ADD ESP,0x10
MOV EDX,EAX
MOV dword ptr [EBP + -0x7c],EAX
MOV EAX,dword ptr [EBP + 0x18]
MOV EAX,dword ptr [EAX + 0x6c]
MOV EAX,dword ptr [EAX + 0xc]
LEA EDI,[EAX + EDX*0x4]
MOV ESI,dword ptr [EDI]
TEST ESI,ESI
JZ 0x002720e8
MOV EAX,dword ptr [EBP + 0x20]
MOV EDI,dword ptr [EAX]
MOV ECX,dword ptr [EAX + 0x4]
MOVZX EAX,byte ptr [ESI + 0x38]
CMP byte ptr [EDI],AL
JZ 0x00271db0
MOV EAX,dword ptr [ESI + 0x30]
MOV dword ptr [EBP + -0x4c],EAX
MOV EAX,dword ptr [ESI + 0x1c]
MOV dword ptr [EBP + 0xffffff78],EAX
MOV EAX,dword ptr [ESI + 0x20]
MOV dword ptr [EBP + -0x78],EAX
ADD ECX,EDI
CMP ECX,EDI
JBE 0x00271c00
MOV EAX,dword ptr [EBP + -0x74]
MOV EBX,dword ptr [EAX + 0x18]
MOVZX EAX,byte ptr [EDI]
TEST byte ptr [EBX + EAX*0x2 + 0x1],0x8
JZ 0x00271c00
MOV EAX,EDI
JMP 0x00271bf2
MOVZX EDX,byte ptr [EAX]
TEST byte ptr [EBX + EDX*0x2 + 0x1],0x8
JZ 0x00271c30
ADD EAX,0x1
CMP ECX,EAX
JNZ 0x00271be8
SUB ECX,EDI
MOV dword ptr [EBP + -0x7c],ECX
JNZ 0x00271c39
MOV EAX,dword ptr [EBP + 0x18]
MOV EDI,dword ptr [EBP + -0x70]
MOV dword ptr [EAX + 0x8],0x0
MOVZX EAX,byte ptr [EBP + -0x69]
MOV byte ptr [EBP + -0x68],AL
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EAX],EDI
MOV EDI,dword ptr [EBP + -0x68]
MOV dword ptr [EAX + 0x4],EDI
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
MOV ECX,EAX
SUB ECX,EDI
MOV dword ptr [EBP + -0x7c],ECX
JZ 0x00271c00
LEA EAX,[EBP + -0x40]
LEA EDX,[EBP + -0x48]
SUB ESP,0x8
MOV EBX,dword ptr [EBP + -0x64]
MOV dword ptr [EBP + 0xffffff6c],EAX
MOV dword ptr [EBP + -0x48],EAX
LEA EAX,[ECX + ECX*0x1]
PUSH EAX
PUSH EDX
MOV dword ptr [EBP + -0x44],0x0
MOV byte ptr [EBP + -0x40],0x0
MOV dword ptr [EBP + -0x74],EDX
CALL 0x002052b0
MOV ECX,dword ptr [EBP + -0x7c]
MOV EAX,dword ptr [ESI + 0x2c]
ADD ESP,0x10
MOV EDX,ECX
SUB EDX,EAX
MOV dword ptr [EBP + 0xffffff7c],EDX
TEST EDX,EDX
JLE 0x00271cf1
TEST EAX,EAX
MOV EAX,EDX
MOV EDX,dword ptr [ESI + 0xc]
CMOVS EAX,ECX
MOV ECX,EAX
MOV dword ptr [EBP + 0xffffff7c],EAX
MOV EAX,dword ptr [EBP + -0x44]
TEST EDX,EDX
JZ 0x00272198
SUB ESP,0xc
LEA EDX,[ECX + ECX*0x1]
MOV EBX,dword ptr [EBP + -0x64]
PUSH 0x0
PUSH EDX
PUSH EAX
PUSH 0x0
PUSH dword ptr [EBP + -0x74]
CALL 0x002058a0
MOV ECX,dword ptr [EBP + 0xffffff7c]
ADD ESP,0x18
MOV EBX,dword ptr [EBP + -0x64]
LEA EAX,[EDI + ECX*0x1]
PUSH EAX
PUSH EDI
PUSH dword ptr [ESI + 0xc]
PUSH dword ptr [ESI + 0x8]
MOVSX EAX,byte ptr [ESI + 0x12]
PUSH EAX
PUSH dword ptr [EBP + -0x48]
CALL 0x00214200
MOV ECX,dword ptr [EBP + -0x44]
ADD ESP,0x20
MOV EDX,EAX
SUB EDX,dword ptr [EBP + -0x48]
CMP EDX,ECX
JA 0x00272293
MOV dword ptr [EBP + -0x44],EDX
MOV byte ptr [EAX],0x0
MOV EAX,dword ptr [ESI + 0x2c]
MOV EDX,dword ptr [EBP + -0x44]
MOV dword ptr [EBP + 0xffffff74],EDX
TEST EAX,EAX
JG 0x00272000
MOV EAX,dword ptr [EBP + 0x18]
MOV EAX,dword ptr [EAX + 0xc]
MOV EDI,EAX
AND EDI,0xb0
MOV dword ptr [EBP + 0xffffff70],EDI
MOV EDI,dword ptr [EBP + 0xffffff74]
ADD EDI,dword ptr [EBP + -0x78]
TEST AH,0x2
JNZ 0x00271fa8
LEA EAX,[EBP + -0x28]
LEA EDX,[EBP + -0x30]
SUB ESP,0x8
MOV EBX,dword ptr [EBP + -0x64]
MOV dword ptr [EBP + 0xffffff74],EAX
MOV dword ptr [EBP + -0x30],EAX
LEA EAX,[EDI + EDI*0x1]
PUSH EAX
PUSH EDX
MOV dword ptr [EBP + 0xffffff7c],EDX
MOV dword ptr [EBP + -0x2c],0x0
MOV byte ptr [EBP + -0x28],0x0
CALL 0x002052b0
MOV EAX,dword ptr [EBP + 0x18]
ADD ESP,0x10
CMP dword ptr [EBP + 0xffffff70],0x10
MOV EBX,EDI
SETZ DL
MOV ECX,dword ptr [EAX + 0x8]
CMP ECX,EDI
MOV dword ptr [EBP + -0x7c],ECX
LEA EDI,[EBP + -0x4c]
SETA AL
SUB ECX,EBX
AND EDX,EAX
MOVSX EAX,byte ptr [EBP + -0x6a]
MOV dword ptr [EBP + 0xffffff60],ECX
MOV byte ptr [EBP + 0xffffff68],DL
MOV dword ptr [EBP + 0xffffff64],EAX
CMP byte ptr [EDI],0x4
JA 0x00271ed2
MOV ECX,dword ptr [EBP + -0x64]
MOVZX EAX,byte ptr [EDI]
MOV EBX,dword ptr [ECX + EAX*0x4 + 0xfff15548]
ADD EBX,ECX
JMP EBX
MOV EAX,dword ptr [ESI + 0x34]
MOV dword ptr [EBP + -0x4c],EAX
TEST ECX,ECX
JZ 0x00271c00
MOV EAX,dword ptr [ESI + 0x24]
ADD EDI,0x1
MOV dword ptr [EBP + 0xffffff78],EAX
MOV EAX,dword ptr [ESI + 0x28]
MOV dword ptr [EBP + -0x78],EAX
JMP 0x00271bcb
ADD EDI,0x1
CMP dword ptr [EBP + -0x74],EDI
JNZ 0x00271d92
MOV EAX,dword ptr [EBP + -0x78]
MOV EDX,dword ptr [EBP + -0x2c]
CMP EAX,0x1
JA 0x00271fb8
CMP dword ptr [EBP + -0x7c],EDX
JA 0x00271f70
MOV dword ptr [EBP + -0x7c],EDX
CMP byte ptr [EBP + -0x69],0x0
MOV EDX,dword ptr [EBP + -0x30]
JNZ 0x00271f1b
MOV ESI,dword ptr [EBP + -0x70]
MOV EDI,dword ptr [EBP + -0x7c]
SUB ESP,0x4
MOV EAX,dword ptr [ESI]
PUSH EDI
PUSH EDX
PUSH ESI
CALL dword ptr [EAX + 0x30]
ADD ESP,0x10
MOV EDX,dword ptr [EBP + -0x30]
CMP EDI,EAX
SETNZ byte ptr [EBP + -0x69]
XOR EAX,EAX
MOV ESI,dword ptr [EBP + -0x70]
MOV AL,byte ptr [EBP + -0x69]
MOV dword ptr [EBP + -0x60],ESI
MOV dword ptr [EBP + -0x5c],EAX
MOV byte ptr [EBP + -0x68],AL
CMP EDX,dword ptr [EBP + 0xffffff74]
JZ 0x00271f43
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x64]
PUSH EDX
CALL 0x001fd020
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x48]
CMP EAX,dword ptr [EBP + 0xffffff6c]
JZ 0x00271c00
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x64]
PUSH EAX
CALL 0x001fd020
ADD ESP,0x10
JMP 0x00271c00
MOV ECX,dword ptr [EBP + -0x7c]
MOVSX EAX,byte ptr [EBP + -0x80]
SUB ECX,EDX
CMP dword ptr [EBP + 0xffffff70],0x20
JZ 0x002721bb
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x64]
PUSH EAX
PUSH ECX
PUSH 0x0
PUSH 0x0
PUSH dword ptr [EBP + 0xffffff7c]
CALL 0x002058a0
ADD ESP,0x20
JMP 0x00271ef5
MOV EAX,dword ptr [ESI + 0x18]
ADD EDI,EAX
JMP 0x00271d28
MOV ECX,EAX
MOV ESI,dword ptr [EBP + 0xffffff78]
MOV EAX,0x7fffffff
SUB ECX,0x1
SUB EAX,EDX
ADD ESI,0x1
CMP ECX,EAX
JA 0x00272281
SUB ESP,0x4
MOV EBX,dword ptr [EBP + -0x64]
PUSH ECX
PUSH ESI
PUSH dword ptr [EBP + 0xffffff7c]
CALL 0x00206830
ADD ESP,0x10
MOV EDX,dword ptr [EBP + -0x2c]
CMP dword ptr [EBP + -0x7c],EDX
JA 0x00271f70
JMP 0x00271ef2
MOVZX EAX,byte ptr [ESI + 0x11]
LEA ECX,[EDX + 0x1]
MOV EDX,dword ptr [EBP + -0x48]
CMP EDX,dword ptr [EBP + 0xffffff6c]
MOV dword ptr [EBP + 0xffffff68],ECX
MOV byte ptr [EBP + 0xffffff70],AL
MOV EAX,0xf
CMOVNZ EAX,dword ptr [EBP + -0x40]
CMP ECX,EAX
JA 0x00272222
MOVZX EAX,byte ptr [EBP + 0xffffff70]
MOV ECX,dword ptr [EBP + 0xffffff74]
MOV byte ptr [EDX + ECX*0x1],AL
MOV EDX,dword ptr [EBP + 0xffffff68]
MOV EAX,dword ptr [EBP + -0x48]
MOV dword ptr [EBP + -0x44],EDX
MOV byte ptr [EAX + EDX*0x1],0x0
MOV EAX,dword ptr [EBP + 0xffffff7c]
TEST EAX,EAX
JS 0x002721d6
MOV EDX,dword ptr [ESI + 0x2c]
ADD EDI,EAX
MOV EAX,0x7fffffff
SUB EAX,dword ptr [EBP + -0x44]
CMP EDX,EAX
JA 0x0027226f
SUB ESP,0x4
MOV EBX,dword ptr [EBP + -0x64]
PUSH EDX
PUSH EDI
PUSH dword ptr [EBP + -0x74]
CALL 0x00206830
MOV EAX,dword ptr [EBP + -0x44]
ADD ESP,0x10
MOV dword ptr [EBP + 0xffffff74],EAX
JMP 0x00271d02
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x64]
PUSH 0x44
CALL 0x001fb470
POP ECX
MOV ECX,dword ptr [EBP + -0x64]
MOV ESI,EAX
POP EBX
MOV dword ptr [ESI + 0x4],0x0
LEA EAX,[ECX + 0xffffd6b0]
MOV dword ptr [ESI + 0x8],0x0
MOV EBX,ECX
MOV dword ptr [ESI + 0xc],0x0
ADD EAX,0x8
MOV byte ptr [ESI + 0x12],0x0
MOV dword ptr [ESI],EAX
XOR EAX,EAX
MOV word ptr [ESI + 0x10],AX
MOV dword ptr [ESI + 0x14],0x0
MOV dword ptr [ESI + 0x18],0x0
MOV dword ptr [ESI + 0x1c],0x0
MOV dword ptr [ESI + 0x20],0x0
MOV dword ptr [ESI + 0x24],0x0
MOV dword ptr [ESI + 0x28],0x0
MOV dword ptr [ESI + 0x2c],0x0
MOV dword ptr [ESI + 0x30],0x0
MOV dword ptr [ESI + 0x34],0x0
MOV byte ptr [ESI + 0x43],0x0
PUSH dword ptr [EBP + -0x78]
PUSH ESI
CALL 0x00212cd0
MOV EAX,dword ptr [EBP + 0x18]
ADD ESP,0xc
MOV EBX,dword ptr [EBP + -0x64]
PUSH dword ptr [EBP + -0x7c]
PUSH ESI
PUSH dword ptr [EAX + 0x6c]
CALL 0x001ffec0
MOV ESI,dword ptr [EDI]
ADD ESP,0x10
JMP 0x00271ba2
SUB ESP,0xc
PUSH dword ptr [EBP + 0xffffff7c]
MOV EBX,dword ptr [EBP + -0x64]
PUSH EDI
PUSH EAX
PUSH 0x0
PUSH dword ptr [EBP + -0x74]
CALL 0x00205c60
ADD ESP,0x20
MOV EAX,dword ptr [ESI + 0x2c]
JMP 0x00271cf1
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x64]
PUSH EAX
PUSH ECX
PUSH 0x0
PUSH EDX
PUSH dword ptr [EBP + 0xffffff7c]
CALL 0x002058a0
JMP 0x00271f9d
MOVSX EAX,byte ptr [ESI + 0x39]
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x64]
PUSH EAX
MOV EAX,dword ptr [EBP + 0xffffff7c]
NEG EAX
PUSH EAX
PUSH 0x0
PUSH dword ptr [EBP + -0x44]
PUSH dword ptr [EBP + -0x74]
CALL 0x002058a0
MOV EAX,0x7fffffff
ADD ESP,0x20
SUB EAX,dword ptr [EBP + -0x44]
CMP dword ptr [EBP + -0x7c],EAX
JA 0x002722bd
SUB ESP,0x4
PUSH dword ptr [EBP + -0x7c]
MOV EBX,dword ptr [EBP + -0x64]
PUSH EDI
PUSH dword ptr [EBP + -0x74]
CALL 0x00206830
JMP 0x00272080
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x64]
PUSH 0x1
PUSH 0x0
PUSH 0x0
PUSH dword ptr [EBP + 0xffffff74]
PUSH dword ptr [EBP + -0x74]
CALL 0x00204d10
ADD ESP,0x20
MOV EDX,dword ptr [EBP + -0x48]
JMP 0x0027202d
MOV EBX,dword ptr [EBP + -0x64]
SUB ESP,0xc
LEA EAX,[EBX + 0xffef4759]
PUSH EAX
CALL 0x00242a10
MOV EBX,dword ptr [EBP + -0x64]
SUB ESP,0xc
LEA EAX,[EBX + 0xffef4759]
PUSH EAX
CALL 0x00242a10
MOV EBX,dword ptr [EBP + -0x64]
PUSH ECX
PUSH EDX
LEA EAX,[EBX + 0xfff08eb6]
PUSH EAX
LEA EAX,[EBX + 0xffef90d4]
PUSH EAX
CALL 0x00242ab0
MOV EBX,dword ptr [EBP + -0x64]
SUB ESP,0xc
LEA EAX,[EBX + 0xffef4759]
PUSH EAX
CALL 0x00242a10
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nvoid FUN_00271b30(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5\n                 ,char param_6,undefined4 *param_7)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined1 uVar3;\n  int iVar4;\n  int iVar5;\n  byte *pbVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  uint uVar12;\n  bool bVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  uint **ppuVar17;\n  char *local_8c;\n  uint local_88;\n  uint local_80;\n  uint local_7c;\n  char local_6d;\n  undefined4 local_6c;\n  uint *local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  uint *local_34;\n  uint local_30;\n  uint local_2c [7];\n  \n  local_6d = (char)param_4;\n  local_6c = param_4;\n  iVar4 = FUN_00212050(param_5 + 0x6c);\n  iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);\n  piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);\n  iVar15 = *piVar2;\n  if (iVar15 == 0) {\n                    /* try { // try from 002720f0 to 002720f4 has its CatchHandler @ 002722cf */\n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    /* try { // try from 0027216f to 00272173 has its CatchHandler @ 002722d1 */\n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }\n  pbVar16 = (byte *)*param_7;\n  if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }\n  else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }\n  pbVar11 = pbVar16 + param_7[1];\n  if ((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))\n  goto LAB_00271c00;\n  do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);\n  uVar12 = (int)pbVar6 - (int)pbVar16;\njoined_r0x00271c37:\n  if (uVar12 == 0) goto LAB_00271c00;\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n                    /* try { // try from 00271c61 to 00271cb0 has its CatchHandler @ 00272307 */\n  FUN_002052b0(&local_4c,uVar12 * 2);\n  iVar4 = *(int *)(iVar15 + 0x2c);\n  local_88 = uVar12 - iVar4;\n  if (0 < (int)local_88) {\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */\n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }\n  uVar14 = local_48;\n  if (0 < iVar4) {\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */\n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }\n  uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;\n  uVar14 = local_48 + local_7c;\n  if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }\n  local_30 = 0;\n  local_2c[0] = local_2c[0] & 0xffffff00;\n  local_34 = local_2c;\n                    /* try { // try from 00271d53 to 00271fe7 has its CatchHandler @ 00272303 */\n  FUN_002052b0(&local_34,uVar14 * 2);\n  local_80 = *(uint *)(param_5 + 8);\n  ppuVar17 = &local_50;\n  bVar13 = uVar12 == 0x10 && uVar14 < local_80;\n  do {\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  } while (&local_4c != ppuVar17);\n  if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }\n  if (local_6d == '\0') {\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }\n  local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  if (local_34 != local_2c) {\n    FUN_001fd020(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001fd020(local_4c);\n  }\nLAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  *param_1 = param_3;\n  param_1[1] = local_6c;\n  return;\n}\n\n" comment (function_definition "void FUN_00271b30(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5\n                 ,char param_6,undefined4 *param_7)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined1 uVar3;\n  int iVar4;\n  int iVar5;\n  byte *pbVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  uint uVar12;\n  bool bVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  uint **ppuVar17;\n  char *local_8c;\n  uint local_88;\n  uint local_80;\n  uint local_7c;\n  char local_6d;\n  undefined4 local_6c;\n  uint *local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  uint *local_34;\n  uint local_30;\n  uint local_2c [7];\n  \n  local_6d = (char)param_4;\n  local_6c = param_4;\n  iVar4 = FUN_00212050(param_5 + 0x6c);\n  iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);\n  piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);\n  iVar15 = *piVar2;\n  if (iVar15 == 0) {\n                    /* try { // try from 002720f0 to 002720f4 has its CatchHandler @ 002722cf */\n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    /* try { // try from 0027216f to 00272173 has its CatchHandler @ 002722d1 */\n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }\n  pbVar16 = (byte *)*param_7;\n  if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }\n  else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }\n  pbVar11 = pbVar16 + param_7[1];\n  if ((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))\n  goto LAB_00271c00;\n  do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);\n  uVar12 = (int)pbVar6 - (int)pbVar16;\njoined_r0x00271c37:\n  if (uVar12 == 0) goto LAB_00271c00;\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n                    /* try { // try from 00271c61 to 00271cb0 has its CatchHandler @ 00272307 */\n  FUN_002052b0(&local_4c,uVar12 * 2);\n  iVar4 = *(int *)(iVar15 + 0x2c);\n  local_88 = uVar12 - iVar4;\n  if (0 < (int)local_88) {\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */\n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }\n  uVar14 = local_48;\n  if (0 < iVar4) {\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */\n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }\n  uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;\n  uVar14 = local_48 + local_7c;\n  if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }\n  local_30 = 0;\n  local_2c[0] = local_2c[0] & 0xffffff00;\n  local_34 = local_2c;\n                    /* try { // try from 00271d53 to 00271fe7 has its CatchHandler @ 00272303 */\n  FUN_002052b0(&local_34,uVar14 * 2);\n  local_80 = *(uint *)(param_5 + 8);\n  ppuVar17 = &local_50;\n  bVar13 = uVar12 == 0x10 && uVar14 < local_80;\n  do {\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  } while (&local_4c != ppuVar17);\n  if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }\n  if (local_6d == '\0') {\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }\n  local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  if (local_34 != local_2c) {\n    FUN_001fd020(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001fd020(local_4c);\n  }\nLAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  *param_1 = param_3;\n  param_1[1] = local_6c;\n  return;\n}" primitive_type (function_declarator "FUN_00271b30(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5\n                 ,char param_6,undefined4 *param_7)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5\n                 ,char param_6,undefined4 *param_7)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "char param_6" primitive_type identifier) , (parameter_declaration "undefined4 *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  undefined1 uVar3;\n  int iVar4;\n  int iVar5;\n  byte *pbVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  uint uVar12;\n  bool bVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  uint **ppuVar17;\n  char *local_8c;\n  uint local_88;\n  uint local_80;\n  uint local_7c;\n  char local_6d;\n  undefined4 local_6c;\n  uint *local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  uint *local_34;\n  uint local_30;\n  uint local_2c [7];\n  \n  local_6d = (char)param_4;\n  local_6c = param_4;\n  iVar4 = FUN_00212050(param_5 + 0x6c);\n  iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);\n  piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);\n  iVar15 = *piVar2;\n  if (iVar15 == 0) {\n                    /* try { // try from 002720f0 to 002720f4 has its CatchHandler @ 002722cf */\n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    /* try { // try from 0027216f to 00272173 has its CatchHandler @ 002722d1 */\n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }\n  pbVar16 = (byte *)*param_7;\n  if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }\n  else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }\n  pbVar11 = pbVar16 + param_7[1];\n  if ((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))\n  goto LAB_00271c00;\n  do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);\n  uVar12 = (int)pbVar6 - (int)pbVar16;\njoined_r0x00271c37:\n  if (uVar12 == 0) goto LAB_00271c00;\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n                    /* try { // try from 00271c61 to 00271cb0 has its CatchHandler @ 00272307 */\n  FUN_002052b0(&local_4c,uVar12 * 2);\n  iVar4 = *(int *)(iVar15 + 0x2c);\n  local_88 = uVar12 - iVar4;\n  if (0 < (int)local_88) {\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */\n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }\n  uVar14 = local_48;\n  if (0 < iVar4) {\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */\n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }\n  uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;\n  uVar14 = local_48 + local_7c;\n  if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }\n  local_30 = 0;\n  local_2c[0] = local_2c[0] & 0xffffff00;\n  local_34 = local_2c;\n                    /* try { // try from 00271d53 to 00271fe7 has its CatchHandler @ 00272303 */\n  FUN_002052b0(&local_34,uVar14 * 2);\n  local_80 = *(uint *)(param_5 + 8);\n  ppuVar17 = &local_50;\n  bVar13 = uVar12 == 0x10 && uVar14 < local_80;\n  do {\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  } while (&local_4c != ppuVar17);\n  if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }\n  if (local_6d == '\0') {\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }\n  local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  if (local_34 != local_2c) {\n    FUN_001fd020(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001fd020(local_4c);\n  }\nLAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  *param_1 = param_3;\n  param_1[1] = local_6c;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined1 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "uint **ppuVar17;" type_identifier (pointer_declarator "**ppuVar17" * (pointer_declarator "*ppuVar17" * identifier)) ;) (declaration "char *local_8c;" primitive_type (pointer_declarator "*local_8c" * identifier) ;) (declaration "uint local_88;" type_identifier identifier ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "char local_6d;" primitive_type identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "uint *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44 [4];" type_identifier (array_declarator "local_44 [4]" identifier [ number_literal ]) ;) (declaration "uint *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c [7];" type_identifier (array_declarator "local_2c [7]" identifier [ number_literal ]) ;) (expression_statement "local_6d = (char)param_4;" (assignment_expression "local_6d = (char)param_4" identifier = (cast_expression "(char)param_4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_6c = param_4;" (assignment_expression "local_6c = param_4" identifier = identifier) ;) (expression_statement "iVar4 = FUN_00212050(param_5 + 0x6c);" (assignment_expression "iVar4 = FUN_00212050(param_5 + 0x6c)" identifier = (call_expression "FUN_00212050(param_5 + 0x6c)" identifier (argument_list "(param_5 + 0x6c)" ( (binary_expression "param_5 + 0x6c" identifier + number_literal) )))) ;) (expression_statement "iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);" (assignment_expression "iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9dfc)" identifier (argument_list "(PTR_DAT_003a9dfc)" ( identifier )))) ;) (expression_statement "piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);" (assignment_expression "piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4)" identifier = (cast_expression "(int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4)" ( (binary_expression "*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4" (pointer_expression "*(int *)(*(int *)(param_5 + 0x6c) + 0xc)" * (cast_expression "(int *)(*(int *)(param_5 + 0x6c) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_5 + 0x6c) + 0xc)" ( (binary_expression "*(int *)(param_5 + 0x6c) + 0xc" (pointer_expression "*(int *)(param_5 + 0x6c)" * (cast_expression "(int *)(param_5 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x6c)" ( (binary_expression "param_5 + 0x6c" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "iVar5 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar15 = *piVar2;" (assignment_expression "iVar15 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (iVar15 == 0) {\n                    /* try { // try from 002720f0 to 002720f4 has its CatchHandler @ 002722cf */\n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    /* try { // try from 0027216f to 00272173 has its CatchHandler @ 002722d1 */\n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 002720f0 to 002720f4 has its CatchHandler @ 002722cf */\n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    /* try { // try from 0027216f to 00272173 has its CatchHandler @ 002722d1 */\n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }" { comment (expression_statement "puVar10 = (undefined4 *)FUN_001fb470(0x44);" (assignment_expression "puVar10 = (undefined4 *)FUN_001fb470(0x44)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0x44)" identifier (argument_list "(0x44)" ( number_literal ))))) ;) (expression_statement "puVar10[1] = 0;" (assignment_expression "puVar10[1] = 0" (subscript_expression "puVar10[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[2] = 0;" (assignment_expression "puVar10[2] = 0" (subscript_expression "puVar10[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[3] = 0;" (assignment_expression "puVar10[3] = 0" (subscript_expression "puVar10[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar10 + 0x12) = 0;" (assignment_expression "*(undefined1 *)((int)puVar10 + 0x12) = 0" (pointer_expression "*(undefined1 *)((int)puVar10 + 0x12)" * (cast_expression "(undefined1 *)((int)puVar10 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x12)" ( (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar10 = &PTR_FUN_003a76b8;" (assignment_expression "*puVar10 = &PTR_FUN_003a76b8" (pointer_expression "*puVar10" * identifier) = (pointer_expression "&PTR_FUN_003a76b8" & identifier)) ;) (expression_statement "*(undefined2 *)(puVar10 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar10 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar10 + 4)" * (cast_expression "(undefined2 *)(puVar10 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 4)" ( (binary_expression "puVar10 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar10[5] = 0;" (assignment_expression "puVar10[5] = 0" (subscript_expression "puVar10[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[6] = 0;" (assignment_expression "puVar10[6] = 0" (subscript_expression "puVar10[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[7] = 0;" (assignment_expression "puVar10[7] = 0" (subscript_expression "puVar10[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[8] = 0;" (assignment_expression "puVar10[8] = 0" (subscript_expression "puVar10[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[9] = 0;" (assignment_expression "puVar10[9] = 0" (subscript_expression "puVar10[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[10] = 0;" (assignment_expression "puVar10[10] = 0" (subscript_expression "puVar10[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[0xb] = 0;" (assignment_expression "puVar10[0xb] = 0" (subscript_expression "puVar10[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[0xc] = 0;" (assignment_expression "puVar10[0xc] = 0" (subscript_expression "puVar10[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[0xd] = 0;" (assignment_expression "puVar10[0xd] = 0" (subscript_expression "puVar10[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar10 + 0x43) = 0;" (assignment_expression "*(undefined1 *)((int)puVar10 + 0x43) = 0" (pointer_expression "*(undefined1 *)((int)puVar10 + 0x43)" * (cast_expression "(undefined1 *)((int)puVar10 + 0x43)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x43)" ( (binary_expression "(int)puVar10 + 0x43" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) comment (expression_statement "FUN_00212cd0(puVar10,param_5 + 0x6c);" (call_expression "FUN_00212cd0(puVar10,param_5 + 0x6c)" identifier (argument_list "(puVar10,param_5 + 0x6c)" ( identifier , (binary_expression "param_5 + 0x6c" identifier + number_literal) ))) ;) (expression_statement "FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);" (call_expression "FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5)" identifier (argument_list "(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5)" ( (pointer_expression "*(undefined4 *)(param_5 + 0x6c)" * (cast_expression "(undefined4 *)(param_5 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x6c)" ( (binary_expression "param_5 + 0x6c" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "iVar15 = *piVar2;" (assignment_expression "iVar15 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) })) (expression_statement "pbVar16 = (byte *)*param_7;" (assignment_expression "pbVar16 = (byte *)*param_7" identifier = (cast_expression "(byte *)*param_7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_7" * identifier))) ;) (if_statement "if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }\n  else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }" if (parenthesized_expression "(*pbVar16 == *(byte *)(iVar15 + 0x38))" ( (binary_expression "*pbVar16 == *(byte *)(iVar15 + 0x38)" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*(byte *)(iVar15 + 0x38)" * (cast_expression "(byte *)(iVar15 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x38)" ( (binary_expression "iVar15 + 0x38" identifier + number_literal) ))))) )) (compound_statement "{\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }" { (expression_statement "local_50 = *(uint **)(iVar15 + 0x34);" (assignment_expression "local_50 = *(uint **)(iVar15 + 0x34)" identifier = (pointer_expression "*(uint **)(iVar15 + 0x34)" * (cast_expression "(uint **)(iVar15 + 0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x34)" ( (binary_expression "iVar15 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (param_7[1] == 0) goto LAB_00271c00;" if (parenthesized_expression "(param_7[1] == 0)" ( (binary_expression "param_7[1] == 0" (subscript_expression "param_7[1]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00271c00;" goto statement_identifier ;)) (expression_statement "local_8c = *(char **)(iVar15 + 0x24);" (assignment_expression "local_8c = *(char **)(iVar15 + 0x24)" identifier = (pointer_expression "*(char **)(iVar15 + 0x24)" * (cast_expression "(char **)(iVar15 + 0x24)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x24)" ( (binary_expression "iVar15 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "pbVar16 = pbVar16 + 1;" (assignment_expression "pbVar16 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_7c = *(uint *)(iVar15 + 0x28);" (assignment_expression "local_7c = *(uint *)(iVar15 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar15 + 0x28)" * (cast_expression "(uint *)(iVar15 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x28)" ( (binary_expression "iVar15 + 0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }" else (compound_statement "{\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }" { (expression_statement "local_50 = *(uint **)(iVar15 + 0x30);" (assignment_expression "local_50 = *(uint **)(iVar15 + 0x30)" identifier = (pointer_expression "*(uint **)(iVar15 + 0x30)" * (cast_expression "(uint **)(iVar15 + 0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x30)" ( (binary_expression "iVar15 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_8c = *(char **)(iVar15 + 0x1c);" (assignment_expression "local_8c = *(char **)(iVar15 + 0x1c)" identifier = (pointer_expression "*(char **)(iVar15 + 0x1c)" * (cast_expression "(char **)(iVar15 + 0x1c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x1c)" ( (binary_expression "iVar15 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "local_7c = *(uint *)(iVar15 + 0x20);" (assignment_expression "local_7c = *(uint *)(iVar15 + 0x20)" identifier = (pointer_expression "*(uint *)(iVar15 + 0x20)" * (cast_expression "(uint *)(iVar15 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x20)" ( (binary_expression "iVar15 + 0x20" identifier + number_literal) ))))) ;) }))) (expression_statement "pbVar11 = pbVar16 + param_7[1];" (assignment_expression "pbVar11 = pbVar16 + param_7[1]" identifier = (binary_expression "pbVar16 + param_7[1]" identifier + (subscript_expression "param_7[1]" identifier [ number_literal ]))) ;) (if_statement "if ((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))\n  goto LAB_00271c00;" if (parenthesized_expression "((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))" ( (binary_expression "(pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0)" (parenthesized_expression "(pbVar11 <= pbVar16)" ( (binary_expression "pbVar11 <= pbVar16" identifier <= identifier) )) || (parenthesized_expression "(pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0)" ( (comma_expression "pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0" (assignment_expression "pbVar6 = pbVar16" identifier = identifier) , (binary_expression "(*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8)" ( (binary_expression "*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8" (pointer_expression "*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2)" * (cast_expression "(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2)" ( (binary_expression "*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2" (binary_expression "*(int *)(iVar4 + 0x18) + 1" (pointer_expression "*(int *)(iVar4 + 0x18)" * (cast_expression "(int *)(iVar4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*pbVar16 * 2" (binary_expression "(uint)*pbVar16" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) == number_literal)) ))) )) (goto_statement "goto LAB_00271c00;" goto statement_identifier ;)) (do_statement "do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);" do (compound_statement "{\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  }" { (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }" if (parenthesized_expression "(pbVar11 == pbVar6)" ( (binary_expression "pbVar11 == pbVar6" identifier == identifier) )) (compound_statement "{\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }" { (expression_statement "uVar12 = (int)pbVar11 - (int)pbVar16;" (assignment_expression "uVar12 = (int)pbVar11 - (int)pbVar16" identifier = (binary_expression "(int)pbVar11 - (int)pbVar16" (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar16" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto joined_r0x00271c37;" goto statement_identifier ;) })) }) while (parenthesized_expression "((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0)" ( (binary_expression "(*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8)" ( (binary_expression "*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8" (pointer_expression "*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2)" * (cast_expression "(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2)" ( (binary_expression "*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2" (binary_expression "*(int *)(iVar4 + 0x18) + 1" (pointer_expression "*(int *)(iVar4 + 0x18)" * (cast_expression "(int *)(iVar4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*pbVar6 * 2" (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (expression_statement "uVar12 = (int)pbVar6 - (int)pbVar16;" (assignment_expression "uVar12 = (int)pbVar6 - (int)pbVar16" identifier = (binary_expression "(int)pbVar6 - (int)pbVar16" (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar16" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "joined_r0x00271c37:\n  if (uVar12 == 0) goto LAB_00271c00;" statement_identifier : (if_statement "if (uVar12 == 0) goto LAB_00271c00;" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00271c00;" goto statement_identifier ;))) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44[0] = local_44[0] & 0xffffff00;" (assignment_expression "local_44[0] = local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" identifier [ number_literal ]) = (binary_expression "local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "local_4c = local_44;" (assignment_expression "local_4c = local_44" identifier = identifier) ;) comment (expression_statement "FUN_002052b0(&local_4c,uVar12 * 2);" (call_expression "FUN_002052b0(&local_4c,uVar12 * 2)" identifier (argument_list "(&local_4c,uVar12 * 2)" ( (pointer_expression "&local_4c" & identifier) , (binary_expression "uVar12 * 2" identifier * number_literal) ))) ;) (expression_statement "iVar4 = *(int *)(iVar15 + 0x2c);" (assignment_expression "iVar4 = *(int *)(iVar15 + 0x2c)" identifier = (pointer_expression "*(int *)(iVar15 + 0x2c)" * (cast_expression "(int *)(iVar15 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x2c)" ( (binary_expression "iVar15 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "local_88 = uVar12 - iVar4;" (assignment_expression "local_88 = uVar12 - iVar4" identifier = (binary_expression "uVar12 - iVar4" identifier - identifier)) ;) (if_statement "if (0 < (int)local_88) {\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */\n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }" if (parenthesized_expression "(0 < (int)local_88)" ( (binary_expression "0 < (int)local_88" number_literal < (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */\n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }" { (if_statement "if (iVar4 < 0) {\n      local_88 = uVar12;\n    }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n      local_88 = uVar12;\n    }" { (expression_statement "local_88 = uVar12;" (assignment_expression "local_88 = uVar12" identifier = identifier) ;) })) (if_statement "if (*(int *)(iVar15 + 0xc) == 0) {\n                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */\n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }" if (parenthesized_expression "(*(int *)(iVar15 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar15 + 0xc) == 0" (pointer_expression "*(int *)(iVar15 + 0xc)" * (cast_expression "(int *)(iVar15 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0xc)" ( (binary_expression "iVar15 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */\n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }" { comment (expression_statement "FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);" (call_expression "FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88)" identifier (argument_list "(&local_4c,0,local_48,pbVar16,local_88)" ( (pointer_expression "&local_4c" & identifier) , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "iVar4 = *(int *)(iVar15 + 0x2c);" (assignment_expression "iVar4 = *(int *)(iVar15 + 0x2c)" identifier = (pointer_expression "*(int *)(iVar15 + 0x2c)" * (cast_expression "(int *)(iVar15 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x2c)" ( (binary_expression "iVar15 + 0x2c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }" else (compound_statement "{\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }" { (expression_statement "FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);" (call_expression "FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0)" identifier (argument_list "(&local_4c,0,local_48,local_88 * 2,0)" ( (pointer_expression "&local_4c" & identifier) , number_literal , identifier , (binary_expression "local_88 * 2" identifier * number_literal) , number_literal ))) ;) (expression_statement "puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);" (assignment_expression "puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88)" identifier = (cast_expression "(undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88)" identifier (argument_list "(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88)" ( identifier , (cast_expression "(int)*(char *)(iVar15 + 0x12)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(iVar15 + 0x12)" * (cast_expression "(char *)(iVar15 + 0x12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x12)" ( (binary_expression "iVar15 + 0x12" identifier + number_literal) ))))) , (pointer_expression "*(undefined4 *)(iVar15 + 8)" * (cast_expression "(undefined4 *)(iVar15 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 8)" ( (binary_expression "iVar15 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar15 + 0xc)" * (cast_expression "(undefined4 *)(iVar15 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0xc)" ( (binary_expression "iVar15 + 0xc" identifier + number_literal) )))) , identifier , (binary_expression "pbVar16 + local_88" identifier + identifier) ))))) ;) (expression_statement "uVar14 = (int)puVar7 - (int)local_4c;" (assignment_expression "uVar14 = (int)puVar7 - (int)local_4c" identifier = (binary_expression "(int)puVar7 - (int)local_4c" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (local_48 < uVar14) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }" if (parenthesized_expression "(local_48 < uVar14)" ( (binary_expression "local_48 < uVar14" identifier < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }" { comment comment (expression_statement "FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);" (call_expression "FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48)" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48)" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::erase"" " string_content ") , identifier , identifier ))) ;) })) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "iVar4 = *(int *)(iVar15 + 0x2c);" (assignment_expression "iVar4 = *(int *)(iVar15 + 0x2c)" identifier = (pointer_expression "*(int *)(iVar15 + 0x2c)" * (cast_expression "(int *)(iVar15 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x2c)" ( (binary_expression "iVar15 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "local_48 = uVar14;" (assignment_expression "local_48 = uVar14" identifier = identifier) ;) }))) })) (expression_statement "uVar14 = local_48;" (assignment_expression "uVar14 = local_48" identifier = identifier) ;) (if_statement "if (0 < iVar4) {\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */\n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */\n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }" { (expression_statement "uVar3 = *(undefined1 *)(iVar15 + 0x11);" (assignment_expression "uVar3 = *(undefined1 *)(iVar15 + 0x11)" identifier = (pointer_expression "*(undefined1 *)(iVar15 + 0x11)" * (cast_expression "(undefined1 *)(iVar15 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x11)" ( (binary_expression "iVar15 + 0x11" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = local_48 + 1;" (assignment_expression "uVar1 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = 0xf;" (assignment_expression "uVar8 = 0xf" identifier = number_literal) ;) (if_statement "if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n      uVar8 = local_44[0];\n    }" { (expression_statement "uVar8 = local_44[0];" (assignment_expression "uVar8 = local_44[0]" identifier = (subscript_expression "local_44[0]" identifier [ number_literal ])) ;) })) (if_statement "if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }" if (parenthesized_expression "(uVar8 < uVar1)" ( (binary_expression "uVar8 < uVar1" identifier < identifier) )) (compound_statement "{\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }" { (expression_statement "FUN_00204d10(&local_4c,local_48,0,0,1);" (call_expression "FUN_00204d10(&local_4c,local_48,0,0,1)" identifier (argument_list "(&local_4c,local_48,0,0,1)" ( (pointer_expression "&local_4c" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "*(undefined1 *)((int)local_4c + uVar14) = uVar3;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar14) = uVar3" (pointer_expression "*(undefined1 *)((int)local_4c + uVar14)" * (cast_expression "(undefined1 *)((int)local_4c + uVar14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c + uVar14)" ( (binary_expression "(int)local_4c + uVar14" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)((int)local_4c + uVar1) = 0;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar1) = 0" (pointer_expression "*(undefined1 *)((int)local_4c + uVar1)" * (cast_expression "(undefined1 *)((int)local_4c + uVar1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c + uVar1)" ( (binary_expression "(int)local_4c + uVar1" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "local_48 = uVar1;" (assignment_expression "local_48 = uVar1" identifier = identifier) ;) (if_statement "if ((int)local_88 < 0) {\n                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */\n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }" if (parenthesized_expression "((int)local_88 < 0)" ( (binary_expression "(int)local_88 < 0" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */\n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }" { comment (expression_statement "FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));" (call_expression "FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39))" identifier (argument_list "(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39))" ( (pointer_expression "&local_4c" & identifier) , identifier , number_literal , (unary_expression "-local_88" - identifier) , (cast_expression "(int)*(char *)(iVar15 + 0x39)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(iVar15 + 0x39)" * (cast_expression "(char *)(iVar15 + 0x39)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x39)" ( (binary_expression "iVar15 + 0x39" identifier + number_literal) ))))) ))) ;) (if_statement "if (0x7fffffff - local_48 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }" if (parenthesized_expression "(0x7fffffff - local_48 < uVar12)" ( (binary_expression "0x7fffffff - local_48 < uVar12" (binary_expression "0x7fffffff - local_48" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }" { comment comment (expression_statement "FUN_00242a10("basic_string::append");" (call_expression "FUN_00242a10("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_00206830(&local_4c,pbVar16,uVar12);" (call_expression "FUN_00206830(&local_4c,pbVar16,uVar12)" identifier (argument_list "(&local_4c,pbVar16,uVar12)" ( (pointer_expression "&local_4c" & identifier) , identifier , identifier ))) ;) }) (else_clause "else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }" else (compound_statement "{\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }" { (if_statement "if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }" if (parenthesized_expression "(0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c))" ( (binary_expression "0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)" (binary_expression "0x7fffffff - uVar1" number_literal - identifier) < (pointer_expression "*(uint *)(iVar15 + 0x2c)" * (cast_expression "(uint *)(iVar15 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x2c)" ( (binary_expression "iVar15 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        FUN_00242a10("basic_string::append");\n      }" { comment comment (expression_statement "FUN_00242a10("basic_string::append");" (call_expression "FUN_00242a10("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) comment (expression_statement "FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));" (call_expression "FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c))" identifier (argument_list "(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c))" ( (pointer_expression "&local_4c" & identifier) , (binary_expression "pbVar16 + local_88" identifier + identifier) , (pointer_expression "*(uint *)(iVar15 + 0x2c)" * (cast_expression "(uint *)(iVar15 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x2c)" ( (binary_expression "iVar15 + 0x2c" identifier + number_literal) )))) ))) ;) }))) })) (expression_statement "uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;" (assignment_expression "uVar12 = *(uint *)(param_5 + 0xc) & 0xb0" identifier = (binary_expression "*(uint *)(param_5 + 0xc) & 0xb0" (pointer_expression "*(uint *)(param_5 + 0xc)" * (cast_expression "(uint *)(param_5 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xc)" ( (binary_expression "param_5 + 0xc" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "uVar14 = local_48 + local_7c;" (assignment_expression "uVar14 = local_48 + local_7c" identifier = (binary_expression "local_48 + local_7c" identifier + identifier)) ;) (if_statement "if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }" if (parenthesized_expression "((*(uint *)(param_5 + 0xc) & 0x200) != 0)" ( (binary_expression "(*(uint *)(param_5 + 0xc) & 0x200) != 0" (parenthesized_expression "(*(uint *)(param_5 + 0xc) & 0x200)" ( (binary_expression "*(uint *)(param_5 + 0xc) & 0x200" (pointer_expression "*(uint *)(param_5 + 0xc)" * (cast_expression "(uint *)(param_5 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xc)" ( (binary_expression "param_5 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }" { (expression_statement "uVar14 = uVar14 + *(int *)(iVar15 + 0x18);" (assignment_expression "uVar14 = uVar14 + *(int *)(iVar15 + 0x18)" identifier = (binary_expression "uVar14 + *(int *)(iVar15 + 0x18)" identifier + (pointer_expression "*(int *)(iVar15 + 0x18)" * (cast_expression "(int *)(iVar15 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x18)" ( (binary_expression "iVar15 + 0x18" identifier + number_literal) )))))) ;) })) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c[0] = local_2c[0] & 0xffffff00;" (assignment_expression "local_2c[0] = local_2c[0] & 0xffffff00" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = (binary_expression "local_2c[0] & 0xffffff00" (subscript_expression "local_2c[0]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) comment (expression_statement "FUN_002052b0(&local_34,uVar14 * 2);" (call_expression "FUN_002052b0(&local_34,uVar14 * 2)" identifier (argument_list "(&local_34,uVar14 * 2)" ( (pointer_expression "&local_34" & identifier) , (binary_expression "uVar14 * 2" identifier * number_literal) ))) ;) (expression_statement "local_80 = *(uint *)(param_5 + 8);" (assignment_expression "local_80 = *(uint *)(param_5 + 8)" identifier = (pointer_expression "*(uint *)(param_5 + 8)" * (cast_expression "(uint *)(param_5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 8)" ( (binary_expression "param_5 + 8" identifier + number_literal) ))))) ;) (expression_statement "ppuVar17 = &local_50;" (assignment_expression "ppuVar17 = &local_50" identifier = (pointer_expression "&local_50" & identifier)) ;) (expression_statement "bVar13 = uVar12 == 0x10 && uVar14 < local_80;" (assignment_expression "bVar13 = uVar12 == 0x10 && uVar14 < local_80" identifier = (binary_expression "uVar12 == 0x10 && uVar14 < local_80" (binary_expression "uVar12 == 0x10" identifier == number_literal) && (binary_expression "uVar14 < local_80" identifier < identifier))) ;) (do_statement "do {\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  } while (&local_4c != ppuVar17);" do (compound_statement "{\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  }" { (expression_statement "uVar1 = local_30;" (assignment_expression "uVar1 = local_30" identifier = identifier) ;) (switch_statement "switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }" switch (parenthesized_expression "(*(undefined1 *)ppuVar17)" ( (pointer_expression "*(undefined1 *)ppuVar17" * (cast_expression "(undefined1 *)ppuVar17" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }" { (case_statement "case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;" case number_literal : (if_statement "if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }" { (expression_statement "FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);" (call_expression "FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6)" identifier (argument_list "(&local_34,local_30,0,local_80 - uVar14,(int)param_6)" ( (pointer_expression "&local_34" & identifier) , identifier , number_literal , (binary_expression "local_80 - uVar14" identifier - identifier) , (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (break_statement "break;" break ;)) (case_statement "case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;" case number_literal : (if_statement "if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }" { (expression_statement "FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);" (call_expression "FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6)" identifier (argument_list "(&local_34,local_30,0,local_80 - uVar14,(int)param_6)" ( (pointer_expression "&local_34" & identifier) , identifier , number_literal , (binary_expression "local_80 - uVar14" identifier - identifier) , (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }) (else_clause "else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }" else (compound_statement "{\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }" { (expression_statement "uVar8 = local_30 + 1;" (assignment_expression "uVar8 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = 0xf;" (assignment_expression "uVar9 = 0xf" identifier = number_literal) ;) (if_statement "if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n          uVar9 = local_2c[0];\n        }" { (expression_statement "uVar9 = local_2c[0];" (assignment_expression "uVar9 = local_2c[0]" identifier = (subscript_expression "local_2c[0]" identifier [ number_literal ])) ;) })) (if_statement "if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }" if (parenthesized_expression "(uVar9 < uVar8)" ( (binary_expression "uVar9 < uVar8" identifier < identifier) )) (compound_statement "{\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }" { (expression_statement "FUN_00204d10(&local_34,local_30,0,0,1);" (call_expression "FUN_00204d10(&local_34,local_30,0,0,1)" identifier (argument_list "(&local_34,local_30,0,0,1)" ( (pointer_expression "&local_34" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "*(char *)((int)local_34 + uVar1) = param_6;" (assignment_expression "*(char *)((int)local_34 + uVar1) = param_6" (pointer_expression "*(char *)((int)local_34 + uVar1)" * (cast_expression "(char *)((int)local_34 + uVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + uVar1)" ( (binary_expression "(int)local_34 + uVar1" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "local_30 = uVar8;" (assignment_expression "local_30 = uVar8" identifier = identifier) ;) (expression_statement "*(undefined1 *)((int)local_34 + uVar1 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)local_34 + uVar1 + 1) = 0" (pointer_expression "*(undefined1 *)((int)local_34 + uVar1 + 1)" * (cast_expression "(undefined1 *)((int)local_34 + uVar1 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + uVar1 + 1)" ( (binary_expression "(int)local_34 + uVar1 + 1" (binary_expression "(int)local_34 + uVar1" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) }))) (break_statement "break;" break ;)) (case_statement "case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;" case number_literal : (if_statement "if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }" if (parenthesized_expression "((*(byte *)(param_5 + 0xd) & 2) != 0)" ( (binary_expression "(*(byte *)(param_5 + 0xd) & 2) != 0" (parenthesized_expression "(*(byte *)(param_5 + 0xd) & 2)" ( (binary_expression "*(byte *)(param_5 + 0xd) & 2" (pointer_expression "*(byte *)(param_5 + 0xd)" * (cast_expression "(byte *)(param_5 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xd)" ( (binary_expression "param_5 + 0xd" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }" { (if_statement "if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00242a10("basic_string::append");\n        }" if (parenthesized_expression "(0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18))" ( (binary_expression "0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)" (binary_expression "0x7fffffff - local_30" number_literal - identifier) < (pointer_expression "*(uint *)(iVar15 + 0x18)" * (cast_expression "(uint *)(iVar15 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x18)" ( (binary_expression "iVar15 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_00242a10("basic_string::append");\n        }" { comment (expression_statement "FUN_00242a10("basic_string::append");" (call_expression "FUN_00242a10("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));" (call_expression "FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18))" identifier (argument_list "(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18))" ( (pointer_expression "&local_34" & identifier) , (pointer_expression "*(undefined4 *)(iVar15 + 0x14)" * (cast_expression "(undefined4 *)(iVar15 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x14)" ( (binary_expression "iVar15 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(uint *)(iVar15 + 0x18)" * (cast_expression "(uint *)(iVar15 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x18)" ( (binary_expression "iVar15 + 0x18" identifier + number_literal) )))) ))) ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;" case number_literal : (if_statement "if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }" if (parenthesized_expression "(local_7c != 0)" ( (binary_expression "local_7c != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }" { (expression_statement "FUN_002055d0(&local_34,(int)*local_8c);" (call_expression "FUN_002055d0(&local_34,(int)*local_8c)" identifier (argument_list "(&local_34,(int)*local_8c)" ( (pointer_expression "&local_34" & identifier) , (cast_expression "(int)*local_8c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*local_8c" * identifier)) ))) ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n      FUN_00206830(&local_34,local_4c,local_48);" case number_literal : (expression_statement "FUN_00206830(&local_34,local_4c,local_48);" (call_expression "FUN_00206830(&local_34,local_4c,local_48)" identifier (argument_list "(&local_34,local_4c,local_48)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier ))) ;)) })) (expression_statement "ppuVar17 = (uint **)((int)ppuVar17 + 1);" (assignment_expression "ppuVar17 = (uint **)((int)ppuVar17 + 1)" identifier = (cast_expression "(uint **)((int)ppuVar17 + 1)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar17 + 1)" ( (binary_expression "(int)ppuVar17 + 1" (cast_expression "(int)ppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(&local_4c != ppuVar17)" ( (binary_expression "&local_4c != ppuVar17" (pointer_expression "&local_4c" & identifier) != identifier) )) ;) (if_statement "if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }" if (parenthesized_expression "(local_7c < 2)" ( (binary_expression "local_7c < 2" identifier < number_literal) )) (compound_statement "{\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }" { (if_statement "if (local_80 <= local_30) goto LAB_00271ef2;" if (parenthesized_expression "(local_80 <= local_30)" ( (binary_expression "local_80 <= local_30" identifier <= identifier) )) (goto_statement "goto LAB_00271ef2;" goto statement_identifier ;)) (labeled_statement "LAB_00271f70:\n    if (uVar12 == 0x20) {\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }" statement_identifier : (if_statement "if (uVar12 == 0x20) {\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }" if (parenthesized_expression "(uVar12 == 0x20)" ( (binary_expression "uVar12 == 0x20" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }" { comment (expression_statement "FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);" (call_expression "FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6)" identifier (argument_list "(&local_34,local_30,0,local_80 - local_30,(int)param_6)" ( (pointer_expression "&local_34" & identifier) , identifier , number_literal , (binary_expression "local_80 - local_30" identifier - identifier) , (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }) (else_clause "else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }" else (compound_statement "{\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }" { (expression_statement "FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);" (call_expression "FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6)" identifier (argument_list "(&local_34,0,0,local_80 - local_30,(int)param_6)" ( (pointer_expression "&local_34" & identifier) , number_literal , number_literal , (binary_expression "local_80 - local_30" identifier - identifier) , (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })))) }) (else_clause "else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }" else (compound_statement "{\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }" { (if_statement "if (0x7fffffff - local_30 < local_7c - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      FUN_00242a10("basic_string::append");\n    }" if (parenthesized_expression "(0x7fffffff - local_30 < local_7c - 1)" ( (binary_expression "0x7fffffff - local_30 < local_7c - 1" (binary_expression "0x7fffffff - local_30" number_literal - identifier) < (binary_expression "local_7c - 1" identifier - number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      FUN_00242a10("basic_string::append");\n    }" { comment comment (expression_statement "FUN_00242a10("basic_string::append");" (call_expression "FUN_00242a10("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_00206830(&local_34,local_8c + 1,local_7c - 1);" (call_expression "FUN_00206830(&local_34,local_8c + 1,local_7c - 1)" identifier (argument_list "(&local_34,local_8c + 1,local_7c - 1)" ( (pointer_expression "&local_34" & identifier) , (binary_expression "local_8c + 1" identifier + number_literal) , (binary_expression "local_7c - 1" identifier - number_literal) ))) ;) (if_statement "if (local_30 < local_80) goto LAB_00271f70;" if (parenthesized_expression "(local_30 < local_80)" ( (binary_expression "local_30 < local_80" identifier < identifier) )) (goto_statement "goto LAB_00271f70;" goto statement_identifier ;)) (labeled_statement "LAB_00271ef2:\n    local_80 = local_30;" statement_identifier : (expression_statement "local_80 = local_30;" (assignment_expression "local_80 = local_30" identifier = identifier) ;)) }))) (if_statement "if (local_6d == '\0') {\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }" if (parenthesized_expression "(local_6d == '\0')" ( (binary_expression "local_6d == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }" { (expression_statement "uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);" (assignment_expression "uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80)" identifier = (call_expression "(**(code **)(*param_3 + 0x30))(param_3,local_34,local_80)" (parenthesized_expression "(**(code **)(*param_3 + 0x30))" ( (pointer_expression "**(code **)(*param_3 + 0x30)" * (pointer_expression "*(code **)(*param_3 + 0x30)" * (cast_expression "(code **)(*param_3 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x30)" ( (binary_expression "*param_3 + 0x30" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3,local_34,local_80)" ( identifier , identifier , identifier )))) ;) (expression_statement "local_6d = local_80 != uVar12;" (assignment_expression "local_6d = local_80 != uVar12" identifier = (binary_expression "local_80 != uVar12" identifier != identifier)) ;) })) (expression_statement "local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);" (assignment_expression "local_6c._1_3_ = (undefined3)((uint)param_4 >> 8)" (field_expression "local_6c._1_3_" identifier . field_identifier) = (call_expression "(undefined3)((uint)param_4 >> 8)" (parenthesized_expression "(undefined3)" ( identifier )) (argument_list "((uint)param_4 >> 8)" ( (binary_expression "(uint)param_4 >> 8" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_6c = CONCAT31(local_6c._1_3_,local_6d);" (assignment_expression "local_6c = CONCAT31(local_6c._1_3_,local_6d)" identifier = (call_expression "CONCAT31(local_6c._1_3_,local_6d)" identifier (argument_list "(local_6c._1_3_,local_6d)" ( (field_expression "local_6c._1_3_" identifier . field_identifier) , identifier )))) ;) (if_statement "if (local_34 != local_2c) {\n    FUN_001fd020(local_34);\n  }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n    FUN_001fd020(local_34);\n  }" { (expression_statement "FUN_001fd020(local_34);" (call_expression "FUN_001fd020(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (if_statement "if (local_4c != local_44) {\n    FUN_001fd020(local_4c);\n  }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n    FUN_001fd020(local_4c);\n  }" { (expression_statement "FUN_001fd020(local_4c);" (call_expression "FUN_001fd020(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) })) (labeled_statement "LAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_5 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_5 + 8) = 0" (pointer_expression "*(undefined4 *)(param_5 + 8)" * (cast_expression "(undefined4 *)(param_5 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 8)" ( (binary_expression "param_5 + 8" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "local_6c = CONCAT31(local_6c._1_3_,local_6d);" (assignment_expression "local_6c = CONCAT31(local_6c._1_3_,local_6d)" identifier = (call_expression "CONCAT31(local_6c._1_3_,local_6d)" identifier (argument_list "(local_6c._1_3_,local_6d)" ( (field_expression "local_6c._1_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* std::ostreambuf_iterator<char, std::char_traits<char> > std::money_put<char,\n   std::ostreambuf_iterator<char, std::char_traits<char> >\n   >::_M_insert<true>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char,\n   std::string const&) const */\n\nvoid std::money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>::_M_insert<true>\n               (undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5,\n               char param_6,undefined4 *param_7)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined1 uVar3;\n  ctype *pcVar4;\n  uint uVar5;\n  byte *pbVar6;\n  char *pcVar7;\n  int iVar8;\n  uint uVar9;\n  uint uVar10;\n  __moneypunct_cache<char,true> *this;\n  byte *pbVar11;\n  bool bVar12;\n  uint uVar13;\n  int iVar14;\n  byte *pbVar15;\n  string *psVar16;\n  char *local_8c;\n  uint local_88;\n  uint local_80;\n  uint local_7c;\n  char local_6d;\n  undefined4 local_6c;\n  undefined4 local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  uint *local_34;\n  uint local_30;\n  uint local_2c [7];\n  \n  local_6d = (char)param_4;\n  local_6c = param_4;\n  pcVar4 = use_facet<std::ctype<char>>((locale *)(param_5 + 0x6c));\n  uVar5 = locale::id::_M_id((id *)PTR_id_003a9dfc);\n  piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + uVar5 * 4);\n  iVar14 = *piVar2;\n  if (iVar14 == 0) {\n                    /* try { // try from 002720f0 to 002720f4 has its CatchHandler @ 002722cf */\n    this = (__moneypunct_cache<char,true> *)operator_new(0x44);\n    *(undefined4 *)(this + 4) = 0;\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined4 *)(this + 0xc) = 0;\n    this[0x12] = (__moneypunct_cache<char,true>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003a76b8;\n    *(undefined2 *)(this + 0x10) = 0;\n    *(undefined4 *)(this + 0x14) = 0;\n    *(undefined4 *)(this + 0x18) = 0;\n    *(undefined4 *)(this + 0x1c) = 0;\n    *(undefined4 *)(this + 0x20) = 0;\n    *(undefined4 *)(this + 0x24) = 0;\n    *(undefined4 *)(this + 0x28) = 0;\n    *(undefined4 *)(this + 0x2c) = 0;\n    *(undefined4 *)(this + 0x30) = 0;\n    *(undefined4 *)(this + 0x34) = 0;\n    this[0x43] = (__moneypunct_cache<char,true>)0x0;\n                    /* try { // try from 0027216f to 00272173 has its CatchHandler @ 002722d1 */\n    __moneypunct_cache<char,true>::_M_cache(this,(locale *)(param_5 + 0x6c));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_5 + 0x6c),(facet *)this,uVar5);\n    iVar14 = *piVar2;\n  }\n  pbVar15 = (byte *)*param_7;\n  if (*pbVar15 == *(byte *)(iVar14 + 0x38)) {\n    local_50 = *(undefined4 *)(iVar14 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar14 + 0x24);\n    pbVar15 = pbVar15 + 1;\n    local_7c = *(uint *)(iVar14 + 0x28);\n  }\n  else {\n    local_50 = *(undefined4 *)(iVar14 + 0x30);\n    local_8c = *(char **)(iVar14 + 0x1c);\n    local_7c = *(uint *)(iVar14 + 0x20);\n  }\n  pbVar11 = pbVar15 + param_7[1];\n  if ((pbVar11 <= pbVar15) ||\n     (pbVar6 = pbVar15, (*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2) & 8) == 0))\n  goto LAB_00271c00;\n  do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar5 = (int)pbVar11 - (int)pbVar15;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);\n  uVar5 = (int)pbVar6 - (int)pbVar15;\njoined_r0x00271c37:\n  if (uVar5 == 0) goto LAB_00271c00;\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n                    /* try { // try from 00271c61 to 00271cb0 has its CatchHandler @ 00272307 */\n  std::string::reserve((string *)&local_4c,uVar5 * 2);\n  iVar8 = *(int *)(iVar14 + 0x2c);\n  local_88 = uVar5 - iVar8;\n  if (0 < (int)local_88) {\n    if (iVar8 < 0) {\n      local_88 = uVar5;\n    }\n    if (*(int *)(iVar14 + 0xc) == 0) {\n                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */\n      std::string::_M_replace((string *)&local_4c,0,local_48,(char *)pbVar15,local_88);\n      iVar8 = *(int *)(iVar14 + 0x2c);\n    }\n    else {\n      std::string::_M_replace_aux((string *)&local_4c,0,local_48,local_88 * 2,'\0');\n      pcVar7 = __add_grouping<char>\n                         ((char *)local_4c,*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88));\n      uVar13 = (int)pcVar7 - (int)local_4c;\n      if (local_48 < uVar13) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                   uVar13,local_48);\n      }\n      *pcVar7 = '\0';\n      iVar8 = *(int *)(iVar14 + 0x2c);\n      local_48 = uVar13;\n    }\n  }\n  uVar13 = local_48;\n  if (0 < iVar8) {\n    uVar3 = *(undefined1 *)(iVar14 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar13) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */\n      std::string::_M_replace_aux((string *)&local_4c,uVar1,0,-local_88,*(char *)(iVar14 + 0x39));\n      if (0x7fffffff - local_48 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }\n      std::string::_M_append((string *)&local_4c,(char *)pbVar15,uVar5);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar14 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      std::string::_M_append\n                ((string *)&local_4c,(char *)(pbVar15 + local_88),*(uint *)(iVar14 + 0x2c));\n    }\n  }\n  uVar5 = *(uint *)(param_5 + 0xc) & 0xb0;\n  uVar13 = local_48 + local_7c;\n  if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar13 = uVar13 + *(int *)(iVar14 + 0x18);\n  }\n  local_30 = 0;\n  local_2c[0] = local_2c[0] & 0xffffff00;\n  local_34 = local_2c;\n                    /* try { // try from 00271d53 to 00271fe7 has its CatchHandler @ 00272303 */\n  std::string::reserve((string *)&local_34,uVar13 * 2);\n  local_80 = *(uint *)(param_5 + 8);\n  psVar16 = (string *)&local_50;\n  bVar12 = uVar5 == 0x10 && uVar13 < local_80;\n  do {\n    uVar1 = local_30;\n    switch(*psVar16) {\n    case (string)0x0:\n      if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      break;\n    case (string)0x1:\n      if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      else {\n        uVar9 = local_30 + 1;\n        uVar10 = 0xf;\n        if (local_34 != local_2c) {\n          uVar10 = local_2c[0];\n        }\n        if (uVar10 < uVar9) {\n                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */\n          std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar9;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case (string)0x2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar14 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722b8 to 002722bc has its CatchHandler @ 00272303 */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append\n                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18));\n      }\n      break;\n    case (string)0x3:\n      if (local_7c != 0) {\n        std::string::push_back((string *)&local_34,*local_8c);\n      }\n      break;\n    case (string)0x4:\n      std::string::_M_append((string *)&local_34,(char *)local_4c,local_48);\n    }\n    psVar16 = psVar16 + 1;\n  } while ((string *)&local_4c != psVar16);\n  if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar5 == 0x20) {\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - local_30,param_6);\n    }\n    else {\n      std::string::_M_replace_aux((string *)&local_34,0,0,local_80 - local_30,param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      __throw_length_error("basic_string::append");\n    }\n    std::string::_M_append((string *)&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }\n  if (local_6d == '\0') {\n    uVar5 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar5;\n  }\n  local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  if (local_34 != local_2c) {\n    operator_delete(local_34);\n  }\n  if (local_4c != local_44) {\n    operator_delete(local_4c);\n  }\nLAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  *param_1 = param_3;\n  param_1[1] = local_6c;\n  return;\n}\n\n" comment comment (declaration "void std::money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>::_M_insert<true>\n               (undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5,\n               char param_6,undefined4 *param_7)\n\n{\n  uint uVar1;" primitive_type (ERROR "std::" identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "std::" identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "std::char_traits<char>>>::_M_insert<true>\n               (undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5,\n               char param_6,undefined4 *param_7)\n\n{\n  uint" identifier : : identifier < primitive_type >> > : : (function_declarator "_M_insert<true>\n               (undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5,\n               char param_6,undefined4 *param_7)" identifier (ERROR "<true>" < true >) (parameter_list "(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5,\n               char param_6,undefined4 *param_7)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "char param_6" primitive_type identifier) , (parameter_declaration "undefined4 *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) ))) { identifier) identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined1 uVar3;" type_identifier identifier ;) (declaration "ctype *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (expression_statement "__moneypunct_cache<char,true> *this;" (update_expression "__moneypunct_cache<char,true> *this" (binary_expression "__moneypunct_cache<char,true> *this" (binary_expression "__moneypunct_cache<char" identifier < identifier) (ERROR ",true" , true) > (pointer_expression "*this" * identifier)) --) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "string *psVar16;" type_identifier (pointer_declarator "*psVar16" * identifier) ;) (declaration "char *local_8c;" primitive_type (pointer_declarator "*local_8c" * identifier) ;) (declaration "uint local_88;" type_identifier identifier ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "char local_6d;" primitive_type identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44 [4];" type_identifier (array_declarator "local_44 [4]" identifier [ number_literal ]) ;) (declaration "uint *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c [7];" type_identifier (array_declarator "local_2c [7]" identifier [ number_literal ]) ;) (expression_statement "local_6d = (char)param_4;" (assignment_expression "local_6d = (char)param_4" identifier = (cast_expression "(char)param_4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_6c = param_4;" (assignment_expression "local_6c = param_4" identifier = identifier) ;) (expression_statement "pcVar4 = use_facet<std::ctype<char>>((locale *)(param_5 + 0x6c));" (update_expression "pcVar4 = use_facet<std::ctype<char>>((locale *)(param_5 + 0x6c))" (binary_expression "pcVar4 = use_facet<std::ctype<char>>((locale *)(param_5 + 0x6c))" (assignment_expression "pcVar4 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((locale *)(param_5 + 0x6c))" identifier >> (parenthesized_expression "((locale *)(param_5 + 0x6c))" ( (cast_expression "(locale *)(param_5 + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x6c)" ( (binary_expression "param_5 + 0x6c" identifier + number_literal) ))) )))) --) ;) (ERROR "uVar5 = locale::" (assignment_expression "uVar5 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9dfc);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9dfc);" (call_expression "_M_id((id *)PTR_id_003a9dfc)" identifier (argument_list "((id *)PTR_id_003a9dfc)" ( (cast_expression "(id *)PTR_id_003a9dfc" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + uVar5 * 4);" (assignment_expression "piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + uVar5 * 4)" identifier = (cast_expression "(int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + uVar5 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + uVar5 * 4)" ( (binary_expression "*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + uVar5 * 4" (pointer_expression "*(int *)(*(int *)(param_5 + 0x6c) + 0xc)" * (cast_expression "(int *)(*(int *)(param_5 + 0x6c) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_5 + 0x6c) + 0xc)" ( (binary_expression "*(int *)(param_5 + 0x6c) + 0xc" (pointer_expression "*(int *)(param_5 + 0x6c)" * (cast_expression "(int *)(param_5 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x6c)" ( (binary_expression "param_5 + 0x6c" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "uVar5 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar14 = *piVar2;" (assignment_expression "iVar14 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (iVar14 == 0) {\n                    /* try { // try from 002720f0 to 002720f4 has its CatchHandler @ 002722cf */\n    this = (__moneypunct_cache<char,true> *)operator_new(0x44);\n    *(undefined4 *)(this + 4) = 0;\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined4 *)(this + 0xc) = 0;\n    this[0x12] = (__moneypunct_cache<char,true>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003a76b8;\n    *(undefined2 *)(this + 0x10) = 0;\n    *(undefined4 *)(this + 0x14) = 0;\n    *(undefined4 *)(this + 0x18) = 0;\n    *(undefined4 *)(this + 0x1c) = 0;\n    *(undefined4 *)(this + 0x20) = 0;\n    *(undefined4 *)(this + 0x24) = 0;\n    *(undefined4 *)(this + 0x28) = 0;\n    *(undefined4 *)(this + 0x2c) = 0;\n    *(undefined4 *)(this + 0x30) = 0;\n    *(undefined4 *)(this + 0x34) = 0;\n    this[0x43] = (__moneypunct_cache<char,true>)0x0;\n                    /* try { // try from 0027216f to 00272173 has its CatchHandler @ 002722d1 */\n    __moneypunct_cache<char,true>::_M_cache(this,(locale *)(param_5 + 0x6c));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_5 + 0x6c),(facet *)this,uVar5);\n    iVar14 = *piVar2;\n  }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 002720f0 to 002720f4 has its CatchHandler @ 002722cf */\n    this = (__moneypunct_cache<char,true> *)operator_new(0x44);\n    *(undefined4 *)(this + 4) = 0;\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined4 *)(this + 0xc) = 0;\n    this[0x12] = (__moneypunct_cache<char,true>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003a76b8;\n    *(undefined2 *)(this + 0x10) = 0;\n    *(undefined4 *)(this + 0x14) = 0;\n    *(undefined4 *)(this + 0x18) = 0;\n    *(undefined4 *)(this + 0x1c) = 0;\n    *(undefined4 *)(this + 0x20) = 0;\n    *(undefined4 *)(this + 0x24) = 0;\n    *(undefined4 *)(this + 0x28) = 0;\n    *(undefined4 *)(this + 0x2c) = 0;\n    *(undefined4 *)(this + 0x30) = 0;\n    *(undefined4 *)(this + 0x34) = 0;\n    this[0x43] = (__moneypunct_cache<char,true>)0x0;\n                    /* try { // try from 0027216f to 00272173 has its CatchHandler @ 002722d1 */\n    __moneypunct_cache<char,true>::_M_cache(this,(locale *)(param_5 + 0x6c));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_5 + 0x6c),(facet *)this,uVar5);\n    iVar14 = *piVar2;\n  }" { comment (expression_statement "this = (__moneypunct_cache<char,true> *)operator_new(0x44);" (assignment_expression "this = (__moneypunct_cache<char,true> *)operator_new(0x44)" identifier = (parenthesized_expression "(__moneypunct_cache<char,true> *)operator_new(0x44)" ( (comma_expression "__moneypunct_cache<char,true> *)operator_new(0x44)" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "true> *)operator_new(0x44)" true > (pointer_expression "*)operator_new(0x44)" * (ERROR ")" )) (call_expression "operator_new(0x44)" identifier (argument_list "(0x44)" ( number_literal )))))) ))) ;) (expression_statement "*(undefined4 *)(this + 4) = 0;" (assignment_expression "*(undefined4 *)(this + 4) = 0" (pointer_expression "*(undefined4 *)(this + 4)" * (cast_expression "(undefined4 *)(this + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 8) = 0;" (assignment_expression "*(undefined4 *)(this + 8) = 0" (pointer_expression "*(undefined4 *)(this + 8)" * (cast_expression "(undefined4 *)(this + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0xc) = 0;" (assignment_expression "*(undefined4 *)(this + 0xc) = 0" (pointer_expression "*(undefined4 *)(this + 0xc)" * (cast_expression "(undefined4 *)(this + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x12] = (__moneypunct_cache<char,true>)0x0;" (assignment_expression "this[0x12] = (__moneypunct_cache<char,true>)0x0" (subscript_expression "this[0x12]" identifier [ number_literal ]) = (parenthesized_expression "(__moneypunct_cache<char,true>)0x0" ( (comma_expression "__moneypunct_cache<char,true>)0x0" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "true>)0x0" true > (ERROR ")" )) number_literal)) ))) ;) (expression_statement "*(undefined ***)this = &PTR____moneypunct_cache_003a76b8;" (assignment_expression "*(undefined ***)this = &PTR____moneypunct_cache_003a76b8" (pointer_expression "*(undefined ***)this" * (cast_expression "(undefined ***)this" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____moneypunct_cache_003a76b8" & identifier)) ;) (expression_statement "*(undefined2 *)(this + 0x10) = 0;" (assignment_expression "*(undefined2 *)(this + 0x10) = 0" (pointer_expression "*(undefined2 *)(this + 0x10)" * (cast_expression "(undefined2 *)(this + 0x10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x14) = 0;" (assignment_expression "*(undefined4 *)(this + 0x14) = 0" (pointer_expression "*(undefined4 *)(this + 0x14)" * (cast_expression "(undefined4 *)(this + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x18) = 0;" (assignment_expression "*(undefined4 *)(this + 0x18) = 0" (pointer_expression "*(undefined4 *)(this + 0x18)" * (cast_expression "(undefined4 *)(this + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(this + 0x1c) = 0" (pointer_expression "*(undefined4 *)(this + 0x1c)" * (cast_expression "(undefined4 *)(this + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1c)" ( (binary_expression "this + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x20) = 0;" (assignment_expression "*(undefined4 *)(this + 0x20) = 0" (pointer_expression "*(undefined4 *)(this + 0x20)" * (cast_expression "(undefined4 *)(this + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x20)" ( (binary_expression "this + 0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x24) = 0;" (assignment_expression "*(undefined4 *)(this + 0x24) = 0" (pointer_expression "*(undefined4 *)(this + 0x24)" * (cast_expression "(undefined4 *)(this + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x24)" ( (binary_expression "this + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x28) = 0;" (assignment_expression "*(undefined4 *)(this + 0x28) = 0" (pointer_expression "*(undefined4 *)(this + 0x28)" * (cast_expression "(undefined4 *)(this + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x28)" ( (binary_expression "this + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(this + 0x2c) = 0" (pointer_expression "*(undefined4 *)(this + 0x2c)" * (cast_expression "(undefined4 *)(this + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x2c)" ( (binary_expression "this + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x30) = 0;" (assignment_expression "*(undefined4 *)(this + 0x30) = 0" (pointer_expression "*(undefined4 *)(this + 0x30)" * (cast_expression "(undefined4 *)(this + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x30)" ( (binary_expression "this + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x34) = 0;" (assignment_expression "*(undefined4 *)(this + 0x34) = 0" (pointer_expression "*(undefined4 *)(this + 0x34)" * (cast_expression "(undefined4 *)(this + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x34)" ( (binary_expression "this + 0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x43] = (__moneypunct_cache<char,true>)0x0;" (assignment_expression "this[0x43] = (__moneypunct_cache<char,true>)0x0" (subscript_expression "this[0x43]" identifier [ number_literal ]) = (parenthesized_expression "(__moneypunct_cache<char,true>)0x0" ( (comma_expression "__moneypunct_cache<char,true>)0x0" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "true>)0x0" true > (ERROR ")" )) number_literal)) ))) ;) comment (expression_statement "__moneypunct_cache<char,true>::_M_cache(this,(locale *)(param_5 + 0x6c));" (comma_expression "__moneypunct_cache<char,true>::_M_cache(this,(locale *)(param_5 + 0x6c))" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "true>::_M_cache(this,(locale *)(param_5 + 0x6c))" true > (ERROR "::" : :) (call_expression "_M_cache(this,(locale *)(param_5 + 0x6c))" identifier (argument_list "(this,(locale *)(param_5 + 0x6c))" ( identifier , (cast_expression "(locale *)(param_5 + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x6c)" ( (binary_expression "param_5 + 0x6c" identifier + number_literal) ))) ))))) ;) (labeled_statement "locale::_Impl::_M_install_cache(*(_Impl **)(param_5 + 0x6c),(facet *)this,uVar5);" statement_identifier : (ERROR ":" :) (labeled_statement "_Impl::_M_install_cache(*(_Impl **)(param_5 + 0x6c),(facet *)this,uVar5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_install_cache(*(_Impl **)(param_5 + 0x6c),(facet *)this,uVar5);" (call_expression "_M_install_cache(*(_Impl **)(param_5 + 0x6c),(facet *)this,uVar5)" identifier (argument_list "(*(_Impl **)(param_5 + 0x6c),(facet *)this,uVar5)" ( (pointer_expression "*(_Impl **)(param_5 + 0x6c)" * (cast_expression "(_Impl **)(param_5 + 0x6c)" ( (type_descriptor "_Impl **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_5 + 0x6c)" ( (binary_expression "param_5 + 0x6c" identifier + number_literal) )))) , (cast_expression "(facet *)this" ( (type_descriptor "facet *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) (expression_statement "iVar14 = *piVar2;" (assignment_expression "iVar14 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) })) (expression_statement "pbVar15 = (byte *)*param_7;" (assignment_expression "pbVar15 = (byte *)*param_7" identifier = (cast_expression "(byte *)*param_7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_7" * identifier))) ;) (if_statement "if (*pbVar15 == *(byte *)(iVar14 + 0x38)) {\n    local_50 = *(undefined4 *)(iVar14 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar14 + 0x24);\n    pbVar15 = pbVar15 + 1;\n    local_7c = *(uint *)(iVar14 + 0x28);\n  }\n  else {\n    local_50 = *(undefined4 *)(iVar14 + 0x30);\n    local_8c = *(char **)(iVar14 + 0x1c);\n    local_7c = *(uint *)(iVar14 + 0x20);\n  }" if (parenthesized_expression "(*pbVar15 == *(byte *)(iVar14 + 0x38))" ( (binary_expression "*pbVar15 == *(byte *)(iVar14 + 0x38)" (pointer_expression "*pbVar15" * identifier) == (pointer_expression "*(byte *)(iVar14 + 0x38)" * (cast_expression "(byte *)(iVar14 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x38)" ( (binary_expression "iVar14 + 0x38" identifier + number_literal) ))))) )) (compound_statement "{\n    local_50 = *(undefined4 *)(iVar14 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar14 + 0x24);\n    pbVar15 = pbVar15 + 1;\n    local_7c = *(uint *)(iVar14 + 0x28);\n  }" { (expression_statement "local_50 = *(undefined4 *)(iVar14 + 0x34);" (assignment_expression "local_50 = *(undefined4 *)(iVar14 + 0x34)" identifier = (pointer_expression "*(undefined4 *)(iVar14 + 0x34)" * (cast_expression "(undefined4 *)(iVar14 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x34)" ( (binary_expression "iVar14 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (param_7[1] == 0) goto LAB_00271c00;" if (parenthesized_expression "(param_7[1] == 0)" ( (binary_expression "param_7[1] == 0" (subscript_expression "param_7[1]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00271c00;" goto statement_identifier ;)) (expression_statement "local_8c = *(char **)(iVar14 + 0x24);" (assignment_expression "local_8c = *(char **)(iVar14 + 0x24)" identifier = (pointer_expression "*(char **)(iVar14 + 0x24)" * (cast_expression "(char **)(iVar14 + 0x24)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x24)" ( (binary_expression "iVar14 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "pbVar15 = pbVar15 + 1;" (assignment_expression "pbVar15 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) (expression_statement "local_7c = *(uint *)(iVar14 + 0x28);" (assignment_expression "local_7c = *(uint *)(iVar14 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar14 + 0x28)" * (cast_expression "(uint *)(iVar14 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x28)" ( (binary_expression "iVar14 + 0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    local_50 = *(undefined4 *)(iVar14 + 0x30);\n    local_8c = *(char **)(iVar14 + 0x1c);\n    local_7c = *(uint *)(iVar14 + 0x20);\n  }" else (compound_statement "{\n    local_50 = *(undefined4 *)(iVar14 + 0x30);\n    local_8c = *(char **)(iVar14 + 0x1c);\n    local_7c = *(uint *)(iVar14 + 0x20);\n  }" { (expression_statement "local_50 = *(undefined4 *)(iVar14 + 0x30);" (assignment_expression "local_50 = *(undefined4 *)(iVar14 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(iVar14 + 0x30)" * (cast_expression "(undefined4 *)(iVar14 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x30)" ( (binary_expression "iVar14 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_8c = *(char **)(iVar14 + 0x1c);" (assignment_expression "local_8c = *(char **)(iVar14 + 0x1c)" identifier = (pointer_expression "*(char **)(iVar14 + 0x1c)" * (cast_expression "(char **)(iVar14 + 0x1c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x1c)" ( (binary_expression "iVar14 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "local_7c = *(uint *)(iVar14 + 0x20);" (assignment_expression "local_7c = *(uint *)(iVar14 + 0x20)" identifier = (pointer_expression "*(uint *)(iVar14 + 0x20)" * (cast_expression "(uint *)(iVar14 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x20)" ( (binary_expression "iVar14 + 0x20" identifier + number_literal) ))))) ;) }))) (expression_statement "pbVar11 = pbVar15 + param_7[1];" (assignment_expression "pbVar11 = pbVar15 + param_7[1]" identifier = (binary_expression "pbVar15 + param_7[1]" identifier + (subscript_expression "param_7[1]" identifier [ number_literal ]))) ;) (if_statement "if ((pbVar11 <= pbVar15) ||\n     (pbVar6 = pbVar15, (*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2) & 8) == 0))\n  goto LAB_00271c00;" if (parenthesized_expression "((pbVar11 <= pbVar15) ||\n     (pbVar6 = pbVar15, (*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2) & 8) == 0))" ( (binary_expression "(pbVar11 <= pbVar15) ||\n     (pbVar6 = pbVar15, (*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2) & 8) == 0)" (parenthesized_expression "(pbVar11 <= pbVar15)" ( (binary_expression "pbVar11 <= pbVar15" identifier <= identifier) )) || (parenthesized_expression "(pbVar6 = pbVar15, (*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2) & 8) == 0)" ( (comma_expression "pbVar6 = pbVar15, (*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2) & 8) == 0" (assignment_expression "pbVar6 = pbVar15" identifier = identifier) , (binary_expression "(*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2) & 8) == 0" (parenthesized_expression "(*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2) & 8)" ( (binary_expression "*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2) & 8" (pointer_expression "*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2)" * (cast_expression "(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2)" ( (binary_expression "*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar15 * 2" (binary_expression "*(int *)(pcVar4 + 0x18) + 1" (pointer_expression "*(int *)(pcVar4 + 0x18)" * (cast_expression "(int *)(pcVar4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar4 + 0x18)" ( (binary_expression "pcVar4 + 0x18" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*pbVar15 * 2" (binary_expression "(uint)*pbVar15" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) == number_literal)) ))) )) (goto_statement "goto LAB_00271c00;" goto statement_identifier ;)) (do_statement "do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar5 = (int)pbVar11 - (int)pbVar15;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);" do (compound_statement "{\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar5 = (int)pbVar11 - (int)pbVar15;\n      goto joined_r0x00271c37;\n    }\n  }" { (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar11 == pbVar6) {\n      uVar5 = (int)pbVar11 - (int)pbVar15;\n      goto joined_r0x00271c37;\n    }" if (parenthesized_expression "(pbVar11 == pbVar6)" ( (binary_expression "pbVar11 == pbVar6" identifier == identifier) )) (compound_statement "{\n      uVar5 = (int)pbVar11 - (int)pbVar15;\n      goto joined_r0x00271c37;\n    }" { (expression_statement "uVar5 = (int)pbVar11 - (int)pbVar15;" (assignment_expression "uVar5 = (int)pbVar11 - (int)pbVar15" identifier = (binary_expression "(int)pbVar11 - (int)pbVar15" (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto joined_r0x00271c37;" goto statement_identifier ;) })) }) while (parenthesized_expression "((*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0)" ( (binary_expression "(*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0" (parenthesized_expression "(*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8)" ( (binary_expression "*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8" (pointer_expression "*(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar6 * 2)" * (cast_expression "(byte *)(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar6 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar6 * 2)" ( (binary_expression "*(int *)(pcVar4 + 0x18) + 1 + (uint)*pbVar6 * 2" (binary_expression "*(int *)(pcVar4 + 0x18) + 1" (pointer_expression "*(int *)(pcVar4 + 0x18)" * (cast_expression "(int *)(pcVar4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar4 + 0x18)" ( (binary_expression "pcVar4 + 0x18" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*pbVar6 * 2" (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (expression_statement "uVar5 = (int)pbVar6 - (int)pbVar15;" (assignment_expression "uVar5 = (int)pbVar6 - (int)pbVar15" identifier = (binary_expression "(int)pbVar6 - (int)pbVar15" (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "joined_r0x00271c37:\n  if (uVar5 == 0) goto LAB_00271c00;" statement_identifier : (if_statement "if (uVar5 == 0) goto LAB_00271c00;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00271c00;" goto statement_identifier ;))) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44[0] = local_44[0] & 0xffffff00;" (assignment_expression "local_44[0] = local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" identifier [ number_literal ]) = (binary_expression "local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "local_4c = local_44;" (assignment_expression "local_4c = local_44" identifier = identifier) ;) comment (labeled_statement "std::string::reserve((string *)&local_4c,uVar5 * 2);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((string *)&local_4c,uVar5 * 2);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((string *)&local_4c,uVar5 * 2);" (call_expression "reserve((string *)&local_4c,uVar5 * 2)" identifier (argument_list "((string *)&local_4c,uVar5 * 2)" ( (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) , (binary_expression "uVar5 * 2" identifier * number_literal) ))) ;))) (expression_statement "iVar8 = *(int *)(iVar14 + 0x2c);" (assignment_expression "iVar8 = *(int *)(iVar14 + 0x2c)" identifier = (pointer_expression "*(int *)(iVar14 + 0x2c)" * (cast_expression "(int *)(iVar14 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2c)" ( (binary_expression "iVar14 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "local_88 = uVar5 - iVar8;" (assignment_expression "local_88 = uVar5 - iVar8" identifier = (binary_expression "uVar5 - iVar8" identifier - identifier)) ;) (if_statement "if (0 < (int)local_88) {\n    if (iVar8 < 0) {\n      local_88 = uVar5;\n    }\n    if (*(int *)(iVar14 + 0xc) == 0) {\n                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */\n      std::string::_M_replace((string *)&local_4c,0,local_48,(char *)pbVar15,local_88);\n      iVar8 = *(int *)(iVar14 + 0x2c);\n    }\n    else {\n      std::string::_M_replace_aux((string *)&local_4c,0,local_48,local_88 * 2,'\0');\n      pcVar7 = __add_grouping<char>\n                         ((char *)local_4c,*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88));\n      uVar13 = (int)pcVar7 - (int)local_4c;\n      if (local_48 < uVar13) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                   uVar13,local_48);\n      }\n      *pcVar7 = '\0';\n      iVar8 = *(int *)(iVar14 + 0x2c);\n      local_48 = uVar13;\n    }\n  }" if (parenthesized_expression "(0 < (int)local_88)" ( (binary_expression "0 < (int)local_88" number_literal < (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    if (iVar8 < 0) {\n      local_88 = uVar5;\n    }\n    if (*(int *)(iVar14 + 0xc) == 0) {\n                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */\n      std::string::_M_replace((string *)&local_4c,0,local_48,(char *)pbVar15,local_88);\n      iVar8 = *(int *)(iVar14 + 0x2c);\n    }\n    else {\n      std::string::_M_replace_aux((string *)&local_4c,0,local_48,local_88 * 2,'\0');\n      pcVar7 = __add_grouping<char>\n                         ((char *)local_4c,*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88));\n      uVar13 = (int)pcVar7 - (int)local_4c;\n      if (local_48 < uVar13) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                   uVar13,local_48);\n      }\n      *pcVar7 = '\0';\n      iVar8 = *(int *)(iVar14 + 0x2c);\n      local_48 = uVar13;\n    }\n  }" { (if_statement "if (iVar8 < 0) {\n      local_88 = uVar5;\n    }" if (parenthesized_expression "(iVar8 < 0)" ( (binary_expression "iVar8 < 0" identifier < number_literal) )) (compound_statement "{\n      local_88 = uVar5;\n    }" { (expression_statement "local_88 = uVar5;" (assignment_expression "local_88 = uVar5" identifier = identifier) ;) })) (if_statement "if (*(int *)(iVar14 + 0xc) == 0) {\n                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */\n      std::string::_M_replace((string *)&local_4c,0,local_48,(char *)pbVar15,local_88);\n      iVar8 = *(int *)(iVar14 + 0x2c);\n    }\n    else {\n      std::string::_M_replace_aux((string *)&local_4c,0,local_48,local_88 * 2,'\0');\n      pcVar7 = __add_grouping<char>\n                         ((char *)local_4c,*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88));\n      uVar13 = (int)pcVar7 - (int)local_4c;\n      if (local_48 < uVar13) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                   uVar13,local_48);\n      }\n      *pcVar7 = '\0';\n      iVar8 = *(int *)(iVar14 + 0x2c);\n      local_48 = uVar13;\n    }" if (parenthesized_expression "(*(int *)(iVar14 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar14 + 0xc) == 0" (pointer_expression "*(int *)(iVar14 + 0xc)" * (cast_expression "(int *)(iVar14 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0xc)" ( (binary_expression "iVar14 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */\n      std::string::_M_replace((string *)&local_4c,0,local_48,(char *)pbVar15,local_88);\n      iVar8 = *(int *)(iVar14 + 0x2c);\n    }" { comment (labeled_statement "std::string::_M_replace((string *)&local_4c,0,local_48,(char *)pbVar15,local_88);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace((string *)&local_4c,0,local_48,(char *)pbVar15,local_88);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((string *)&local_4c,0,local_48,(char *)pbVar15,local_88);" (call_expression "_M_replace((string *)&local_4c,0,local_48,(char *)pbVar15,local_88)" identifier (argument_list "((string *)&local_4c,0,local_48,(char *)pbVar15,local_88)" ( (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) , number_literal , identifier , (cast_expression "(char *)pbVar15" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) (expression_statement "iVar8 = *(int *)(iVar14 + 0x2c);" (assignment_expression "iVar8 = *(int *)(iVar14 + 0x2c)" identifier = (pointer_expression "*(int *)(iVar14 + 0x2c)" * (cast_expression "(int *)(iVar14 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2c)" ( (binary_expression "iVar14 + 0x2c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      std::string::_M_replace_aux((string *)&local_4c,0,local_48,local_88 * 2,'\0');\n      pcVar7 = __add_grouping<char>\n                         ((char *)local_4c,*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88));\n      uVar13 = (int)pcVar7 - (int)local_4c;\n      if (local_48 < uVar13) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                   uVar13,local_48);\n      }\n      *pcVar7 = '\0';\n      iVar8 = *(int *)(iVar14 + 0x2c);\n      local_48 = uVar13;\n    }" else (compound_statement "{\n      std::string::_M_replace_aux((string *)&local_4c,0,local_48,local_88 * 2,'\0');\n      pcVar7 = __add_grouping<char>\n                         ((char *)local_4c,*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88));\n      uVar13 = (int)pcVar7 - (int)local_4c;\n      if (local_48 < uVar13) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                   uVar13,local_48);\n      }\n      *pcVar7 = '\0';\n      iVar8 = *(int *)(iVar14 + 0x2c);\n      local_48 = uVar13;\n    }" { (labeled_statement "std::string::_M_replace_aux((string *)&local_4c,0,local_48,local_88 * 2,'\0');" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace_aux((string *)&local_4c,0,local_48,local_88 * 2,'\0');" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((string *)&local_4c,0,local_48,local_88 * 2,'\0');" (call_expression "_M_replace_aux((string *)&local_4c,0,local_48,local_88 * 2,'\0')" identifier (argument_list "((string *)&local_4c,0,local_48,local_88 * 2,'\0')" ( (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) , number_literal , identifier , (binary_expression "local_88 * 2" identifier * number_literal) , (char_literal "'\0'" ' escape_sequence ') ))) ;))) (expression_statement "pcVar7 = __add_grouping<char>\n                         ((char *)local_4c,*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88));" (assignment_expression "pcVar7 = __add_grouping<char>\n                         ((char *)local_4c,*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88))" identifier = (binary_expression "__add_grouping<char>\n                         ((char *)local_4c,*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88))" (binary_expression "__add_grouping<char" identifier < identifier) > (parenthesized_expression "((char *)local_4c,*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88))" ( (comma_expression "(char *)local_4c,*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88)" (cast_expression "(char *)local_4c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (comma_expression "*(char *)(iVar14 + 0x12),*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88)" (pointer_expression "*(char *)(iVar14 + 0x12)" * (cast_expression "(char *)(iVar14 + 0x12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x12)" ( (binary_expression "iVar14 + 0x12" identifier + number_literal) )))) , (comma_expression "*(char **)(iVar14 + 8),\n                          *(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88)" (pointer_expression "*(char **)(iVar14 + 8)" * (cast_expression "(char **)(iVar14 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) , (comma_expression "*(uint *)(iVar14 + 0xc),(char *)pbVar15,(char *)(pbVar15 + local_88)" (pointer_expression "*(uint *)(iVar14 + 0xc)" * (cast_expression "(uint *)(iVar14 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0xc)" ( (binary_expression "iVar14 + 0xc" identifier + number_literal) )))) , (comma_expression "(char *)pbVar15,(char *)(pbVar15 + local_88)" (cast_expression "(char *)pbVar15" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)(pbVar15 + local_88)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar15 + local_88)" ( (binary_expression "pbVar15 + local_88" identifier + identifier) )))))))) )))) ;) (expression_statement "uVar13 = (int)pcVar7 - (int)local_4c;" (assignment_expression "uVar13 = (int)pcVar7 - (int)local_4c" identifier = (binary_expression "(int)pcVar7 - (int)local_4c" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (local_48 < uVar13) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                   uVar13,local_48);\n      }" if (parenthesized_expression "(local_48 < uVar13)" ( (binary_expression "local_48 < uVar13" identifier < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                   uVar13,local_48);\n      }" { comment comment (expression_statement "__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                   uVar13,local_48);" (call_expression "__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                   uVar13,local_48)" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                   uVar13,local_48)" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::erase"" " string_content ") , identifier , identifier ))) ;) })) (expression_statement "*pcVar7 = '\0';" (assignment_expression "*pcVar7 = '\0'" (pointer_expression "*pcVar7" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar8 = *(int *)(iVar14 + 0x2c);" (assignment_expression "iVar8 = *(int *)(iVar14 + 0x2c)" identifier = (pointer_expression "*(int *)(iVar14 + 0x2c)" * (cast_expression "(int *)(iVar14 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2c)" ( (binary_expression "iVar14 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "local_48 = uVar13;" (assignment_expression "local_48 = uVar13" identifier = identifier) ;) }))) })) (expression_statement "uVar13 = local_48;" (assignment_expression "uVar13 = local_48" identifier = identifier) ;) (if_statement "if (0 < iVar8) {\n    uVar3 = *(undefined1 *)(iVar14 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar13) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */\n      std::string::_M_replace_aux((string *)&local_4c,uVar1,0,-local_88,*(char *)(iVar14 + 0x39));\n      if (0x7fffffff - local_48 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }\n      std::string::_M_append((string *)&local_4c,(char *)pbVar15,uVar5);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar14 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      std::string::_M_append\n                ((string *)&local_4c,(char *)(pbVar15 + local_88),*(uint *)(iVar14 + 0x2c));\n    }\n  }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n    uVar3 = *(undefined1 *)(iVar14 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar13) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */\n      std::string::_M_replace_aux((string *)&local_4c,uVar1,0,-local_88,*(char *)(iVar14 + 0x39));\n      if (0x7fffffff - local_48 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }\n      std::string::_M_append((string *)&local_4c,(char *)pbVar15,uVar5);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar14 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      std::string::_M_append\n                ((string *)&local_4c,(char *)(pbVar15 + local_88),*(uint *)(iVar14 + 0x2c));\n    }\n  }" { (expression_statement "uVar3 = *(undefined1 *)(iVar14 + 0x11);" (assignment_expression "uVar3 = *(undefined1 *)(iVar14 + 0x11)" identifier = (pointer_expression "*(undefined1 *)(iVar14 + 0x11)" * (cast_expression "(undefined1 *)(iVar14 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x11)" ( (binary_expression "iVar14 + 0x11" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = local_48 + 1;" (assignment_expression "uVar1 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = 0xf;" (assignment_expression "uVar9 = 0xf" identifier = number_literal) ;) (if_statement "if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n      uVar9 = local_44[0];\n    }" { (expression_statement "uVar9 = local_44[0];" (assignment_expression "uVar9 = local_44[0]" identifier = (subscript_expression "local_44[0]" identifier [ number_literal ])) ;) })) (if_statement "if (uVar9 < uVar1) {\n      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);\n    }" if (parenthesized_expression "(uVar9 < uVar1)" ( (binary_expression "uVar9 < uVar1" identifier < identifier) )) (compound_statement "{\n      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);\n    }" { (labeled_statement "std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);" (call_expression "_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1)" identifier (argument_list "((string *)&local_4c,local_48,0,(char *)0x0,1)" ( (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "*(undefined1 *)((int)local_4c + uVar13) = uVar3;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar13) = uVar3" (pointer_expression "*(undefined1 *)((int)local_4c + uVar13)" * (cast_expression "(undefined1 *)((int)local_4c + uVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c + uVar13)" ( (binary_expression "(int)local_4c + uVar13" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)((int)local_4c + uVar1) = 0;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar1) = 0" (pointer_expression "*(undefined1 *)((int)local_4c + uVar1)" * (cast_expression "(undefined1 *)((int)local_4c + uVar1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c + uVar1)" ( (binary_expression "(int)local_4c + uVar1" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "local_48 = uVar1;" (assignment_expression "local_48 = uVar1" identifier = identifier) ;) (if_statement "if ((int)local_88 < 0) {\n                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */\n      std::string::_M_replace_aux((string *)&local_4c,uVar1,0,-local_88,*(char *)(iVar14 + 0x39));\n      if (0x7fffffff - local_48 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }\n      std::string::_M_append((string *)&local_4c,(char *)pbVar15,uVar5);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar14 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      std::string::_M_append\n                ((string *)&local_4c,(char *)(pbVar15 + local_88),*(uint *)(iVar14 + 0x2c));\n    }" if (parenthesized_expression "((int)local_88 < 0)" ( (binary_expression "(int)local_88 < 0" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */\n      std::string::_M_replace_aux((string *)&local_4c,uVar1,0,-local_88,*(char *)(iVar14 + 0x39));\n      if (0x7fffffff - local_48 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }\n      std::string::_M_append((string *)&local_4c,(char *)pbVar15,uVar5);\n    }" { comment (labeled_statement "std::string::_M_replace_aux((string *)&local_4c,uVar1,0,-local_88,*(char *)(iVar14 + 0x39));" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace_aux((string *)&local_4c,uVar1,0,-local_88,*(char *)(iVar14 + 0x39));" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((string *)&local_4c,uVar1,0,-local_88,*(char *)(iVar14 + 0x39));" (call_expression "_M_replace_aux((string *)&local_4c,uVar1,0,-local_88,*(char *)(iVar14 + 0x39))" identifier (argument_list "((string *)&local_4c,uVar1,0,-local_88,*(char *)(iVar14 + 0x39))" ( (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) , identifier , number_literal , (unary_expression "-local_88" - identifier) , (pointer_expression "*(char *)(iVar14 + 0x39)" * (cast_expression "(char *)(iVar14 + 0x39)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x39)" ( (binary_expression "iVar14 + 0x39" identifier + number_literal) )))) ))) ;))) (if_statement "if (0x7fffffff - local_48 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }" if (parenthesized_expression "(0x7fffffff - local_48 < uVar5)" ( (binary_expression "0x7fffffff - local_48 < uVar5" (binary_expression "0x7fffffff - local_48" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }" { comment comment (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (labeled_statement "std::string::_M_append((string *)&local_4c,(char *)pbVar15,uVar5);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)&local_4c,(char *)pbVar15,uVar5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&local_4c,(char *)pbVar15,uVar5);" (call_expression "_M_append((string *)&local_4c,(char *)pbVar15,uVar5)" identifier (argument_list "((string *)&local_4c,(char *)pbVar15,uVar5)" ( (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) , (cast_expression "(char *)pbVar15" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) }) (else_clause "else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar14 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      std::string::_M_append\n                ((string *)&local_4c,(char *)(pbVar15 + local_88),*(uint *)(iVar14 + 0x2c));\n    }" else (compound_statement "{\n      if (0x7fffffff - uVar1 < *(uint *)(iVar14 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */\n      std::string::_M_append\n                ((string *)&local_4c,(char *)(pbVar15 + local_88),*(uint *)(iVar14 + 0x2c));\n    }" { (if_statement "if (0x7fffffff - uVar1 < *(uint *)(iVar14 + 0x2c)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }" if (parenthesized_expression "(0x7fffffff - uVar1 < *(uint *)(iVar14 + 0x2c))" ( (binary_expression "0x7fffffff - uVar1 < *(uint *)(iVar14 + 0x2c)" (binary_expression "0x7fffffff - uVar1" number_literal - identifier) < (pointer_expression "*(uint *)(iVar14 + 0x2c)" * (cast_expression "(uint *)(iVar14 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2c)" ( (binary_expression "iVar14 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */\n        __throw_length_error("basic_string::append");\n      }" { comment comment (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) comment (labeled_statement "std::string::_M_append\n                ((string *)&local_4c,(char *)(pbVar15 + local_88),*(uint *)(iVar14 + 0x2c));" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append\n                ((string *)&local_4c,(char *)(pbVar15 + local_88),*(uint *)(iVar14 + 0x2c));" statement_identifier : (ERROR ":" :) (expression_statement "_M_append\n                ((string *)&local_4c,(char *)(pbVar15 + local_88),*(uint *)(iVar14 + 0x2c));" (call_expression "_M_append\n                ((string *)&local_4c,(char *)(pbVar15 + local_88),*(uint *)(iVar14 + 0x2c))" identifier (argument_list "((string *)&local_4c,(char *)(pbVar15 + local_88),*(uint *)(iVar14 + 0x2c))" ( (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) , (cast_expression "(char *)(pbVar15 + local_88)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar15 + local_88)" ( (binary_expression "pbVar15 + local_88" identifier + identifier) ))) , (pointer_expression "*(uint *)(iVar14 + 0x2c)" * (cast_expression "(uint *)(iVar14 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2c)" ( (binary_expression "iVar14 + 0x2c" identifier + number_literal) )))) ))) ;))) }))) })) (expression_statement "uVar5 = *(uint *)(param_5 + 0xc) & 0xb0;" (assignment_expression "uVar5 = *(uint *)(param_5 + 0xc) & 0xb0" identifier = (binary_expression "*(uint *)(param_5 + 0xc) & 0xb0" (pointer_expression "*(uint *)(param_5 + 0xc)" * (cast_expression "(uint *)(param_5 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xc)" ( (binary_expression "param_5 + 0xc" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "uVar13 = local_48 + local_7c;" (assignment_expression "uVar13 = local_48 + local_7c" identifier = (binary_expression "local_48 + local_7c" identifier + identifier)) ;) (if_statement "if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar13 = uVar13 + *(int *)(iVar14 + 0x18);\n  }" if (parenthesized_expression "((*(uint *)(param_5 + 0xc) & 0x200) != 0)" ( (binary_expression "(*(uint *)(param_5 + 0xc) & 0x200) != 0" (parenthesized_expression "(*(uint *)(param_5 + 0xc) & 0x200)" ( (binary_expression "*(uint *)(param_5 + 0xc) & 0x200" (pointer_expression "*(uint *)(param_5 + 0xc)" * (cast_expression "(uint *)(param_5 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xc)" ( (binary_expression "param_5 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar13 = uVar13 + *(int *)(iVar14 + 0x18);\n  }" { (expression_statement "uVar13 = uVar13 + *(int *)(iVar14 + 0x18);" (assignment_expression "uVar13 = uVar13 + *(int *)(iVar14 + 0x18)" identifier = (binary_expression "uVar13 + *(int *)(iVar14 + 0x18)" identifier + (pointer_expression "*(int *)(iVar14 + 0x18)" * (cast_expression "(int *)(iVar14 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x18)" ( (binary_expression "iVar14 + 0x18" identifier + number_literal) )))))) ;) })) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c[0] = local_2c[0] & 0xffffff00;" (assignment_expression "local_2c[0] = local_2c[0] & 0xffffff00" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = (binary_expression "local_2c[0] & 0xffffff00" (subscript_expression "local_2c[0]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) comment (labeled_statement "std::string::reserve((string *)&local_34,uVar13 * 2);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((string *)&local_34,uVar13 * 2);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((string *)&local_34,uVar13 * 2);" (call_expression "reserve((string *)&local_34,uVar13 * 2)" identifier (argument_list "((string *)&local_34,uVar13 * 2)" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , (binary_expression "uVar13 * 2" identifier * number_literal) ))) ;))) (expression_statement "local_80 = *(uint *)(param_5 + 8);" (assignment_expression "local_80 = *(uint *)(param_5 + 8)" identifier = (pointer_expression "*(uint *)(param_5 + 8)" * (cast_expression "(uint *)(param_5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 8)" ( (binary_expression "param_5 + 8" identifier + number_literal) ))))) ;) (expression_statement "psVar16 = (string *)&local_50;" (assignment_expression "psVar16 = (string *)&local_50" identifier = (cast_expression "(string *)&local_50" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_50" & identifier))) ;) (expression_statement "bVar12 = uVar5 == 0x10 && uVar13 < local_80;" (assignment_expression "bVar12 = uVar5 == 0x10 && uVar13 < local_80" identifier = (binary_expression "uVar5 == 0x10 && uVar13 < local_80" (binary_expression "uVar5 == 0x10" identifier == number_literal) && (binary_expression "uVar13 < local_80" identifier < identifier))) ;) (do_statement "do {\n    uVar1 = local_30;\n    switch(*psVar16) {\n    case (string)0x0:\n      if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      break;\n    case (string)0x1:\n      if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      else {\n        uVar9 = local_30 + 1;\n        uVar10 = 0xf;\n        if (local_34 != local_2c) {\n          uVar10 = local_2c[0];\n        }\n        if (uVar10 < uVar9) {\n                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */\n          std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar9;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case (string)0x2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar14 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722b8 to 002722bc has its CatchHandler @ 00272303 */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append\n                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18));\n      }\n      break;\n    case (string)0x3:\n      if (local_7c != 0) {\n        std::string::push_back((string *)&local_34,*local_8c);\n      }\n      break;\n    case (string)0x4:\n      std::string::_M_append((string *)&local_34,(char *)local_4c,local_48);\n    }\n    psVar16 = psVar16 + 1;\n  } while ((string *)&local_4c != psVar16);" do (compound_statement "{\n    uVar1 = local_30;\n    switch(*psVar16) {\n    case (string)0x0:\n      if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      break;\n    case (string)0x1:\n      if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      else {\n        uVar9 = local_30 + 1;\n        uVar10 = 0xf;\n        if (local_34 != local_2c) {\n          uVar10 = local_2c[0];\n        }\n        if (uVar10 < uVar9) {\n                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */\n          std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar9;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case (string)0x2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar14 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722b8 to 002722bc has its CatchHandler @ 00272303 */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append\n                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18));\n      }\n      break;\n    case (string)0x3:\n      if (local_7c != 0) {\n        std::string::push_back((string *)&local_34,*local_8c);\n      }\n      break;\n    case (string)0x4:\n      std::string::_M_append((string *)&local_34,(char *)local_4c,local_48);\n    }\n    psVar16 = psVar16 + 1;\n  }" { (expression_statement "uVar1 = local_30;" (assignment_expression "uVar1 = local_30" identifier = identifier) ;) (switch_statement "switch(*psVar16) {\n    case (string)0x0:\n      if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      break;\n    case (string)0x1:\n      if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      else {\n        uVar9 = local_30 + 1;\n        uVar10 = 0xf;\n        if (local_34 != local_2c) {\n          uVar10 = local_2c[0];\n        }\n        if (uVar10 < uVar9) {\n                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */\n          std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar9;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case (string)0x2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar14 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722b8 to 002722bc has its CatchHandler @ 00272303 */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append\n                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18));\n      }\n      break;\n    case (string)0x3:\n      if (local_7c != 0) {\n        std::string::push_back((string *)&local_34,*local_8c);\n      }\n      break;\n    case (string)0x4:\n      std::string::_M_append((string *)&local_34,(char *)local_4c,local_48);\n    }" switch (parenthesized_expression "(*psVar16)" ( (pointer_expression "*psVar16" * identifier) )) (compound_statement "{\n    case (string)0x0:\n      if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      break;\n    case (string)0x1:\n      if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      else {\n        uVar9 = local_30 + 1;\n        uVar10 = 0xf;\n        if (local_34 != local_2c) {\n          uVar10 = local_2c[0];\n        }\n        if (uVar10 < uVar9) {\n                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */\n          std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar9;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case (string)0x2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar14 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722b8 to 002722bc has its CatchHandler @ 00272303 */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append\n                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18));\n      }\n      break;\n    case (string)0x3:\n      if (local_7c != 0) {\n        std::string::push_back((string *)&local_34,*local_8c);\n      }\n      break;\n    case (string)0x4:\n      std::string::_M_append((string *)&local_34,(char *)local_4c,local_48);\n    }" { (case_statement "case (string)0x0:\n      if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      break;" case (cast_expression "(string)0x0" ( (type_descriptor "string" type_identifier) ) number_literal) : (if_statement "if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }" { (labeled_statement "std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);" (call_expression "_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6)" identifier (argument_list "((string *)&local_34,local_30,0,local_80 - uVar13,param_6)" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , identifier , number_literal , (binary_expression "local_80 - uVar13" identifier - identifier) , identifier ))) ;))) })) (break_statement "break;" break ;)) (case_statement "case (string)0x1:\n      if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      else {\n        uVar9 = local_30 + 1;\n        uVar10 = 0xf;\n        if (local_34 != local_2c) {\n          uVar10 = local_2c[0];\n        }\n        if (uVar10 < uVar9) {\n                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */\n          std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar9;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;" case (cast_expression "(string)0x1" ( (type_descriptor "string" type_identifier) ) number_literal) : (if_statement "if (bVar12) {\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }\n      else {\n        uVar9 = local_30 + 1;\n        uVar10 = 0xf;\n        if (local_34 != local_2c) {\n          uVar10 = local_2c[0];\n        }\n        if (uVar10 < uVar9) {\n                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */\n          std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar9;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n        std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);\n      }" { (labeled_statement "std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6);" (call_expression "_M_replace_aux((string *)&local_34,local_30,0,local_80 - uVar13,param_6)" identifier (argument_list "((string *)&local_34,local_30,0,local_80 - uVar13,param_6)" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , identifier , number_literal , (binary_expression "local_80 - uVar13" identifier - identifier) , identifier ))) ;))) }) (else_clause "else {\n        uVar9 = local_30 + 1;\n        uVar10 = 0xf;\n        if (local_34 != local_2c) {\n          uVar10 = local_2c[0];\n        }\n        if (uVar10 < uVar9) {\n                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */\n          std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar9;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }" else (compound_statement "{\n        uVar9 = local_30 + 1;\n        uVar10 = 0xf;\n        if (local_34 != local_2c) {\n          uVar10 = local_2c[0];\n        }\n        if (uVar10 < uVar9) {\n                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */\n          std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar9;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }" { (expression_statement "uVar9 = local_30 + 1;" (assignment_expression "uVar9 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = 0xf;" (assignment_expression "uVar10 = 0xf" identifier = number_literal) ;) (if_statement "if (local_34 != local_2c) {\n          uVar10 = local_2c[0];\n        }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n          uVar10 = local_2c[0];\n        }" { (expression_statement "uVar10 = local_2c[0];" (assignment_expression "uVar10 = local_2c[0]" identifier = (subscript_expression "local_2c[0]" identifier [ number_literal ])) ;) })) (if_statement "if (uVar10 < uVar9) {\n                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */\n          std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);\n        }" if (parenthesized_expression "(uVar10 < uVar9)" ( (binary_expression "uVar10 < uVar9" identifier < identifier) )) (compound_statement "{\n                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */\n          std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);\n        }" { comment (labeled_statement "std::string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1);" (call_expression "_M_mutate((string *)&local_34,local_30,0,(char *)0x0,1)" identifier (argument_list "((string *)&local_34,local_30,0,(char *)0x0,1)" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "*(char *)((int)local_34 + uVar1) = param_6;" (assignment_expression "*(char *)((int)local_34 + uVar1) = param_6" (pointer_expression "*(char *)((int)local_34 + uVar1)" * (cast_expression "(char *)((int)local_34 + uVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + uVar1)" ( (binary_expression "(int)local_34 + uVar1" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "local_30 = uVar9;" (assignment_expression "local_30 = uVar9" identifier = identifier) ;) (expression_statement "*(undefined1 *)((int)local_34 + uVar1 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)local_34 + uVar1 + 1) = 0" (pointer_expression "*(undefined1 *)((int)local_34 + uVar1 + 1)" * (cast_expression "(undefined1 *)((int)local_34 + uVar1 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + uVar1 + 1)" ( (binary_expression "(int)local_34 + uVar1 + 1" (binary_expression "(int)local_34 + uVar1" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) }))) (break_statement "break;" break ;)) (case_statement "case (string)0x2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar14 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722b8 to 002722bc has its CatchHandler @ 00272303 */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append\n                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18));\n      }\n      break;" case (cast_expression "(string)0x2" ( (type_descriptor "string" type_identifier) ) number_literal) : (if_statement "if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar14 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722b8 to 002722bc has its CatchHandler @ 00272303 */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append\n                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18));\n      }" if (parenthesized_expression "((*(byte *)(param_5 + 0xd) & 2) != 0)" ( (binary_expression "(*(byte *)(param_5 + 0xd) & 2) != 0" (parenthesized_expression "(*(byte *)(param_5 + 0xd) & 2)" ( (binary_expression "*(byte *)(param_5 + 0xd) & 2" (pointer_expression "*(byte *)(param_5 + 0xd)" * (cast_expression "(byte *)(param_5 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xd)" ( (binary_expression "param_5 + 0xd" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (0x7fffffff - local_30 < *(uint *)(iVar14 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722b8 to 002722bc has its CatchHandler @ 00272303 */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append\n                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18));\n      }" { (if_statement "if (0x7fffffff - local_30 < *(uint *)(iVar14 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722b8 to 002722bc has its CatchHandler @ 00272303 */\n          __throw_length_error("basic_string::append");\n        }" if (parenthesized_expression "(0x7fffffff - local_30 < *(uint *)(iVar14 + 0x18))" ( (binary_expression "0x7fffffff - local_30 < *(uint *)(iVar14 + 0x18)" (binary_expression "0x7fffffff - local_30" number_literal - identifier) < (pointer_expression "*(uint *)(iVar14 + 0x18)" * (cast_expression "(uint *)(iVar14 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x18)" ( (binary_expression "iVar14 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002722b8 to 002722bc has its CatchHandler @ 00272303 */\n          __throw_length_error("basic_string::append");\n        }" { comment comment (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (labeled_statement "std::string::_M_append\n                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append\n                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18));" statement_identifier : (ERROR ":" :) (expression_statement "_M_append\n                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18));" (call_expression "_M_append\n                  ((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18))" identifier (argument_list "((string *)&local_34,*(char **)(iVar14 + 0x14),*(uint *)(iVar14 + 0x18))" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , (pointer_expression "*(char **)(iVar14 + 0x14)" * (cast_expression "(char **)(iVar14 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x14)" ( (binary_expression "iVar14 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(uint *)(iVar14 + 0x18)" * (cast_expression "(uint *)(iVar14 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x18)" ( (binary_expression "iVar14 + 0x18" identifier + number_literal) )))) ))) ;))) })) (break_statement "break;" break ;)) (case_statement "case (string)0x3:\n      if (local_7c != 0) {\n        std::string::push_back((string *)&local_34,*local_8c);\n      }\n      break;" case (cast_expression "(string)0x3" ( (type_descriptor "string" type_identifier) ) number_literal) : (if_statement "if (local_7c != 0) {\n        std::string::push_back((string *)&local_34,*local_8c);\n      }" if (parenthesized_expression "(local_7c != 0)" ( (binary_expression "local_7c != 0" identifier != number_literal) )) (compound_statement "{\n        std::string::push_back((string *)&local_34,*local_8c);\n      }" { (labeled_statement "std::string::push_back((string *)&local_34,*local_8c);" statement_identifier : (ERROR ":" :) (labeled_statement "string::push_back((string *)&local_34,*local_8c);" statement_identifier : (ERROR ":" :) (expression_statement "push_back((string *)&local_34,*local_8c);" (call_expression "push_back((string *)&local_34,*local_8c)" identifier (argument_list "((string *)&local_34,*local_8c)" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , (pointer_expression "*local_8c" * identifier) ))) ;))) })) (break_statement "break;" break ;)) (case_statement "case (string)0x4:\n      std::string::_M_append((string *)&local_34,(char *)local_4c,local_48);" case (cast_expression "(string)0x4" ( (type_descriptor "string" type_identifier) ) number_literal) : (labeled_statement "std::string::_M_append((string *)&local_34,(char *)local_4c,local_48);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)&local_34,(char *)local_4c,local_48);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&local_34,(char *)local_4c,local_48);" (call_expression "_M_append((string *)&local_34,(char *)local_4c,local_48)" identifier (argument_list "((string *)&local_34,(char *)local_4c,local_48)" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , (cast_expression "(char *)local_4c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)))) })) (expression_statement "psVar16 = psVar16 + 1;" (assignment_expression "psVar16 = psVar16 + 1" identifier = (binary_expression "psVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((string *)&local_4c != psVar16)" ( (binary_expression "(string *)&local_4c != psVar16" (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) != identifier) )) ;) (if_statement "if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar5 == 0x20) {\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - local_30,param_6);\n    }\n    else {\n      std::string::_M_replace_aux((string *)&local_34,0,0,local_80 - local_30,param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      __throw_length_error("basic_string::append");\n    }\n    std::string::_M_append((string *)&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }" if (parenthesized_expression "(local_7c < 2)" ( (binary_expression "local_7c < 2" identifier < number_literal) )) (compound_statement "{\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar5 == 0x20) {\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - local_30,param_6);\n    }\n    else {\n      std::string::_M_replace_aux((string *)&local_34,0,0,local_80 - local_30,param_6);\n    }\n  }" { (if_statement "if (local_80 <= local_30) goto LAB_00271ef2;" if (parenthesized_expression "(local_80 <= local_30)" ( (binary_expression "local_80 <= local_30" identifier <= identifier) )) (goto_statement "goto LAB_00271ef2;" goto statement_identifier ;)) (labeled_statement "LAB_00271f70:\n    if (uVar5 == 0x20) {\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - local_30,param_6);\n    }\n    else {\n      std::string::_M_replace_aux((string *)&local_34,0,0,local_80 - local_30,param_6);\n    }" statement_identifier : (if_statement "if (uVar5 == 0x20) {\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - local_30,param_6);\n    }\n    else {\n      std::string::_M_replace_aux((string *)&local_34,0,0,local_80 - local_30,param_6);\n    }" if (parenthesized_expression "(uVar5 == 0x20)" ( (binary_expression "uVar5 == 0x20" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */\n      std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - local_30,param_6);\n    }" { comment (labeled_statement "std::string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - local_30,param_6);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace_aux((string *)&local_34,local_30,0,local_80 - local_30,param_6);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((string *)&local_34,local_30,0,local_80 - local_30,param_6);" (call_expression "_M_replace_aux((string *)&local_34,local_30,0,local_80 - local_30,param_6)" identifier (argument_list "((string *)&local_34,local_30,0,local_80 - local_30,param_6)" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , identifier , number_literal , (binary_expression "local_80 - local_30" identifier - identifier) , identifier ))) ;))) }) (else_clause "else {\n      std::string::_M_replace_aux((string *)&local_34,0,0,local_80 - local_30,param_6);\n    }" else (compound_statement "{\n      std::string::_M_replace_aux((string *)&local_34,0,0,local_80 - local_30,param_6);\n    }" { (labeled_statement "std::string::_M_replace_aux((string *)&local_34,0,0,local_80 - local_30,param_6);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace_aux((string *)&local_34,0,0,local_80 - local_30,param_6);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((string *)&local_34,0,0,local_80 - local_30,param_6);" (call_expression "_M_replace_aux((string *)&local_34,0,0,local_80 - local_30,param_6)" identifier (argument_list "((string *)&local_34,0,0,local_80 - local_30,param_6)" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , number_literal , number_literal , (binary_expression "local_80 - local_30" identifier - identifier) , identifier ))) ;))) })))) }) (else_clause "else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      __throw_length_error("basic_string::append");\n    }\n    std::string::_M_append((string *)&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }" else (compound_statement "{\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      __throw_length_error("basic_string::append");\n    }\n    std::string::_M_append((string *)&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }" { (if_statement "if (0x7fffffff - local_30 < local_7c - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      __throw_length_error("basic_string::append");\n    }" if (parenthesized_expression "(0x7fffffff - local_30 < local_7c - 1)" ( (binary_expression "0x7fffffff - local_30 < local_7c - 1" (binary_expression "0x7fffffff - local_30" number_literal - identifier) < (binary_expression "local_7c - 1" identifier - number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */\n      __throw_length_error("basic_string::append");\n    }" { comment comment (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (labeled_statement "std::string::_M_append((string *)&local_34,local_8c + 1,local_7c - 1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)&local_34,local_8c + 1,local_7c - 1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&local_34,local_8c + 1,local_7c - 1);" (call_expression "_M_append((string *)&local_34,local_8c + 1,local_7c - 1)" identifier (argument_list "((string *)&local_34,local_8c + 1,local_7c - 1)" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , (binary_expression "local_8c + 1" identifier + number_literal) , (binary_expression "local_7c - 1" identifier - number_literal) ))) ;))) (if_statement "if (local_30 < local_80) goto LAB_00271f70;" if (parenthesized_expression "(local_30 < local_80)" ( (binary_expression "local_30 < local_80" identifier < identifier) )) (goto_statement "goto LAB_00271f70;" goto statement_identifier ;)) (labeled_statement "LAB_00271ef2:\n    local_80 = local_30;" statement_identifier : (expression_statement "local_80 = local_30;" (assignment_expression "local_80 = local_30" identifier = identifier) ;)) }))) (if_statement "if (local_6d == '\0') {\n    uVar5 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar5;\n  }" if (parenthesized_expression "(local_6d == '\0')" ( (binary_expression "local_6d == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar5 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar5;\n  }" { (expression_statement "uVar5 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);" (assignment_expression "uVar5 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80)" identifier = (call_expression "(**(code **)(*param_3 + 0x30))(param_3,local_34,local_80)" (parenthesized_expression "(**(code **)(*param_3 + 0x30))" ( (pointer_expression "**(code **)(*param_3 + 0x30)" * (pointer_expression "*(code **)(*param_3 + 0x30)" * (cast_expression "(code **)(*param_3 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x30)" ( (binary_expression "*param_3 + 0x30" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3,local_34,local_80)" ( identifier , identifier , identifier )))) ;) (expression_statement "local_6d = local_80 != uVar5;" (assignment_expression "local_6d = local_80 != uVar5" identifier = (binary_expression "local_80 != uVar5" identifier != identifier)) ;) })) (expression_statement "local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);" (assignment_expression "local_6c._1_3_ = (undefined3)((uint)param_4 >> 8)" (field_expression "local_6c._1_3_" identifier . field_identifier) = (call_expression "(undefined3)((uint)param_4 >> 8)" (parenthesized_expression "(undefined3)" ( identifier )) (argument_list "((uint)param_4 >> 8)" ( (binary_expression "(uint)param_4 >> 8" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_6c = CONCAT31(local_6c._1_3_,local_6d);" (assignment_expression "local_6c = CONCAT31(local_6c._1_3_,local_6d)" identifier = (call_expression "CONCAT31(local_6c._1_3_,local_6d)" identifier (argument_list "(local_6c._1_3_,local_6d)" ( (field_expression "local_6c._1_3_" identifier . field_identifier) , identifier )))) ;) (if_statement "if (local_34 != local_2c) {\n    operator_delete(local_34);\n  }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n    operator_delete(local_34);\n  }" { (expression_statement "operator_delete(local_34);" (call_expression "operator_delete(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (if_statement "if (local_4c != local_44) {\n    operator_delete(local_4c);\n  }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n    operator_delete(local_4c);\n  }" { (expression_statement "operator_delete(local_4c);" (call_expression "operator_delete(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) })) (labeled_statement "LAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_5 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_5 + 8) = 0" (pointer_expression "*(undefined4 *)(param_5 + 8)" * (cast_expression "(undefined4 *)(param_5 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 8)" ( (binary_expression "param_5 + 8" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "local_6c = CONCAT31(local_6c._1_3_,local_6d);" (assignment_expression "local_6c = CONCAT31(local_6c._1_3_,local_6d)" identifier = (call_expression "CONCAT31(local_6c._1_3_,local_6d)" identifier (argument_list "(local_6c._1_3_,local_6d)" ( (field_expression "local_6c._1_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00271b30(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5\n                 ,char param_6,undefined4 *param_7)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined1 uVar3;\n  int iVar4;\n  int iVar5;\n  byte *pbVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  uint uVar12;\n  bool bVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  uint **ppuVar17;\n  char *local_8c;\n  uint local_88;\n  uint local_80;\n  uint local_7c;\n  char local_6d;\n  undefined4 local_6c;\n  uint *local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  uint *local_34;\n  uint local_30;\n  uint local_2c [7];\n  \n  local_6d = (char)param_4;\n  local_6c = param_4;\n  iVar4 = FUN_00212050(param_5 + 0x6c);\n  iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);\n  piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);\n  iVar15 = *piVar2;\n  if (iVar15 == 0) {\n                    \n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    \n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }\n  pbVar16 = (byte *)*param_7;\n  if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }\n  else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }\n  pbVar11 = pbVar16 + param_7[1];\n  if ((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))\n  goto LAB_00271c00;\n  do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);\n  uVar12 = (int)pbVar6 - (int)pbVar16;\njoined_r0x00271c37:\n  if (uVar12 == 0) goto LAB_00271c00;\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n                    \n  FUN_002052b0(&local_4c,uVar12 * 2);\n  iVar4 = *(int *)(iVar15 + 0x2c);\n  local_88 = uVar12 - iVar4;\n  if (0 < (int)local_88) {\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }\n  uVar14 = local_48;\n  if (0 < iVar4) {\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }\n  uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;\n  uVar14 = local_48 + local_7c;\n  if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }\n  local_30 = 0;\n  local_2c[0] = local_2c[0] & 0xffffff00;\n  local_34 = local_2c;\n                    \n  FUN_002052b0(&local_34,uVar14 * 2);\n  local_80 = *(uint *)(param_5 + 8);\n  ppuVar17 = &local_50;\n  bVar13 = uVar12 == 0x10 && uVar14 < local_80;\n  do {\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  } while (&local_4c != ppuVar17);\n  if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }\n  if (local_6d == '\0') {\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }\n  local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  if (local_34 != local_2c) {\n    FUN_001fd020(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001fd020(local_4c);\n  }\nLAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  *param_1 = param_3;\n  param_1[1] = local_6c;\n  return;\n}\n\n" (function_definition "void FUN_00271b30(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5\n                 ,char param_6,undefined4 *param_7)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined1 uVar3;\n  int iVar4;\n  int iVar5;\n  byte *pbVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  uint uVar12;\n  bool bVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  uint **ppuVar17;\n  char *local_8c;\n  uint local_88;\n  uint local_80;\n  uint local_7c;\n  char local_6d;\n  undefined4 local_6c;\n  uint *local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  uint *local_34;\n  uint local_30;\n  uint local_2c [7];\n  \n  local_6d = (char)param_4;\n  local_6c = param_4;\n  iVar4 = FUN_00212050(param_5 + 0x6c);\n  iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);\n  piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);\n  iVar15 = *piVar2;\n  if (iVar15 == 0) {\n                    \n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    \n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }\n  pbVar16 = (byte *)*param_7;\n  if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }\n  else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }\n  pbVar11 = pbVar16 + param_7[1];\n  if ((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))\n  goto LAB_00271c00;\n  do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);\n  uVar12 = (int)pbVar6 - (int)pbVar16;\njoined_r0x00271c37:\n  if (uVar12 == 0) goto LAB_00271c00;\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n                    \n  FUN_002052b0(&local_4c,uVar12 * 2);\n  iVar4 = *(int *)(iVar15 + 0x2c);\n  local_88 = uVar12 - iVar4;\n  if (0 < (int)local_88) {\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }\n  uVar14 = local_48;\n  if (0 < iVar4) {\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }\n  uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;\n  uVar14 = local_48 + local_7c;\n  if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }\n  local_30 = 0;\n  local_2c[0] = local_2c[0] & 0xffffff00;\n  local_34 = local_2c;\n                    \n  FUN_002052b0(&local_34,uVar14 * 2);\n  local_80 = *(uint *)(param_5 + 8);\n  ppuVar17 = &local_50;\n  bVar13 = uVar12 == 0x10 && uVar14 < local_80;\n  do {\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  } while (&local_4c != ppuVar17);\n  if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }\n  if (local_6d == '\0') {\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }\n  local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  if (local_34 != local_2c) {\n    FUN_001fd020(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001fd020(local_4c);\n  }\nLAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  *param_1 = param_3;\n  param_1[1] = local_6c;\n  return;\n}" primitive_type (function_declarator "FUN_00271b30(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5\n                 ,char param_6,undefined4 *param_7)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5\n                 ,char param_6,undefined4 *param_7)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "char param_6" primitive_type identifier) , (parameter_declaration "undefined4 *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  undefined1 uVar3;\n  int iVar4;\n  int iVar5;\n  byte *pbVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  uint uVar12;\n  bool bVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  uint **ppuVar17;\n  char *local_8c;\n  uint local_88;\n  uint local_80;\n  uint local_7c;\n  char local_6d;\n  undefined4 local_6c;\n  uint *local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  uint *local_34;\n  uint local_30;\n  uint local_2c [7];\n  \n  local_6d = (char)param_4;\n  local_6c = param_4;\n  iVar4 = FUN_00212050(param_5 + 0x6c);\n  iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);\n  piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);\n  iVar15 = *piVar2;\n  if (iVar15 == 0) {\n                    \n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    \n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }\n  pbVar16 = (byte *)*param_7;\n  if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }\n  else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }\n  pbVar11 = pbVar16 + param_7[1];\n  if ((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))\n  goto LAB_00271c00;\n  do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);\n  uVar12 = (int)pbVar6 - (int)pbVar16;\njoined_r0x00271c37:\n  if (uVar12 == 0) goto LAB_00271c00;\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n                    \n  FUN_002052b0(&local_4c,uVar12 * 2);\n  iVar4 = *(int *)(iVar15 + 0x2c);\n  local_88 = uVar12 - iVar4;\n  if (0 < (int)local_88) {\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }\n  uVar14 = local_48;\n  if (0 < iVar4) {\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }\n  uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;\n  uVar14 = local_48 + local_7c;\n  if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }\n  local_30 = 0;\n  local_2c[0] = local_2c[0] & 0xffffff00;\n  local_34 = local_2c;\n                    \n  FUN_002052b0(&local_34,uVar14 * 2);\n  local_80 = *(uint *)(param_5 + 8);\n  ppuVar17 = &local_50;\n  bVar13 = uVar12 == 0x10 && uVar14 < local_80;\n  do {\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  } while (&local_4c != ppuVar17);\n  if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }\n  if (local_6d == '\0') {\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }\n  local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  if (local_34 != local_2c) {\n    FUN_001fd020(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001fd020(local_4c);\n  }\nLAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  *param_1 = param_3;\n  param_1[1] = local_6c;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined1 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "uint **ppuVar17;" type_identifier (pointer_declarator "**ppuVar17" * (pointer_declarator "*ppuVar17" * identifier)) ;) (declaration "char *local_8c;" primitive_type (pointer_declarator "*local_8c" * identifier) ;) (declaration "uint local_88;" type_identifier identifier ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "char local_6d;" primitive_type identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "uint *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44 [4];" type_identifier (array_declarator "local_44 [4]" identifier [ number_literal ]) ;) (declaration "uint *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c [7];" type_identifier (array_declarator "local_2c [7]" identifier [ number_literal ]) ;) (expression_statement "local_6d = (char)param_4;" (assignment_expression "local_6d = (char)param_4" identifier = (cast_expression "(char)param_4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_6c = param_4;" (assignment_expression "local_6c = param_4" identifier = identifier) ;) (expression_statement "iVar4 = FUN_00212050(param_5 + 0x6c);" (assignment_expression "iVar4 = FUN_00212050(param_5 + 0x6c)" identifier = (call_expression "FUN_00212050(param_5 + 0x6c)" identifier (argument_list "(param_5 + 0x6c)" ( (binary_expression "param_5 + 0x6c" identifier + number_literal) )))) ;) (expression_statement "iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);" (assignment_expression "iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9dfc)" identifier (argument_list "(PTR_DAT_003a9dfc)" ( identifier )))) ;) (expression_statement "piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);" (assignment_expression "piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4)" identifier = (cast_expression "(int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4)" ( (binary_expression "*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4" (pointer_expression "*(int *)(*(int *)(param_5 + 0x6c) + 0xc)" * (cast_expression "(int *)(*(int *)(param_5 + 0x6c) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_5 + 0x6c) + 0xc)" ( (binary_expression "*(int *)(param_5 + 0x6c) + 0xc" (pointer_expression "*(int *)(param_5 + 0x6c)" * (cast_expression "(int *)(param_5 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x6c)" ( (binary_expression "param_5 + 0x6c" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "iVar5 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar15 = *piVar2;" (assignment_expression "iVar15 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (iVar15 == 0) {\n                    \n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    \n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    \n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }" { (expression_statement "puVar10 = (undefined4 *)FUN_001fb470(0x44);" (assignment_expression "puVar10 = (undefined4 *)FUN_001fb470(0x44)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0x44)" identifier (argument_list "(0x44)" ( number_literal ))))) ;) (expression_statement "puVar10[1] = 0;" (assignment_expression "puVar10[1] = 0" (subscript_expression "puVar10[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[2] = 0;" (assignment_expression "puVar10[2] = 0" (subscript_expression "puVar10[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[3] = 0;" (assignment_expression "puVar10[3] = 0" (subscript_expression "puVar10[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar10 + 0x12) = 0;" (assignment_expression "*(undefined1 *)((int)puVar10 + 0x12) = 0" (pointer_expression "*(undefined1 *)((int)puVar10 + 0x12)" * (cast_expression "(undefined1 *)((int)puVar10 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x12)" ( (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar10 = &PTR_FUN_003a76b8;" (assignment_expression "*puVar10 = &PTR_FUN_003a76b8" (pointer_expression "*puVar10" * identifier) = (pointer_expression "&PTR_FUN_003a76b8" & identifier)) ;) (expression_statement "*(undefined2 *)(puVar10 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar10 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar10 + 4)" * (cast_expression "(undefined2 *)(puVar10 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 4)" ( (binary_expression "puVar10 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar10[5] = 0;" (assignment_expression "puVar10[5] = 0" (subscript_expression "puVar10[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[6] = 0;" (assignment_expression "puVar10[6] = 0" (subscript_expression "puVar10[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[7] = 0;" (assignment_expression "puVar10[7] = 0" (subscript_expression "puVar10[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[8] = 0;" (assignment_expression "puVar10[8] = 0" (subscript_expression "puVar10[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[9] = 0;" (assignment_expression "puVar10[9] = 0" (subscript_expression "puVar10[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[10] = 0;" (assignment_expression "puVar10[10] = 0" (subscript_expression "puVar10[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[0xb] = 0;" (assignment_expression "puVar10[0xb] = 0" (subscript_expression "puVar10[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[0xc] = 0;" (assignment_expression "puVar10[0xc] = 0" (subscript_expression "puVar10[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[0xd] = 0;" (assignment_expression "puVar10[0xd] = 0" (subscript_expression "puVar10[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar10 + 0x43) = 0;" (assignment_expression "*(undefined1 *)((int)puVar10 + 0x43) = 0" (pointer_expression "*(undefined1 *)((int)puVar10 + 0x43)" * (cast_expression "(undefined1 *)((int)puVar10 + 0x43)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x43)" ( (binary_expression "(int)puVar10 + 0x43" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00212cd0(puVar10,param_5 + 0x6c);" (call_expression "FUN_00212cd0(puVar10,param_5 + 0x6c)" identifier (argument_list "(puVar10,param_5 + 0x6c)" ( identifier , (binary_expression "param_5 + 0x6c" identifier + number_literal) ))) ;) (expression_statement "FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);" (call_expression "FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5)" identifier (argument_list "(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5)" ( (pointer_expression "*(undefined4 *)(param_5 + 0x6c)" * (cast_expression "(undefined4 *)(param_5 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x6c)" ( (binary_expression "param_5 + 0x6c" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "iVar15 = *piVar2;" (assignment_expression "iVar15 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) })) (expression_statement "pbVar16 = (byte *)*param_7;" (assignment_expression "pbVar16 = (byte *)*param_7" identifier = (cast_expression "(byte *)*param_7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_7" * identifier))) ;) (if_statement "if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }\n  else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }" if (parenthesized_expression "(*pbVar16 == *(byte *)(iVar15 + 0x38))" ( (binary_expression "*pbVar16 == *(byte *)(iVar15 + 0x38)" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*(byte *)(iVar15 + 0x38)" * (cast_expression "(byte *)(iVar15 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x38)" ( (binary_expression "iVar15 + 0x38" identifier + number_literal) ))))) )) (compound_statement "{\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }" { (expression_statement "local_50 = *(uint **)(iVar15 + 0x34);" (assignment_expression "local_50 = *(uint **)(iVar15 + 0x34)" identifier = (pointer_expression "*(uint **)(iVar15 + 0x34)" * (cast_expression "(uint **)(iVar15 + 0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x34)" ( (binary_expression "iVar15 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (param_7[1] == 0) goto LAB_00271c00;" if (parenthesized_expression "(param_7[1] == 0)" ( (binary_expression "param_7[1] == 0" (subscript_expression "param_7[1]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00271c00;" goto statement_identifier ;)) (expression_statement "local_8c = *(char **)(iVar15 + 0x24);" (assignment_expression "local_8c = *(char **)(iVar15 + 0x24)" identifier = (pointer_expression "*(char **)(iVar15 + 0x24)" * (cast_expression "(char **)(iVar15 + 0x24)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x24)" ( (binary_expression "iVar15 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "pbVar16 = pbVar16 + 1;" (assignment_expression "pbVar16 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_7c = *(uint *)(iVar15 + 0x28);" (assignment_expression "local_7c = *(uint *)(iVar15 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar15 + 0x28)" * (cast_expression "(uint *)(iVar15 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x28)" ( (binary_expression "iVar15 + 0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }" else (compound_statement "{\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }" { (expression_statement "local_50 = *(uint **)(iVar15 + 0x30);" (assignment_expression "local_50 = *(uint **)(iVar15 + 0x30)" identifier = (pointer_expression "*(uint **)(iVar15 + 0x30)" * (cast_expression "(uint **)(iVar15 + 0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x30)" ( (binary_expression "iVar15 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_8c = *(char **)(iVar15 + 0x1c);" (assignment_expression "local_8c = *(char **)(iVar15 + 0x1c)" identifier = (pointer_expression "*(char **)(iVar15 + 0x1c)" * (cast_expression "(char **)(iVar15 + 0x1c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0x1c)" ( (binary_expression "iVar15 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "local_7c = *(uint *)(iVar15 + 0x20);" (assignment_expression "local_7c = *(uint *)(iVar15 + 0x20)" identifier = (pointer_expression "*(uint *)(iVar15 + 0x20)" * (cast_expression "(uint *)(iVar15 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x20)" ( (binary_expression "iVar15 + 0x20" identifier + number_literal) ))))) ;) }))) (expression_statement "pbVar11 = pbVar16 + param_7[1];" (assignment_expression "pbVar11 = pbVar16 + param_7[1]" identifier = (binary_expression "pbVar16 + param_7[1]" identifier + (subscript_expression "param_7[1]" identifier [ number_literal ]))) ;) (if_statement "if ((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))\n  goto LAB_00271c00;" if (parenthesized_expression "((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))" ( (binary_expression "(pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0)" (parenthesized_expression "(pbVar11 <= pbVar16)" ( (binary_expression "pbVar11 <= pbVar16" identifier <= identifier) )) || (parenthesized_expression "(pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0)" ( (comma_expression "pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0" (assignment_expression "pbVar6 = pbVar16" identifier = identifier) , (binary_expression "(*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8)" ( (binary_expression "*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8" (pointer_expression "*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2)" * (cast_expression "(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2)" ( (binary_expression "*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2" (binary_expression "*(int *)(iVar4 + 0x18) + 1" (pointer_expression "*(int *)(iVar4 + 0x18)" * (cast_expression "(int *)(iVar4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*pbVar16 * 2" (binary_expression "(uint)*pbVar16" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) == number_literal)) ))) )) (goto_statement "goto LAB_00271c00;" goto statement_identifier ;)) (do_statement "do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);" do (compound_statement "{\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  }" { (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }" if (parenthesized_expression "(pbVar11 == pbVar6)" ( (binary_expression "pbVar11 == pbVar6" identifier == identifier) )) (compound_statement "{\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }" { (expression_statement "uVar12 = (int)pbVar11 - (int)pbVar16;" (assignment_expression "uVar12 = (int)pbVar11 - (int)pbVar16" identifier = (binary_expression "(int)pbVar11 - (int)pbVar16" (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar16" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto joined_r0x00271c37;" goto statement_identifier ;) })) }) while (parenthesized_expression "((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0)" ( (binary_expression "(*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8)" ( (binary_expression "*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8" (pointer_expression "*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2)" * (cast_expression "(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2)" ( (binary_expression "*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2" (binary_expression "*(int *)(iVar4 + 0x18) + 1" (pointer_expression "*(int *)(iVar4 + 0x18)" * (cast_expression "(int *)(iVar4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*pbVar6 * 2" (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (expression_statement "uVar12 = (int)pbVar6 - (int)pbVar16;" (assignment_expression "uVar12 = (int)pbVar6 - (int)pbVar16" identifier = (binary_expression "(int)pbVar6 - (int)pbVar16" (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar16" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "joined_r0x00271c37:\n  if (uVar12 == 0) goto LAB_00271c00;" statement_identifier : (if_statement "if (uVar12 == 0) goto LAB_00271c00;" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00271c00;" goto statement_identifier ;))) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44[0] = local_44[0] & 0xffffff00;" (assignment_expression "local_44[0] = local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" identifier [ number_literal ]) = (binary_expression "local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "local_4c = local_44;" (assignment_expression "local_4c = local_44" identifier = identifier) ;) (expression_statement "FUN_002052b0(&local_4c,uVar12 * 2);" (call_expression "FUN_002052b0(&local_4c,uVar12 * 2)" identifier (argument_list "(&local_4c,uVar12 * 2)" ( (pointer_expression "&local_4c" & identifier) , (binary_expression "uVar12 * 2" identifier * number_literal) ))) ;) (expression_statement "iVar4 = *(int *)(iVar15 + 0x2c);" (assignment_expression "iVar4 = *(int *)(iVar15 + 0x2c)" identifier = (pointer_expression "*(int *)(iVar15 + 0x2c)" * (cast_expression "(int *)(iVar15 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x2c)" ( (binary_expression "iVar15 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "local_88 = uVar12 - iVar4;" (assignment_expression "local_88 = uVar12 - iVar4" identifier = (binary_expression "uVar12 - iVar4" identifier - identifier)) ;) (if_statement "if (0 < (int)local_88) {\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }" if (parenthesized_expression "(0 < (int)local_88)" ( (binary_expression "0 < (int)local_88" number_literal < (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }" { (if_statement "if (iVar4 < 0) {\n      local_88 = uVar12;\n    }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n      local_88 = uVar12;\n    }" { (expression_statement "local_88 = uVar12;" (assignment_expression "local_88 = uVar12" identifier = identifier) ;) })) (if_statement "if (*(int *)(iVar15 + 0xc) == 0) {\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }" if (parenthesized_expression "(*(int *)(iVar15 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar15 + 0xc) == 0" (pointer_expression "*(int *)(iVar15 + 0xc)" * (cast_expression "(int *)(iVar15 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0xc)" ( (binary_expression "iVar15 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }" { (expression_statement "FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);" (call_expression "FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88)" identifier (argument_list "(&local_4c,0,local_48,pbVar16,local_88)" ( (pointer_expression "&local_4c" & identifier) , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "iVar4 = *(int *)(iVar15 + 0x2c);" (assignment_expression "iVar4 = *(int *)(iVar15 + 0x2c)" identifier = (pointer_expression "*(int *)(iVar15 + 0x2c)" * (cast_expression "(int *)(iVar15 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x2c)" ( (binary_expression "iVar15 + 0x2c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }" else (compound_statement "{\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }" { (expression_statement "FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);" (call_expression "FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0)" identifier (argument_list "(&local_4c,0,local_48,local_88 * 2,0)" ( (pointer_expression "&local_4c" & identifier) , number_literal , identifier , (binary_expression "local_88 * 2" identifier * number_literal) , number_literal ))) ;) (expression_statement "puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);" (assignment_expression "puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88)" identifier = (cast_expression "(undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88)" identifier (argument_list "(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88)" ( identifier , (cast_expression "(int)*(char *)(iVar15 + 0x12)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(iVar15 + 0x12)" * (cast_expression "(char *)(iVar15 + 0x12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x12)" ( (binary_expression "iVar15 + 0x12" identifier + number_literal) ))))) , (pointer_expression "*(undefined4 *)(iVar15 + 8)" * (cast_expression "(undefined4 *)(iVar15 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 8)" ( (binary_expression "iVar15 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar15 + 0xc)" * (cast_expression "(undefined4 *)(iVar15 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0xc)" ( (binary_expression "iVar15 + 0xc" identifier + number_literal) )))) , identifier , (binary_expression "pbVar16 + local_88" identifier + identifier) ))))) ;) (expression_statement "uVar14 = (int)puVar7 - (int)local_4c;" (assignment_expression "uVar14 = (int)puVar7 - (int)local_4c" identifier = (binary_expression "(int)puVar7 - (int)local_4c" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }" if (parenthesized_expression "(local_48 < uVar14)" ( (binary_expression "local_48 < uVar14" identifier < identifier) )) (compound_statement "{\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }" { (expression_statement "FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);" (call_expression "FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48)" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48)" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::erase"" " string_content ") , identifier , identifier ))) ;) })) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "iVar4 = *(int *)(iVar15 + 0x2c);" (assignment_expression "iVar4 = *(int *)(iVar15 + 0x2c)" identifier = (pointer_expression "*(int *)(iVar15 + 0x2c)" * (cast_expression "(int *)(iVar15 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x2c)" ( (binary_expression "iVar15 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "local_48 = uVar14;" (assignment_expression "local_48 = uVar14" identifier = identifier) ;) }))) })) (expression_statement "uVar14 = local_48;" (assignment_expression "uVar14 = local_48" identifier = identifier) ;) (if_statement "if (0 < iVar4) {\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }" { (expression_statement "uVar3 = *(undefined1 *)(iVar15 + 0x11);" (assignment_expression "uVar3 = *(undefined1 *)(iVar15 + 0x11)" identifier = (pointer_expression "*(undefined1 *)(iVar15 + 0x11)" * (cast_expression "(undefined1 *)(iVar15 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x11)" ( (binary_expression "iVar15 + 0x11" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = local_48 + 1;" (assignment_expression "uVar1 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = 0xf;" (assignment_expression "uVar8 = 0xf" identifier = number_literal) ;) (if_statement "if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n      uVar8 = local_44[0];\n    }" { (expression_statement "uVar8 = local_44[0];" (assignment_expression "uVar8 = local_44[0]" identifier = (subscript_expression "local_44[0]" identifier [ number_literal ])) ;) })) (if_statement "if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }" if (parenthesized_expression "(uVar8 < uVar1)" ( (binary_expression "uVar8 < uVar1" identifier < identifier) )) (compound_statement "{\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }" { (expression_statement "FUN_00204d10(&local_4c,local_48,0,0,1);" (call_expression "FUN_00204d10(&local_4c,local_48,0,0,1)" identifier (argument_list "(&local_4c,local_48,0,0,1)" ( (pointer_expression "&local_4c" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "*(undefined1 *)((int)local_4c + uVar14) = uVar3;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar14) = uVar3" (pointer_expression "*(undefined1 *)((int)local_4c + uVar14)" * (cast_expression "(undefined1 *)((int)local_4c + uVar14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c + uVar14)" ( (binary_expression "(int)local_4c + uVar14" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)((int)local_4c + uVar1) = 0;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar1) = 0" (pointer_expression "*(undefined1 *)((int)local_4c + uVar1)" * (cast_expression "(undefined1 *)((int)local_4c + uVar1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c + uVar1)" ( (binary_expression "(int)local_4c + uVar1" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "local_48 = uVar1;" (assignment_expression "local_48 = uVar1" identifier = identifier) ;) (if_statement "if ((int)local_88 < 0) {\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }" if (parenthesized_expression "((int)local_88 < 0)" ( (binary_expression "(int)local_88 < 0" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }" { (expression_statement "FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));" (call_expression "FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39))" identifier (argument_list "(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39))" ( (pointer_expression "&local_4c" & identifier) , identifier , number_literal , (unary_expression "-local_88" - identifier) , (cast_expression "(int)*(char *)(iVar15 + 0x39)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(iVar15 + 0x39)" * (cast_expression "(char *)(iVar15 + 0x39)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x39)" ( (binary_expression "iVar15 + 0x39" identifier + number_literal) ))))) ))) ;) (if_statement "if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }" if (parenthesized_expression "(0x7fffffff - local_48 < uVar12)" ( (binary_expression "0x7fffffff - local_48 < uVar12" (binary_expression "0x7fffffff - local_48" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }" { (expression_statement "FUN_00242a10("basic_string::append");" (call_expression "FUN_00242a10("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_00206830(&local_4c,pbVar16,uVar12);" (call_expression "FUN_00206830(&local_4c,pbVar16,uVar12)" identifier (argument_list "(&local_4c,pbVar16,uVar12)" ( (pointer_expression "&local_4c" & identifier) , identifier , identifier ))) ;) }) (else_clause "else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }" else (compound_statement "{\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }" { (if_statement "if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }" if (parenthesized_expression "(0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c))" ( (binary_expression "0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)" (binary_expression "0x7fffffff - uVar1" number_literal - identifier) < (pointer_expression "*(uint *)(iVar15 + 0x2c)" * (cast_expression "(uint *)(iVar15 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x2c)" ( (binary_expression "iVar15 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }" { (expression_statement "FUN_00242a10("basic_string::append");" (call_expression "FUN_00242a10("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));" (call_expression "FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c))" identifier (argument_list "(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c))" ( (pointer_expression "&local_4c" & identifier) , (binary_expression "pbVar16 + local_88" identifier + identifier) , (pointer_expression "*(uint *)(iVar15 + 0x2c)" * (cast_expression "(uint *)(iVar15 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x2c)" ( (binary_expression "iVar15 + 0x2c" identifier + number_literal) )))) ))) ;) }))) })) (expression_statement "uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;" (assignment_expression "uVar12 = *(uint *)(param_5 + 0xc) & 0xb0" identifier = (binary_expression "*(uint *)(param_5 + 0xc) & 0xb0" (pointer_expression "*(uint *)(param_5 + 0xc)" * (cast_expression "(uint *)(param_5 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xc)" ( (binary_expression "param_5 + 0xc" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "uVar14 = local_48 + local_7c;" (assignment_expression "uVar14 = local_48 + local_7c" identifier = (binary_expression "local_48 + local_7c" identifier + identifier)) ;) (if_statement "if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }" if (parenthesized_expression "((*(uint *)(param_5 + 0xc) & 0x200) != 0)" ( (binary_expression "(*(uint *)(param_5 + 0xc) & 0x200) != 0" (parenthesized_expression "(*(uint *)(param_5 + 0xc) & 0x200)" ( (binary_expression "*(uint *)(param_5 + 0xc) & 0x200" (pointer_expression "*(uint *)(param_5 + 0xc)" * (cast_expression "(uint *)(param_5 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xc)" ( (binary_expression "param_5 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }" { (expression_statement "uVar14 = uVar14 + *(int *)(iVar15 + 0x18);" (assignment_expression "uVar14 = uVar14 + *(int *)(iVar15 + 0x18)" identifier = (binary_expression "uVar14 + *(int *)(iVar15 + 0x18)" identifier + (pointer_expression "*(int *)(iVar15 + 0x18)" * (cast_expression "(int *)(iVar15 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x18)" ( (binary_expression "iVar15 + 0x18" identifier + number_literal) )))))) ;) })) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c[0] = local_2c[0] & 0xffffff00;" (assignment_expression "local_2c[0] = local_2c[0] & 0xffffff00" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = (binary_expression "local_2c[0] & 0xffffff00" (subscript_expression "local_2c[0]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (expression_statement "FUN_002052b0(&local_34,uVar14 * 2);" (call_expression "FUN_002052b0(&local_34,uVar14 * 2)" identifier (argument_list "(&local_34,uVar14 * 2)" ( (pointer_expression "&local_34" & identifier) , (binary_expression "uVar14 * 2" identifier * number_literal) ))) ;) (expression_statement "local_80 = *(uint *)(param_5 + 8);" (assignment_expression "local_80 = *(uint *)(param_5 + 8)" identifier = (pointer_expression "*(uint *)(param_5 + 8)" * (cast_expression "(uint *)(param_5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 8)" ( (binary_expression "param_5 + 8" identifier + number_literal) ))))) ;) (expression_statement "ppuVar17 = &local_50;" (assignment_expression "ppuVar17 = &local_50" identifier = (pointer_expression "&local_50" & identifier)) ;) (expression_statement "bVar13 = uVar12 == 0x10 && uVar14 < local_80;" (assignment_expression "bVar13 = uVar12 == 0x10 && uVar14 < local_80" identifier = (binary_expression "uVar12 == 0x10 && uVar14 < local_80" (binary_expression "uVar12 == 0x10" identifier == number_literal) && (binary_expression "uVar14 < local_80" identifier < identifier))) ;) (do_statement "do {\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  } while (&local_4c != ppuVar17);" do (compound_statement "{\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  }" { (expression_statement "uVar1 = local_30;" (assignment_expression "uVar1 = local_30" identifier = identifier) ;) (switch_statement "switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }" switch (parenthesized_expression "(*(undefined1 *)ppuVar17)" ( (pointer_expression "*(undefined1 *)ppuVar17" * (cast_expression "(undefined1 *)ppuVar17" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }" { (case_statement "case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;" case number_literal : (if_statement "if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }" { (expression_statement "FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);" (call_expression "FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6)" identifier (argument_list "(&local_34,local_30,0,local_80 - uVar14,(int)param_6)" ( (pointer_expression "&local_34" & identifier) , identifier , number_literal , (binary_expression "local_80 - uVar14" identifier - identifier) , (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (break_statement "break;" break ;)) (case_statement "case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;" case number_literal : (if_statement "if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }" { (expression_statement "FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);" (call_expression "FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6)" identifier (argument_list "(&local_34,local_30,0,local_80 - uVar14,(int)param_6)" ( (pointer_expression "&local_34" & identifier) , identifier , number_literal , (binary_expression "local_80 - uVar14" identifier - identifier) , (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }) (else_clause "else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }" else (compound_statement "{\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }" { (expression_statement "uVar8 = local_30 + 1;" (assignment_expression "uVar8 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = 0xf;" (assignment_expression "uVar9 = 0xf" identifier = number_literal) ;) (if_statement "if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n          uVar9 = local_2c[0];\n        }" { (expression_statement "uVar9 = local_2c[0];" (assignment_expression "uVar9 = local_2c[0]" identifier = (subscript_expression "local_2c[0]" identifier [ number_literal ])) ;) })) (if_statement "if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }" if (parenthesized_expression "(uVar9 < uVar8)" ( (binary_expression "uVar9 < uVar8" identifier < identifier) )) (compound_statement "{\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }" { (expression_statement "FUN_00204d10(&local_34,local_30,0,0,1);" (call_expression "FUN_00204d10(&local_34,local_30,0,0,1)" identifier (argument_list "(&local_34,local_30,0,0,1)" ( (pointer_expression "&local_34" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "*(char *)((int)local_34 + uVar1) = param_6;" (assignment_expression "*(char *)((int)local_34 + uVar1) = param_6" (pointer_expression "*(char *)((int)local_34 + uVar1)" * (cast_expression "(char *)((int)local_34 + uVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + uVar1)" ( (binary_expression "(int)local_34 + uVar1" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "local_30 = uVar8;" (assignment_expression "local_30 = uVar8" identifier = identifier) ;) (expression_statement "*(undefined1 *)((int)local_34 + uVar1 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)local_34 + uVar1 + 1) = 0" (pointer_expression "*(undefined1 *)((int)local_34 + uVar1 + 1)" * (cast_expression "(undefined1 *)((int)local_34 + uVar1 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + uVar1 + 1)" ( (binary_expression "(int)local_34 + uVar1 + 1" (binary_expression "(int)local_34 + uVar1" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) }))) (break_statement "break;" break ;)) (case_statement "case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;" case number_literal : (if_statement "if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }" if (parenthesized_expression "((*(byte *)(param_5 + 0xd) & 2) != 0)" ( (binary_expression "(*(byte *)(param_5 + 0xd) & 2) != 0" (parenthesized_expression "(*(byte *)(param_5 + 0xd) & 2)" ( (binary_expression "*(byte *)(param_5 + 0xd) & 2" (pointer_expression "*(byte *)(param_5 + 0xd)" * (cast_expression "(byte *)(param_5 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xd)" ( (binary_expression "param_5 + 0xd" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }" { (if_statement "if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }" if (parenthesized_expression "(0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18))" ( (binary_expression "0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)" (binary_expression "0x7fffffff - local_30" number_literal - identifier) < (pointer_expression "*(uint *)(iVar15 + 0x18)" * (cast_expression "(uint *)(iVar15 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x18)" ( (binary_expression "iVar15 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n          FUN_00242a10("basic_string::append");\n        }" { (expression_statement "FUN_00242a10("basic_string::append");" (call_expression "FUN_00242a10("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));" (call_expression "FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18))" identifier (argument_list "(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18))" ( (pointer_expression "&local_34" & identifier) , (pointer_expression "*(undefined4 *)(iVar15 + 0x14)" * (cast_expression "(undefined4 *)(iVar15 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x14)" ( (binary_expression "iVar15 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(uint *)(iVar15 + 0x18)" * (cast_expression "(uint *)(iVar15 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x18)" ( (binary_expression "iVar15 + 0x18" identifier + number_literal) )))) ))) ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;" case number_literal : (if_statement "if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }" if (parenthesized_expression "(local_7c != 0)" ( (binary_expression "local_7c != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }" { (expression_statement "FUN_002055d0(&local_34,(int)*local_8c);" (call_expression "FUN_002055d0(&local_34,(int)*local_8c)" identifier (argument_list "(&local_34,(int)*local_8c)" ( (pointer_expression "&local_34" & identifier) , (cast_expression "(int)*local_8c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*local_8c" * identifier)) ))) ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n      FUN_00206830(&local_34,local_4c,local_48);" case number_literal : (expression_statement "FUN_00206830(&local_34,local_4c,local_48);" (call_expression "FUN_00206830(&local_34,local_4c,local_48)" identifier (argument_list "(&local_34,local_4c,local_48)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier ))) ;)) })) (expression_statement "ppuVar17 = (uint **)((int)ppuVar17 + 1);" (assignment_expression "ppuVar17 = (uint **)((int)ppuVar17 + 1)" identifier = (cast_expression "(uint **)((int)ppuVar17 + 1)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar17 + 1)" ( (binary_expression "(int)ppuVar17 + 1" (cast_expression "(int)ppuVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(&local_4c != ppuVar17)" ( (binary_expression "&local_4c != ppuVar17" (pointer_expression "&local_4c" & identifier) != identifier) )) ;) (if_statement "if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }" if (parenthesized_expression "(local_7c < 2)" ( (binary_expression "local_7c < 2" identifier < number_literal) )) (compound_statement "{\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }" { (if_statement "if (local_80 <= local_30) goto LAB_00271ef2;" if (parenthesized_expression "(local_80 <= local_30)" ( (binary_expression "local_80 <= local_30" identifier <= identifier) )) (goto_statement "goto LAB_00271ef2;" goto statement_identifier ;)) (labeled_statement "LAB_00271f70:\n    if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }" statement_identifier : (if_statement "if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }" if (parenthesized_expression "(uVar12 == 0x20)" ( (binary_expression "uVar12 == 0x20" identifier == number_literal) )) (compound_statement "{\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }" { (expression_statement "FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);" (call_expression "FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6)" identifier (argument_list "(&local_34,local_30,0,local_80 - local_30,(int)param_6)" ( (pointer_expression "&local_34" & identifier) , identifier , number_literal , (binary_expression "local_80 - local_30" identifier - identifier) , (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }) (else_clause "else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }" else (compound_statement "{\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }" { (expression_statement "FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);" (call_expression "FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6)" identifier (argument_list "(&local_34,0,0,local_80 - local_30,(int)param_6)" ( (pointer_expression "&local_34" & identifier) , number_literal , number_literal , (binary_expression "local_80 - local_30" identifier - identifier) , (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })))) }) (else_clause "else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }" else (compound_statement "{\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }" { (if_statement "if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }" if (parenthesized_expression "(0x7fffffff - local_30 < local_7c - 1)" ( (binary_expression "0x7fffffff - local_30 < local_7c - 1" (binary_expression "0x7fffffff - local_30" number_literal - identifier) < (binary_expression "local_7c - 1" identifier - number_literal)) )) (compound_statement "{\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }" { (expression_statement "FUN_00242a10("basic_string::append");" (call_expression "FUN_00242a10("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_00206830(&local_34,local_8c + 1,local_7c - 1);" (call_expression "FUN_00206830(&local_34,local_8c + 1,local_7c - 1)" identifier (argument_list "(&local_34,local_8c + 1,local_7c - 1)" ( (pointer_expression "&local_34" & identifier) , (binary_expression "local_8c + 1" identifier + number_literal) , (binary_expression "local_7c - 1" identifier - number_literal) ))) ;) (if_statement "if (local_30 < local_80) goto LAB_00271f70;" if (parenthesized_expression "(local_30 < local_80)" ( (binary_expression "local_30 < local_80" identifier < identifier) )) (goto_statement "goto LAB_00271f70;" goto statement_identifier ;)) (labeled_statement "LAB_00271ef2:\n    local_80 = local_30;" statement_identifier : (expression_statement "local_80 = local_30;" (assignment_expression "local_80 = local_30" identifier = identifier) ;)) }))) (if_statement "if (local_6d == '\0') {\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }" if (parenthesized_expression "(local_6d == '\0')" ( (binary_expression "local_6d == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }" { (expression_statement "uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);" (assignment_expression "uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80)" identifier = (call_expression "(**(code **)(*param_3 + 0x30))(param_3,local_34,local_80)" (parenthesized_expression "(**(code **)(*param_3 + 0x30))" ( (pointer_expression "**(code **)(*param_3 + 0x30)" * (pointer_expression "*(code **)(*param_3 + 0x30)" * (cast_expression "(code **)(*param_3 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x30)" ( (binary_expression "*param_3 + 0x30" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3,local_34,local_80)" ( identifier , identifier , identifier )))) ;) (expression_statement "local_6d = local_80 != uVar12;" (assignment_expression "local_6d = local_80 != uVar12" identifier = (binary_expression "local_80 != uVar12" identifier != identifier)) ;) })) (expression_statement "local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);" (assignment_expression "local_6c._1_3_ = (undefined3)((uint)param_4 >> 8)" (field_expression "local_6c._1_3_" identifier . field_identifier) = (call_expression "(undefined3)((uint)param_4 >> 8)" (parenthesized_expression "(undefined3)" ( identifier )) (argument_list "((uint)param_4 >> 8)" ( (binary_expression "(uint)param_4 >> 8" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_6c = CONCAT31(local_6c._1_3_,local_6d);" (assignment_expression "local_6c = CONCAT31(local_6c._1_3_,local_6d)" identifier = (call_expression "CONCAT31(local_6c._1_3_,local_6d)" identifier (argument_list "(local_6c._1_3_,local_6d)" ( (field_expression "local_6c._1_3_" identifier . field_identifier) , identifier )))) ;) (if_statement "if (local_34 != local_2c) {\n    FUN_001fd020(local_34);\n  }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n    FUN_001fd020(local_34);\n  }" { (expression_statement "FUN_001fd020(local_34);" (call_expression "FUN_001fd020(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (if_statement "if (local_4c != local_44) {\n    FUN_001fd020(local_4c);\n  }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n    FUN_001fd020(local_4c);\n  }" { (expression_statement "FUN_001fd020(local_4c);" (call_expression "FUN_001fd020(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) })) (labeled_statement "LAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_5 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_5 + 8) = 0" (pointer_expression "*(undefined4 *)(param_5 + 8)" * (cast_expression "(undefined4 *)(param_5 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 8)" ( (binary_expression "param_5 + 8" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "local_6c = CONCAT31(local_6c._1_3_,local_6d);" (assignment_expression "local_6c = CONCAT31(local_6c._1_3_,local_6d)" identifier = (call_expression "CONCAT31(local_6c._1_3_,local_6d)" identifier (argument_list "(local_6c._1_3_,local_6d)" ( (field_expression "local_6c._1_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) & LIT) )) == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) & LIT) )) != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT * LIT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (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 + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , IDENT , (binary_expression IDENT * LIT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , LIT , LIT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , (unary_expression - IDENT) , (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT + IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT * LIT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT < IDENT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (switch_statement switch (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (case_statement case LIT : (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , (binary_expression IDENT - IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) })) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , (binary_expression IDENT - IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , LIT , LIT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = LIT) ;) }))) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) ))) ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) != IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (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 { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , (binary_expression IDENT - IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , (binary_expression IDENT - IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) })))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) < (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT + LIT) , (binary_expression IDENT - LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != IDENT)) ;) })) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_00271b30(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5\n                 ,char param_6,undefined4 *param_7)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined1 uVar3;\n  int iVar4;\n  int iVar5;\n  byte *pbVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  uint uVar12;\n  bool bVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  uint **ppuVar17;\n  char *local_8c;\n  uint local_88;\n  uint local_80;\n  uint local_7c;\n  char local_6d;\n  undefined4 local_6c;\n  uint *local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  uint *local_34;\n  uint local_30;\n  uint local_2c [7];\n  \n  local_6d = (char)param_4;\n  local_6c = param_4;\n  iVar4 = FUN_00212050(param_5 + 0x6c);\n  iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);\n  piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);\n  iVar15 = *piVar2;\n  if (iVar15 == 0) {\n                    \n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    \n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }\n  pbVar16 = (byte *)*param_7;\n  if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }\n  else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }\n  pbVar11 = pbVar16 + param_7[1];\n  if ((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))\n  goto LAB_00271c00;\n  do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);\n  uVar12 = (int)pbVar6 - (int)pbVar16;\njoined_r0x00271c37:\n  if (uVar12 == 0) goto LAB_00271c00;\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n                    \n  FUN_002052b0(&local_4c,uVar12 * 2);\n  iVar4 = *(int *)(iVar15 + 0x2c);\n  local_88 = uVar12 - iVar4;\n  if (0 < (int)local_88) {\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }\n  uVar14 = local_48;\n  if (0 < iVar4) {\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }\n  uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;\n  uVar14 = local_48 + local_7c;\n  if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }\n  local_30 = 0;\n  local_2c[0] = local_2c[0] & 0xffffff00;\n  local_34 = local_2c;\n                    \n  FUN_002052b0(&local_34,uVar14 * 2);\n  local_80 = *(uint *)(param_5 + 8);\n  ppuVar17 = &local_50;\n  bVar13 = uVar12 == 0x10 && uVar14 < local_80;\n  do {\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  } while (&local_4c != ppuVar17);\n  if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }\n  if (local_6d == '\0') {\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }\n  local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  if (local_34 != local_2c) {\n    FUN_001fd020(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001fd020(local_4c);\n  }\nLAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  *param_1 = param_3;\n  param_1[1] = local_6c;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00271b30(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5\n                 ,char param_6,undefined4 *param_7)" (identifier "FUN_00271b30") (parameter_list "(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5\n                 ,char param_6,undefined4 *param_7)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "char param_6" (primitive_type "char") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 *param_7" (type_identifier "undefined4") (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  undefined1 uVar3;\n  int iVar4;\n  int iVar5;\n  byte *pbVar6;\n  undefined1 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  uint uVar12;\n  bool bVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  uint **ppuVar17;\n  char *local_8c;\n  uint local_88;\n  uint local_80;\n  uint local_7c;\n  char local_6d;\n  undefined4 local_6c;\n  uint *local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  uint *local_34;\n  uint local_30;\n  uint local_2c [7];\n  \n  local_6d = (char)param_4;\n  local_6c = param_4;\n  iVar4 = FUN_00212050(param_5 + 0x6c);\n  iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);\n  piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);\n  iVar15 = *piVar2;\n  if (iVar15 == 0) {\n                    \n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    \n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }\n  pbVar16 = (byte *)*param_7;\n  if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }\n  else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }\n  pbVar11 = pbVar16 + param_7[1];\n  if ((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))\n  goto LAB_00271c00;\n  do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);\n  uVar12 = (int)pbVar6 - (int)pbVar16;\njoined_r0x00271c37:\n  if (uVar12 == 0) goto LAB_00271c00;\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n                    \n  FUN_002052b0(&local_4c,uVar12 * 2);\n  iVar4 = *(int *)(iVar15 + 0x2c);\n  local_88 = uVar12 - iVar4;\n  if (0 < (int)local_88) {\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }\n  uVar14 = local_48;\n  if (0 < iVar4) {\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }\n  uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;\n  uVar14 = local_48 + local_7c;\n  if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }\n  local_30 = 0;\n  local_2c[0] = local_2c[0] & 0xffffff00;\n  local_34 = local_2c;\n                    \n  FUN_002052b0(&local_34,uVar14 * 2);\n  local_80 = *(uint *)(param_5 + 8);\n  ppuVar17 = &local_50;\n  bVar13 = uVar12 == 0x10 && uVar14 < local_80;\n  do {\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  } while (&local_4c != ppuVar17);\n  if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }\n  if (local_6d == '\0') {\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }\n  local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  if (local_34 != local_2c) {\n    FUN_001fd020(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001fd020(local_4c);\n  }\nLAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;\n  local_6c = CONCAT31(local_6c._1_3_,local_6d);\n  *param_1 = param_3;\n  param_1[1] = local_6c;\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "undefined1 uVar3;" (type_identifier "undefined1") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "undefined1 *puVar7;" (type_identifier "undefined1") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "byte *pbVar16;" (type_identifier "byte") (pointer_declarator "*pbVar16" (* "*") (identifier "pbVar16")) (; ";")) (declaration "uint **ppuVar17;" (type_identifier "uint") (pointer_declarator "**ppuVar17" (* "*") (pointer_declarator "*ppuVar17" (* "*") (identifier "ppuVar17"))) (; ";")) (declaration "char *local_8c;" (primitive_type "char") (pointer_declarator "*local_8c" (* "*") (identifier "local_8c")) (; ";")) (declaration "uint local_88;" (type_identifier "uint") (identifier "local_88") (; ";")) (declaration "uint local_80;" (type_identifier "uint") (identifier "local_80") (; ";")) (declaration "uint local_7c;" (type_identifier "uint") (identifier "local_7c") (; ";")) (declaration "char local_6d;" (primitive_type "char") (identifier "local_6d") (; ";")) (declaration "undefined4 local_6c;" (type_identifier "undefined4") (identifier "local_6c") (; ";")) (declaration "uint *local_50;" (type_identifier "uint") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "uint *local_4c;" (type_identifier "uint") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "uint local_48;" (type_identifier "uint") (identifier "local_48") (; ";")) (declaration "uint local_44 [4];" (type_identifier "uint") (array_declarator "local_44 [4]" (identifier "local_44") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "uint *local_34;" (type_identifier "uint") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "uint local_2c [7];" (type_identifier "uint") (array_declarator "local_2c [7]" (identifier "local_2c") ([ "[") (number_literal "7") (] "]")) (; ";")) (expression_statement "local_6d = (char)param_4;" (assignment_expression "local_6d = (char)param_4" (identifier "local_6d") (= "=") (cast_expression "(char)param_4" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_4"))) (; ";")) (expression_statement "local_6c = param_4;" (assignment_expression "local_6c = param_4" (identifier "local_6c") (= "=") (identifier "param_4")) (; ";")) (expression_statement "iVar4 = FUN_00212050(param_5 + 0x6c);" (assignment_expression "iVar4 = FUN_00212050(param_5 + 0x6c)" (identifier "iVar4") (= "=") (call_expression "FUN_00212050(param_5 + 0x6c)" (identifier "FUN_00212050") (argument_list "(param_5 + 0x6c)" (( "(") (binary_expression "param_5 + 0x6c" (identifier "param_5") (+ "+") (number_literal "0x6c")) () ")")))) (; ";")) (expression_statement "iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);" (assignment_expression "iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc)" (identifier "iVar5") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9dfc)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9dfc)" (( "(") (identifier "PTR_DAT_003a9dfc") () ")")))) (; ";")) (expression_statement "piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);" (assignment_expression "piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4)" (identifier "piVar2") (= "=") (cast_expression "(int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4)" (( "(") (binary_expression "*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4" (pointer_expression "*(int *)(*(int *)(param_5 + 0x6c) + 0xc)" (* "*") (cast_expression "(int *)(*(int *)(param_5 + 0x6c) + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_5 + 0x6c) + 0xc)" (( "(") (binary_expression "*(int *)(param_5 + 0x6c) + 0xc" (pointer_expression "*(int *)(param_5 + 0x6c)" (* "*") (cast_expression "(int *)(param_5 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x6c)" (( "(") (binary_expression "param_5 + 0x6c" (identifier "param_5") (+ "+") (number_literal "0x6c")) () ")")))) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar15 = *piVar2;" (assignment_expression "iVar15 = *piVar2" (identifier "iVar15") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (if_statement "if (iVar15 == 0) {\n                    \n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    \n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }" (if "if") (parenthesized_expression "(iVar15 == 0)" (( "(") (binary_expression "iVar15 == 0" (identifier "iVar15") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    puVar10 = (undefined4 *)FUN_001fb470(0x44);\n    puVar10[1] = 0;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined1 *)((int)puVar10 + 0x12) = 0;\n    *puVar10 = &PTR_FUN_003a76b8;\n    *(undefined2 *)(puVar10 + 4) = 0;\n    puVar10[5] = 0;\n    puVar10[6] = 0;\n    puVar10[7] = 0;\n    puVar10[8] = 0;\n    puVar10[9] = 0;\n    puVar10[10] = 0;\n    puVar10[0xb] = 0;\n    puVar10[0xc] = 0;\n    puVar10[0xd] = 0;\n    *(undefined1 *)((int)puVar10 + 0x43) = 0;\n                    \n    FUN_00212cd0(puVar10,param_5 + 0x6c);\n    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);\n    iVar15 = *piVar2;\n  }" ({ "{") (expression_statement "puVar10 = (undefined4 *)FUN_001fb470(0x44);" (assignment_expression "puVar10 = (undefined4 *)FUN_001fb470(0x44)" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(0x44)" (identifier "FUN_001fb470") (argument_list "(0x44)" (( "(") (number_literal "0x44") () ")"))))) (; ";")) (expression_statement "puVar10[1] = 0;" (assignment_expression "puVar10[1] = 0" (subscript_expression "puVar10[1]" (identifier "puVar10") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[2] = 0;" (assignment_expression "puVar10[2] = 0" (subscript_expression "puVar10[2]" (identifier "puVar10") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[3] = 0;" (assignment_expression "puVar10[3] = 0" (subscript_expression "puVar10[3]" (identifier "puVar10") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar10 + 0x12) = 0;" (assignment_expression "*(undefined1 *)((int)puVar10 + 0x12) = 0" (pointer_expression "*(undefined1 *)((int)puVar10 + 0x12)" (* "*") (cast_expression "(undefined1 *)((int)puVar10 + 0x12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0x12)" (( "(") (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0x12")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar10 = &PTR_FUN_003a76b8;" (assignment_expression "*puVar10 = &PTR_FUN_003a76b8" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (pointer_expression "&PTR_FUN_003a76b8" (& "&") (identifier "PTR_FUN_003a76b8"))) (; ";")) (expression_statement "*(undefined2 *)(puVar10 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar10 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar10 + 4)" (* "*") (cast_expression "(undefined2 *)(puVar10 + 4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 4)" (( "(") (binary_expression "puVar10 + 4" (identifier "puVar10") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[5] = 0;" (assignment_expression "puVar10[5] = 0" (subscript_expression "puVar10[5]" (identifier "puVar10") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[6] = 0;" (assignment_expression "puVar10[6] = 0" (subscript_expression "puVar10[6]" (identifier "puVar10") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[7] = 0;" (assignment_expression "puVar10[7] = 0" (subscript_expression "puVar10[7]" (identifier "puVar10") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[8] = 0;" (assignment_expression "puVar10[8] = 0" (subscript_expression "puVar10[8]" (identifier "puVar10") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[9] = 0;" (assignment_expression "puVar10[9] = 0" (subscript_expression "puVar10[9]" (identifier "puVar10") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[10] = 0;" (assignment_expression "puVar10[10] = 0" (subscript_expression "puVar10[10]" (identifier "puVar10") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[0xb] = 0;" (assignment_expression "puVar10[0xb] = 0" (subscript_expression "puVar10[0xb]" (identifier "puVar10") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[0xc] = 0;" (assignment_expression "puVar10[0xc] = 0" (subscript_expression "puVar10[0xc]" (identifier "puVar10") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10[0xd] = 0;" (assignment_expression "puVar10[0xd] = 0" (subscript_expression "puVar10[0xd]" (identifier "puVar10") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar10 + 0x43) = 0;" (assignment_expression "*(undefined1 *)((int)puVar10 + 0x43) = 0" (pointer_expression "*(undefined1 *)((int)puVar10 + 0x43)" (* "*") (cast_expression "(undefined1 *)((int)puVar10 + 0x43)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0x43)" (( "(") (binary_expression "(int)puVar10 + 0x43" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0x43")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00212cd0(puVar10,param_5 + 0x6c);" (call_expression "FUN_00212cd0(puVar10,param_5 + 0x6c)" (identifier "FUN_00212cd0") (argument_list "(puVar10,param_5 + 0x6c)" (( "(") (identifier "puVar10") (, ",") (binary_expression "param_5 + 0x6c" (identifier "param_5") (+ "+") (number_literal "0x6c")) () ")"))) (; ";")) (expression_statement "FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);" (call_expression "FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5)" (identifier "FUN_001ffec0") (argument_list "(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5)" (( "(") (pointer_expression "*(undefined4 *)(param_5 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_5 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x6c)" (( "(") (binary_expression "param_5 + 0x6c" (identifier "param_5") (+ "+") (number_literal "0x6c")) () ")")))) (, ",") (identifier "puVar10") (, ",") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "iVar15 = *piVar2;" (assignment_expression "iVar15 = *piVar2" (identifier "iVar15") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (} "}"))) (expression_statement "pbVar16 = (byte *)*param_7;" (assignment_expression "pbVar16 = (byte *)*param_7" (identifier "pbVar16") (= "=") (cast_expression "(byte *)*param_7" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_7" (* "*") (identifier "param_7")))) (; ";")) (if_statement "if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }\n  else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }" (if "if") (parenthesized_expression "(*pbVar16 == *(byte *)(iVar15 + 0x38))" (( "(") (binary_expression "*pbVar16 == *(byte *)(iVar15 + 0x38)" (pointer_expression "*pbVar16" (* "*") (identifier "pbVar16")) (== "==") (pointer_expression "*(byte *)(iVar15 + 0x38)" (* "*") (cast_expression "(byte *)(iVar15 + 0x38)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x38)" (( "(") (binary_expression "iVar15 + 0x38" (identifier "iVar15") (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (compound_statement "{\n    local_50 = *(uint **)(iVar15 + 0x34);\n    if (param_7[1] == 0) goto LAB_00271c00;\n    local_8c = *(char **)(iVar15 + 0x24);\n    pbVar16 = pbVar16 + 1;\n    local_7c = *(uint *)(iVar15 + 0x28);\n  }" ({ "{") (expression_statement "local_50 = *(uint **)(iVar15 + 0x34);" (assignment_expression "local_50 = *(uint **)(iVar15 + 0x34)" (identifier "local_50") (= "=") (pointer_expression "*(uint **)(iVar15 + 0x34)" (* "*") (cast_expression "(uint **)(iVar15 + 0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + 0x34)" (( "(") (binary_expression "iVar15 + 0x34" (identifier "iVar15") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (if_statement "if (param_7[1] == 0) goto LAB_00271c00;" (if "if") (parenthesized_expression "(param_7[1] == 0)" (( "(") (binary_expression "param_7[1] == 0" (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00271c00;" (goto "goto") (statement_identifier "LAB_00271c00") (; ";"))) (expression_statement "local_8c = *(char **)(iVar15 + 0x24);" (assignment_expression "local_8c = *(char **)(iVar15 + 0x24)" (identifier "local_8c") (= "=") (pointer_expression "*(char **)(iVar15 + 0x24)" (* "*") (cast_expression "(char **)(iVar15 + 0x24)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + 0x24)" (( "(") (binary_expression "iVar15 + 0x24" (identifier "iVar15") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "pbVar16 = pbVar16 + 1;" (assignment_expression "pbVar16 = pbVar16 + 1" (identifier "pbVar16") (= "=") (binary_expression "pbVar16 + 1" (identifier "pbVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_7c = *(uint *)(iVar15 + 0x28);" (assignment_expression "local_7c = *(uint *)(iVar15 + 0x28)" (identifier "local_7c") (= "=") (pointer_expression "*(uint *)(iVar15 + 0x28)" (* "*") (cast_expression "(uint *)(iVar15 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x28)" (( "(") (binary_expression "iVar15 + 0x28" (identifier "iVar15") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }" (else "else") (compound_statement "{\n    local_50 = *(uint **)(iVar15 + 0x30);\n    local_8c = *(char **)(iVar15 + 0x1c);\n    local_7c = *(uint *)(iVar15 + 0x20);\n  }" ({ "{") (expression_statement "local_50 = *(uint **)(iVar15 + 0x30);" (assignment_expression "local_50 = *(uint **)(iVar15 + 0x30)" (identifier "local_50") (= "=") (pointer_expression "*(uint **)(iVar15 + 0x30)" (* "*") (cast_expression "(uint **)(iVar15 + 0x30)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + 0x30)" (( "(") (binary_expression "iVar15 + 0x30" (identifier "iVar15") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "local_8c = *(char **)(iVar15 + 0x1c);" (assignment_expression "local_8c = *(char **)(iVar15 + 0x1c)" (identifier "local_8c") (= "=") (pointer_expression "*(char **)(iVar15 + 0x1c)" (* "*") (cast_expression "(char **)(iVar15 + 0x1c)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + 0x1c)" (( "(") (binary_expression "iVar15 + 0x1c" (identifier "iVar15") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "local_7c = *(uint *)(iVar15 + 0x20);" (assignment_expression "local_7c = *(uint *)(iVar15 + 0x20)" (identifier "local_7c") (= "=") (pointer_expression "*(uint *)(iVar15 + 0x20)" (* "*") (cast_expression "(uint *)(iVar15 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x20)" (( "(") (binary_expression "iVar15 + 0x20" (identifier "iVar15") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pbVar11 = pbVar16 + param_7[1];" (assignment_expression "pbVar11 = pbVar16 + param_7[1]" (identifier "pbVar11") (= "=") (binary_expression "pbVar16 + param_7[1]" (identifier "pbVar16") (+ "+") (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if ((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))\n  goto LAB_00271c00;" (if "if") (parenthesized_expression "((pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))" (( "(") (binary_expression "(pbVar11 <= pbVar16) ||\n     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0)" (parenthesized_expression "(pbVar11 <= pbVar16)" (( "(") (binary_expression "pbVar11 <= pbVar16" (identifier "pbVar11") (<= "<=") (identifier "pbVar16")) () ")")) (|| "||") (parenthesized_expression "(pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0)" (( "(") (comma_expression "pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0" (assignment_expression "pbVar6 = pbVar16" (identifier "pbVar6") (= "=") (identifier "pbVar16")) (, ",") (binary_expression "(*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8)" (( "(") (binary_expression "*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8" (pointer_expression "*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2)" (* "*") (cast_expression "(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2)" (( "(") (binary_expression "*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2" (binary_expression "*(int *)(iVar4 + 0x18) + 1" (pointer_expression "*(int *)(iVar4 + 0x18)" (* "*") (cast_expression "(int *)(iVar4 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18)" (( "(") (binary_expression "iVar4 + 0x18" (identifier "iVar4") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "1")) (+ "+") (binary_expression "(uint)*pbVar16 * 2" (binary_expression "(uint)*pbVar16" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar16")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00271c00;" (goto "goto") (statement_identifier "LAB_00271c00") (; ";"))) (do_statement "do {\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);" (do "do") (compound_statement "{\n    pbVar6 = pbVar6 + 1;\n    if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }\n  }" ({ "{") (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pbVar11 == pbVar6) {\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }" (if "if") (parenthesized_expression "(pbVar11 == pbVar6)" (( "(") (binary_expression "pbVar11 == pbVar6" (identifier "pbVar11") (== "==") (identifier "pbVar6")) () ")")) (compound_statement "{\n      uVar12 = (int)pbVar11 - (int)pbVar16;\n      goto joined_r0x00271c37;\n    }" ({ "{") (expression_statement "uVar12 = (int)pbVar11 - (int)pbVar16;" (assignment_expression "uVar12 = (int)pbVar11 - (int)pbVar16" (identifier "uVar12") (= "=") (binary_expression "(int)pbVar11 - (int)pbVar16" (cast_expression "(int)pbVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar11")) (- "-") (cast_expression "(int)pbVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar16")))) (; ";")) (goto_statement "goto joined_r0x00271c37;" (goto "goto") (statement_identifier "joined_r0x00271c37") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8)" (( "(") (binary_expression "*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8" (pointer_expression "*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2)" (* "*") (cast_expression "(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2)" (( "(") (binary_expression "*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2" (binary_expression "*(int *)(iVar4 + 0x18) + 1" (pointer_expression "*(int *)(iVar4 + 0x18)" (* "*") (cast_expression "(int *)(iVar4 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18)" (( "(") (binary_expression "iVar4 + 0x18" (identifier "iVar4") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "1")) (+ "+") (binary_expression "(uint)*pbVar6 * 2" (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar6")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar12 = (int)pbVar6 - (int)pbVar16;" (assignment_expression "uVar12 = (int)pbVar6 - (int)pbVar16" (identifier "uVar12") (= "=") (binary_expression "(int)pbVar6 - (int)pbVar16" (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6")) (- "-") (cast_expression "(int)pbVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar16")))) (; ";")) (labeled_statement "joined_r0x00271c37:\n  if (uVar12 == 0) goto LAB_00271c00;" (statement_identifier "joined_r0x00271c37") (: ":") (if_statement "if (uVar12 == 0) goto LAB_00271c00;" (if "if") (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00271c00;" (goto "goto") (statement_identifier "LAB_00271c00") (; ";")))) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44[0] = local_44[0] & 0xffffff00;" (assignment_expression "local_44[0] = local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" (identifier "local_44") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" (identifier "local_44") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "0xffffff00"))) (; ";")) (expression_statement "local_4c = local_44;" (assignment_expression "local_4c = local_44" (identifier "local_4c") (= "=") (identifier "local_44")) (; ";")) (expression_statement "FUN_002052b0(&local_4c,uVar12 * 2);" (call_expression "FUN_002052b0(&local_4c,uVar12 * 2)" (identifier "FUN_002052b0") (argument_list "(&local_4c,uVar12 * 2)" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (binary_expression "uVar12 * 2" (identifier "uVar12") (* "*") (number_literal "2")) () ")"))) (; ";")) (expression_statement "iVar4 = *(int *)(iVar15 + 0x2c);" (assignment_expression "iVar4 = *(int *)(iVar15 + 0x2c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar15 + 0x2c)" (* "*") (cast_expression "(int *)(iVar15 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x2c)" (( "(") (binary_expression "iVar15 + 0x2c" (identifier "iVar15") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "local_88 = uVar12 - iVar4;" (assignment_expression "local_88 = uVar12 - iVar4" (identifier "local_88") (= "=") (binary_expression "uVar12 - iVar4" (identifier "uVar12") (- "-") (identifier "iVar4"))) (; ";")) (if_statement "if (0 < (int)local_88) {\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }" (if "if") (parenthesized_expression "(0 < (int)local_88)" (( "(") (binary_expression "0 < (int)local_88" (number_literal "0") (< "<") (cast_expression "(int)local_88" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_88"))) () ")")) (compound_statement "{\n    if (iVar4 < 0) {\n      local_88 = uVar12;\n    }\n    if (*(int *)(iVar15 + 0xc) == 0) {\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }\n  }" ({ "{") (if_statement "if (iVar4 < 0) {\n      local_88 = uVar12;\n    }" (if "if") (parenthesized_expression "(iVar4 < 0)" (( "(") (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      local_88 = uVar12;\n    }" ({ "{") (expression_statement "local_88 = uVar12;" (assignment_expression "local_88 = uVar12" (identifier "local_88") (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar15 + 0xc) == 0) {\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }\n    else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar15 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(iVar15 + 0xc) == 0" (pointer_expression "*(int *)(iVar15 + 0xc)" (* "*") (cast_expression "(int *)(iVar15 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0xc)" (( "(") (binary_expression "iVar15 + 0xc" (identifier "iVar15") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);\n      iVar4 = *(int *)(iVar15 + 0x2c);\n    }" ({ "{") (expression_statement "FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);" (call_expression "FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88)" (identifier "FUN_00205c60") (argument_list "(&local_4c,0,local_48,pbVar16,local_88)" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (number_literal "0") (, ",") (identifier "local_48") (, ",") (identifier "pbVar16") (, ",") (identifier "local_88") () ")"))) (; ";")) (expression_statement "iVar4 = *(int *)(iVar15 + 0x2c);" (assignment_expression "iVar4 = *(int *)(iVar15 + 0x2c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar15 + 0x2c)" (* "*") (cast_expression "(int *)(iVar15 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x2c)" (( "(") (binary_expression "iVar15 + 0x2c" (identifier "iVar15") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }" (else "else") (compound_statement "{\n      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);\n      puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);\n      uVar14 = (int)puVar7 - (int)local_4c;\n      if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(iVar15 + 0x2c);\n      local_48 = uVar14;\n    }" ({ "{") (expression_statement "FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);" (call_expression "FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0)" (identifier "FUN_002058a0") (argument_list "(&local_4c,0,local_48,local_88 * 2,0)" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (number_literal "0") (, ",") (identifier "local_48") (, ",") (binary_expression "local_88 * 2" (identifier "local_88") (* "*") (number_literal "2")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);" (assignment_expression "puVar7 = (undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88)" (identifier "puVar7") (= "=") (cast_expression "(undefined1 *)\n               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88)" (identifier "FUN_00214200") (argument_list "(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),\n                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88)" (( "(") (identifier "local_4c") (, ",") (cast_expression "(int)*(char *)(iVar15 + 0x12)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(char *)(iVar15 + 0x12)" (* "*") (cast_expression "(char *)(iVar15 + 0x12)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x12)" (( "(") (binary_expression "iVar15 + 0x12" (identifier "iVar15") (+ "+") (number_literal "0x12")) () ")"))))) (, ",") (pointer_expression "*(undefined4 *)(iVar15 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar15 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 8)" (( "(") (binary_expression "iVar15 + 8" (identifier "iVar15") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar15 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar15 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0xc)" (( "(") (binary_expression "iVar15 + 0xc" (identifier "iVar15") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "pbVar16") (, ",") (binary_expression "pbVar16 + local_88" (identifier "pbVar16") (+ "+") (identifier "local_88")) () ")"))))) (; ";")) (expression_statement "uVar14 = (int)puVar7 - (int)local_4c;" (assignment_expression "uVar14 = (int)puVar7 - (int)local_4c" (identifier "uVar14") (= "=") (binary_expression "(int)puVar7 - (int)local_4c" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (- "-") (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c")))) (; ";")) (if_statement "if (local_48 < uVar14) {\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }" (if "if") (parenthesized_expression "(local_48 < uVar14)" (( "(") (binary_expression "local_48 < uVar14" (identifier "local_48") (< "<") (identifier "uVar14")) () ")")) (compound_statement "{\n                    \n                    \n        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);\n      }" ({ "{") (expression_statement "FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48);" (call_expression "FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48)" (identifier "FUN_00242ab0") (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",\n                     uVar14,local_48)" (( "(") (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" (" """) (string_content "%s: __pos (which is %zu) > this->size() (which is %zu)") (" """)) (, ",") (string_literal ""basic_string::erase"" (" """) (string_content "basic_string::erase") (" """)) (, ",") (identifier "uVar14") (, ",") (identifier "local_48") () ")"))) (; ";")) (} "}"))) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = *(int *)(iVar15 + 0x2c);" (assignment_expression "iVar4 = *(int *)(iVar15 + 0x2c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar15 + 0x2c)" (* "*") (cast_expression "(int *)(iVar15 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x2c)" (( "(") (binary_expression "iVar15 + 0x2c" (identifier "iVar15") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "local_48 = uVar14;" (assignment_expression "local_48 = uVar14" (identifier "local_48") (= "=") (identifier "uVar14")) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar14 = local_48;" (assignment_expression "uVar14 = local_48" (identifier "uVar14") (= "=") (identifier "local_48")) (; ";")) (if_statement "if (0 < iVar4) {\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }" (if "if") (parenthesized_expression "(0 < iVar4)" (( "(") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n    uVar3 = *(undefined1 *)(iVar15 + 0x11);\n    uVar1 = local_48 + 1;\n    uVar8 = 0xf;\n    if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }\n    if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar14) = uVar3;\n    *(undefined1 *)((int)local_4c + uVar1) = 0;\n    local_48 = uVar1;\n    if ((int)local_88 < 0) {\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }\n  }" ({ "{") (expression_statement "uVar3 = *(undefined1 *)(iVar15 + 0x11);" (assignment_expression "uVar3 = *(undefined1 *)(iVar15 + 0x11)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined1 *)(iVar15 + 0x11)" (* "*") (cast_expression "(undefined1 *)(iVar15 + 0x11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x11)" (( "(") (binary_expression "iVar15 + 0x11" (identifier "iVar15") (+ "+") (number_literal "0x11")) () ")"))))) (; ";")) (expression_statement "uVar1 = local_48 + 1;" (assignment_expression "uVar1 = local_48 + 1" (identifier "uVar1") (= "=") (binary_expression "local_48 + 1" (identifier "local_48") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = 0xf;" (assignment_expression "uVar8 = 0xf" (identifier "uVar8") (= "=") (number_literal "0xf")) (; ";")) (if_statement "if (local_4c != local_44) {\n      uVar8 = local_44[0];\n    }" (if "if") (parenthesized_expression "(local_4c != local_44)" (( "(") (binary_expression "local_4c != local_44" (identifier "local_4c") (!= "!=") (identifier "local_44")) () ")")) (compound_statement "{\n      uVar8 = local_44[0];\n    }" ({ "{") (expression_statement "uVar8 = local_44[0];" (assignment_expression "uVar8 = local_44[0]" (identifier "uVar8") (= "=") (subscript_expression "local_44[0]" (identifier "local_44") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (if_statement "if (uVar8 < uVar1) {\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }" (if "if") (parenthesized_expression "(uVar8 < uVar1)" (( "(") (binary_expression "uVar8 < uVar1" (identifier "uVar8") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n      FUN_00204d10(&local_4c,local_48,0,0,1);\n    }" ({ "{") (expression_statement "FUN_00204d10(&local_4c,local_48,0,0,1);" (call_expression "FUN_00204d10(&local_4c,local_48,0,0,1)" (identifier "FUN_00204d10") (argument_list "(&local_4c,local_48,0,0,1)" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (identifier "local_48") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)((int)local_4c + uVar14) = uVar3;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar14) = uVar3" (pointer_expression "*(undefined1 *)((int)local_4c + uVar14)" (* "*") (cast_expression "(undefined1 *)((int)local_4c + uVar14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_4c + uVar14)" (( "(") (binary_expression "(int)local_4c + uVar14" (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c")) (+ "+") (identifier "uVar14")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined1 *)((int)local_4c + uVar1) = 0;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar1) = 0" (pointer_expression "*(undefined1 *)((int)local_4c + uVar1)" (* "*") (cast_expression "(undefined1 *)((int)local_4c + uVar1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_4c + uVar1)" (( "(") (binary_expression "(int)local_4c + uVar1" (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c")) (+ "+") (identifier "uVar1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = uVar1;" (assignment_expression "local_48 = uVar1" (identifier "local_48") (= "=") (identifier "uVar1")) (; ";")) (if_statement "if ((int)local_88 < 0) {\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }\n    else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }" (if "if") (parenthesized_expression "((int)local_88 < 0)" (( "(") (binary_expression "(int)local_88 < 0" (cast_expression "(int)local_88" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_88")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));\n      if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n      FUN_00206830(&local_4c,pbVar16,uVar12);\n    }" ({ "{") (expression_statement "FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));" (call_expression "FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39))" (identifier "FUN_002058a0") (argument_list "(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39))" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (identifier "uVar1") (, ",") (number_literal "0") (, ",") (unary_expression "-local_88" (- "-") (identifier "local_88")) (, ",") (cast_expression "(int)*(char *)(iVar15 + 0x39)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(char *)(iVar15 + 0x39)" (* "*") (cast_expression "(char *)(iVar15 + 0x39)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x39)" (( "(") (binary_expression "iVar15 + 0x39" (identifier "iVar15") (+ "+") (number_literal "0x39")) () ")"))))) () ")"))) (; ";")) (if_statement "if (0x7fffffff - local_48 < uVar12) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }" (if "if") (parenthesized_expression "(0x7fffffff - local_48 < uVar12)" (( "(") (binary_expression "0x7fffffff - local_48 < uVar12" (binary_expression "0x7fffffff - local_48" (number_literal "0x7fffffff") (- "-") (identifier "local_48")) (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }" ({ "{") (expression_statement "FUN_00242a10("basic_string::append");" (call_expression "FUN_00242a10("basic_string::append")" (identifier "FUN_00242a10") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00206830(&local_4c,pbVar16,uVar12);" (call_expression "FUN_00206830(&local_4c,pbVar16,uVar12)" (identifier "FUN_00206830") (argument_list "(&local_4c,pbVar16,uVar12)" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (identifier "pbVar16") (, ",") (identifier "uVar12") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }" (else "else") (compound_statement "{\n      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }\n                    \n      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));\n    }" ({ "{") (if_statement "if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }" (if "if") (parenthesized_expression "(0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c))" (( "(") (binary_expression "0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)" (binary_expression "0x7fffffff - uVar1" (number_literal "0x7fffffff") (- "-") (identifier "uVar1")) (< "<") (pointer_expression "*(uint *)(iVar15 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar15 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x2c)" (( "(") (binary_expression "iVar15 + 0x2c" (identifier "iVar15") (+ "+") (number_literal "0x2c")) () ")"))))) () ")")) (compound_statement "{\n                    \n                    \n        FUN_00242a10("basic_string::append");\n      }" ({ "{") (expression_statement "FUN_00242a10("basic_string::append");" (call_expression "FUN_00242a10("basic_string::append")" (identifier "FUN_00242a10") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));" (call_expression "FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c))" (identifier "FUN_00206830") (argument_list "(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c))" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (binary_expression "pbVar16 + local_88" (identifier "pbVar16") (+ "+") (identifier "local_88")) (, ",") (pointer_expression "*(uint *)(iVar15 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar15 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x2c)" (( "(") (binary_expression "iVar15 + 0x2c" (identifier "iVar15") (+ "+") (number_literal "0x2c")) () ")")))) () ")"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;" (assignment_expression "uVar12 = *(uint *)(param_5 + 0xc) & 0xb0" (identifier "uVar12") (= "=") (binary_expression "*(uint *)(param_5 + 0xc) & 0xb0" (pointer_expression "*(uint *)(param_5 + 0xc)" (* "*") (cast_expression "(uint *)(param_5 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0xc)" (( "(") (binary_expression "param_5 + 0xc" (identifier "param_5") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "0xb0"))) (; ";")) (expression_statement "uVar14 = local_48 + local_7c;" (assignment_expression "uVar14 = local_48 + local_7c" (identifier "uVar14") (= "=") (binary_expression "local_48 + local_7c" (identifier "local_48") (+ "+") (identifier "local_7c"))) (; ";")) (if_statement "if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }" (if "if") (parenthesized_expression "((*(uint *)(param_5 + 0xc) & 0x200) != 0)" (( "(") (binary_expression "(*(uint *)(param_5 + 0xc) & 0x200) != 0" (parenthesized_expression "(*(uint *)(param_5 + 0xc) & 0x200)" (( "(") (binary_expression "*(uint *)(param_5 + 0xc) & 0x200" (pointer_expression "*(uint *)(param_5 + 0xc)" (* "*") (cast_expression "(uint *)(param_5 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0xc)" (( "(") (binary_expression "param_5 + 0xc" (identifier "param_5") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "0x200")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);\n  }" ({ "{") (expression_statement "uVar14 = uVar14 + *(int *)(iVar15 + 0x18);" (assignment_expression "uVar14 = uVar14 + *(int *)(iVar15 + 0x18)" (identifier "uVar14") (= "=") (binary_expression "uVar14 + *(int *)(iVar15 + 0x18)" (identifier "uVar14") (+ "+") (pointer_expression "*(int *)(iVar15 + 0x18)" (* "*") (cast_expression "(int *)(iVar15 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x18)" (( "(") (binary_expression "iVar15 + 0x18" (identifier "iVar15") (+ "+") (number_literal "0x18")) () ")")))))) (; ";")) (} "}"))) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c[0] = local_2c[0] & 0xffffff00;" (assignment_expression "local_2c[0] = local_2c[0] & 0xffffff00" (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_2c[0] & 0xffffff00" (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "0xffffff00"))) (; ";")) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" (identifier "local_34") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "FUN_002052b0(&local_34,uVar14 * 2);" (call_expression "FUN_002052b0(&local_34,uVar14 * 2)" (identifier "FUN_002052b0") (argument_list "(&local_34,uVar14 * 2)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (binary_expression "uVar14 * 2" (identifier "uVar14") (* "*") (number_literal "2")) () ")"))) (; ";")) (expression_statement "local_80 = *(uint *)(param_5 + 8);" (assignment_expression "local_80 = *(uint *)(param_5 + 8)" (identifier "local_80") (= "=") (pointer_expression "*(uint *)(param_5 + 8)" (* "*") (cast_expression "(uint *)(param_5 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 8)" (( "(") (binary_expression "param_5 + 8" (identifier "param_5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "ppuVar17 = &local_50;" (assignment_expression "ppuVar17 = &local_50" (identifier "ppuVar17") (= "=") (pointer_expression "&local_50" (& "&") (identifier "local_50"))) (; ";")) (expression_statement "bVar13 = uVar12 == 0x10 && uVar14 < local_80;" (assignment_expression "bVar13 = uVar12 == 0x10 && uVar14 < local_80" (identifier "bVar13") (= "=") (binary_expression "uVar12 == 0x10 && uVar14 < local_80" (binary_expression "uVar12 == 0x10" (identifier "uVar12") (== "==") (number_literal "0x10")) (&& "&&") (binary_expression "uVar14 < local_80" (identifier "uVar14") (< "<") (identifier "local_80")))) (; ";")) (do_statement "do {\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  } while (&local_4c != ppuVar17);" (do "do") (compound_statement "{\n    uVar1 = local_30;\n    switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }\n    ppuVar17 = (uint **)((int)ppuVar17 + 1);\n  }" ({ "{") (expression_statement "uVar1 = local_30;" (assignment_expression "uVar1 = local_30" (identifier "uVar1") (= "=") (identifier "local_30")) (; ";")) (switch_statement "switch(*(undefined1 *)ppuVar17) {\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }" (switch "switch") (parenthesized_expression "(*(undefined1 *)ppuVar17)" (( "(") (pointer_expression "*(undefined1 *)ppuVar17" (* "*") (cast_expression "(undefined1 *)ppuVar17" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar17"))) () ")")) (compound_statement "{\n    case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;\n    case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;\n    case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;\n    case 4:\n      FUN_00206830(&local_34,local_4c,local_48);\n    }" ({ "{") (case_statement "case 0:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      break;" (case "case") (number_literal "0") (: ":") (if_statement "if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }" ({ "{") (expression_statement "FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);" (call_expression "FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6)" (identifier "FUN_002058a0") (argument_list "(&local_34,local_30,0,local_80 - uVar14,(int)param_6)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "local_30") (, ",") (number_literal "0") (, ",") (binary_expression "local_80 - uVar14" (identifier "local_80") (- "-") (identifier "uVar14")) (, ",") (cast_expression "(int)param_6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_6")) () ")"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 1:\n      if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }\n      break;" (case "case") (number_literal "1") (: ":") (if_statement "if (bVar13) {\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }\n      else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);\n      }" ({ "{") (expression_statement "FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);" (call_expression "FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6)" (identifier "FUN_002058a0") (argument_list "(&local_34,local_30,0,local_80 - uVar14,(int)param_6)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "local_30") (, ",") (number_literal "0") (, ",") (binary_expression "local_80 - uVar14" (identifier "local_80") (- "-") (identifier "uVar14")) (, ",") (cast_expression "(int)param_6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_6")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }" (else "else") (compound_statement "{\n        uVar8 = local_30 + 1;\n        uVar9 = 0xf;\n        if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }\n        if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }\n        *(char *)((int)local_34 + uVar1) = param_6;\n        local_30 = uVar8;\n        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;\n      }" ({ "{") (expression_statement "uVar8 = local_30 + 1;" (assignment_expression "uVar8 = local_30 + 1" (identifier "uVar8") (= "=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar9 = 0xf;" (assignment_expression "uVar9 = 0xf" (identifier "uVar9") (= "=") (number_literal "0xf")) (; ";")) (if_statement "if (local_34 != local_2c) {\n          uVar9 = local_2c[0];\n        }" (if "if") (parenthesized_expression "(local_34 != local_2c)" (( "(") (binary_expression "local_34 != local_2c" (identifier "local_34") (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n          uVar9 = local_2c[0];\n        }" ({ "{") (expression_statement "uVar9 = local_2c[0];" (assignment_expression "uVar9 = local_2c[0]" (identifier "uVar9") (= "=") (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (if_statement "if (uVar9 < uVar8) {\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }" (if "if") (parenthesized_expression "(uVar9 < uVar8)" (( "(") (binary_expression "uVar9 < uVar8" (identifier "uVar9") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n          FUN_00204d10(&local_34,local_30,0,0,1);\n        }" ({ "{") (expression_statement "FUN_00204d10(&local_34,local_30,0,0,1);" (call_expression "FUN_00204d10(&local_34,local_30,0,0,1)" (identifier "FUN_00204d10") (argument_list "(&local_34,local_30,0,0,1)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "local_30") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (expression_statement "*(char *)((int)local_34 + uVar1) = param_6;" (assignment_expression "*(char *)((int)local_34 + uVar1) = param_6" (pointer_expression "*(char *)((int)local_34 + uVar1)" (* "*") (cast_expression "(char *)((int)local_34 + uVar1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_34 + uVar1)" (( "(") (binary_expression "(int)local_34 + uVar1" (cast_expression "(int)local_34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_34")) (+ "+") (identifier "uVar1")) () ")")))) (= "=") (identifier "param_6")) (; ";")) (expression_statement "local_30 = uVar8;" (assignment_expression "local_30 = uVar8" (identifier "local_30") (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined1 *)((int)local_34 + uVar1 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)local_34 + uVar1 + 1) = 0" (pointer_expression "*(undefined1 *)((int)local_34 + uVar1 + 1)" (* "*") (cast_expression "(undefined1 *)((int)local_34 + uVar1 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_34 + uVar1 + 1)" (( "(") (binary_expression "(int)local_34 + uVar1 + 1" (binary_expression "(int)local_34 + uVar1" (cast_expression "(int)local_34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_34")) (+ "+") (identifier "uVar1")) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 2:\n      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }\n      break;" (case "case") (number_literal "2") (: ":") (if_statement "if ((*(byte *)(param_5 + 0xd) & 2) != 0) {\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }" (if "if") (parenthesized_expression "((*(byte *)(param_5 + 0xd) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_5 + 0xd) & 2) != 0" (parenthesized_expression "(*(byte *)(param_5 + 0xd) & 2)" (( "(") (binary_expression "*(byte *)(param_5 + 0xd) & 2" (pointer_expression "*(byte *)(param_5 + 0xd)" (* "*") (cast_expression "(byte *)(param_5 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0xd)" (( "(") (binary_expression "param_5 + 0xd" (identifier "param_5") (+ "+") (number_literal "0xd")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }\n        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));\n      }" ({ "{") (if_statement "if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {\n                    \n          FUN_00242a10("basic_string::append");\n        }" (if "if") (parenthesized_expression "(0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18))" (( "(") (binary_expression "0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)" (binary_expression "0x7fffffff - local_30" (number_literal "0x7fffffff") (- "-") (identifier "local_30")) (< "<") (pointer_expression "*(uint *)(iVar15 + 0x18)" (* "*") (cast_expression "(uint *)(iVar15 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x18)" (( "(") (binary_expression "iVar15 + 0x18" (identifier "iVar15") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n                    \n          FUN_00242a10("basic_string::append");\n        }" ({ "{") (expression_statement "FUN_00242a10("basic_string::append");" (call_expression "FUN_00242a10("basic_string::append")" (identifier "FUN_00242a10") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));" (call_expression "FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18))" (identifier "FUN_00206830") (argument_list "(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18))" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (pointer_expression "*(undefined4 *)(iVar15 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar15 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x14)" (( "(") (binary_expression "iVar15 + 0x14" (identifier "iVar15") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (pointer_expression "*(uint *)(iVar15 + 0x18)" (* "*") (cast_expression "(uint *)(iVar15 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x18)" (( "(") (binary_expression "iVar15 + 0x18" (identifier "iVar15") (+ "+") (number_literal "0x18")) () ")")))) () ")"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 3:\n      if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }\n      break;" (case "case") (number_literal "3") (: ":") (if_statement "if (local_7c != 0) {\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }" (if "if") (parenthesized_expression "(local_7c != 0)" (( "(") (binary_expression "local_7c != 0" (identifier "local_7c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_002055d0(&local_34,(int)*local_8c);\n      }" ({ "{") (expression_statement "FUN_002055d0(&local_34,(int)*local_8c);" (call_expression "FUN_002055d0(&local_34,(int)*local_8c)" (identifier "FUN_002055d0") (argument_list "(&local_34,(int)*local_8c)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (cast_expression "(int)*local_8c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*local_8c" (* "*") (identifier "local_8c"))) () ")"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 4:\n      FUN_00206830(&local_34,local_4c,local_48);" (case "case") (number_literal "4") (: ":") (expression_statement "FUN_00206830(&local_34,local_4c,local_48);" (call_expression "FUN_00206830(&local_34,local_4c,local_48)" (identifier "FUN_00206830") (argument_list "(&local_34,local_4c,local_48)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "local_4c") (, ",") (identifier "local_48") () ")"))) (; ";"))) (} "}"))) (expression_statement "ppuVar17 = (uint **)((int)ppuVar17 + 1);" (assignment_expression "ppuVar17 = (uint **)((int)ppuVar17 + 1)" (identifier "ppuVar17") (= "=") (cast_expression "(uint **)((int)ppuVar17 + 1)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar17 + 1)" (( "(") (binary_expression "(int)ppuVar17 + 1" (cast_expression "(int)ppuVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar17")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(&local_4c != ppuVar17)" (( "(") (binary_expression "&local_4c != ppuVar17" (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (!= "!=") (identifier "ppuVar17")) () ")")) (; ";")) (if_statement "if (local_7c < 2) {\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }\n  else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }" (if "if") (parenthesized_expression "(local_7c < 2)" (( "(") (binary_expression "local_7c < 2" (identifier "local_7c") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    if (local_80 <= local_30) goto LAB_00271ef2;\nLAB_00271f70:\n    if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }\n  }" ({ "{") (if_statement "if (local_80 <= local_30) goto LAB_00271ef2;" (if "if") (parenthesized_expression "(local_80 <= local_30)" (( "(") (binary_expression "local_80 <= local_30" (identifier "local_80") (<= "<=") (identifier "local_30")) () ")")) (goto_statement "goto LAB_00271ef2;" (goto "goto") (statement_identifier "LAB_00271ef2") (; ";"))) (labeled_statement "LAB_00271f70:\n    if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }" (statement_identifier "LAB_00271f70") (: ":") (if_statement "if (uVar12 == 0x20) {\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }\n    else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }" (if "if") (parenthesized_expression "(uVar12 == 0x20)" (( "(") (binary_expression "uVar12 == 0x20" (identifier "uVar12") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n                    \n      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);\n    }" ({ "{") (expression_statement "FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);" (call_expression "FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6)" (identifier "FUN_002058a0") (argument_list "(&local_34,local_30,0,local_80 - local_30,(int)param_6)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "local_30") (, ",") (number_literal "0") (, ",") (binary_expression "local_80 - local_30" (identifier "local_80") (- "-") (identifier "local_30")) (, ",") (cast_expression "(int)param_6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_6")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }" (else "else") (compound_statement "{\n      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);\n    }" ({ "{") (expression_statement "FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);" (call_expression "FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6)" (identifier "FUN_002058a0") (argument_list "(&local_34,0,0,local_80 - local_30,(int)param_6)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (binary_expression "local_80 - local_30" (identifier "local_80") (- "-") (identifier "local_30")) (, ",") (cast_expression "(int)param_6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_6")) () ")"))) (; ";")) (} "}"))))) (} "}")) (else_clause "else {\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }" (else "else") (compound_statement "{\n    if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }\n    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);\n    if (local_30 < local_80) goto LAB_00271f70;\nLAB_00271ef2:\n    local_80 = local_30;\n  }" ({ "{") (if_statement "if (0x7fffffff - local_30 < local_7c - 1) {\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }" (if "if") (parenthesized_expression "(0x7fffffff - local_30 < local_7c - 1)" (( "(") (binary_expression "0x7fffffff - local_30 < local_7c - 1" (binary_expression "0x7fffffff - local_30" (number_literal "0x7fffffff") (- "-") (identifier "local_30")) (< "<") (binary_expression "local_7c - 1" (identifier "local_7c") (- "-") (number_literal "1"))) () ")")) (compound_statement "{\n                    \n                    \n      FUN_00242a10("basic_string::append");\n    }" ({ "{") (expression_statement "FUN_00242a10("basic_string::append");" (call_expression "FUN_00242a10("basic_string::append")" (identifier "FUN_00242a10") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00206830(&local_34,local_8c + 1,local_7c - 1);" (call_expression "FUN_00206830(&local_34,local_8c + 1,local_7c - 1)" (identifier "FUN_00206830") (argument_list "(&local_34,local_8c + 1,local_7c - 1)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (binary_expression "local_8c + 1" (identifier "local_8c") (+ "+") (number_literal "1")) (, ",") (binary_expression "local_7c - 1" (identifier "local_7c") (- "-") (number_literal "1")) () ")"))) (; ";")) (if_statement "if (local_30 < local_80) goto LAB_00271f70;" (if "if") (parenthesized_expression "(local_30 < local_80)" (( "(") (binary_expression "local_30 < local_80" (identifier "local_30") (< "<") (identifier "local_80")) () ")")) (goto_statement "goto LAB_00271f70;" (goto "goto") (statement_identifier "LAB_00271f70") (; ";"))) (labeled_statement "LAB_00271ef2:\n    local_80 = local_30;" (statement_identifier "LAB_00271ef2") (: ":") (expression_statement "local_80 = local_30;" (assignment_expression "local_80 = local_30" (identifier "local_80") (= "=") (identifier "local_30")) (; ";"))) (} "}")))) (if_statement "if (local_6d == '\0') {\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }" (if "if") (parenthesized_expression "(local_6d == '\0')" (( "(") (binary_expression "local_6d == '\0'" (identifier "local_6d") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);\n    local_6d = local_80 != uVar12;\n  }" ({ "{") (expression_statement "uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);" (assignment_expression "uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80)" (identifier "uVar12") (= "=") (call_expression "(**(code **)(*param_3 + 0x30))(param_3,local_34,local_80)" (parenthesized_expression "(**(code **)(*param_3 + 0x30))" (( "(") (pointer_expression "**(code **)(*param_3 + 0x30)" (* "*") (pointer_expression "*(code **)(*param_3 + 0x30)" (* "*") (cast_expression "(code **)(*param_3 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_3 + 0x30)" (( "(") (binary_expression "*param_3 + 0x30" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(param_3,local_34,local_80)" (( "(") (identifier "param_3") (, ",") (identifier "local_34") (, ",") (identifier "local_80") () ")")))) (; ";")) (expression_statement "local_6d = local_80 != uVar12;" (assignment_expression "local_6d = local_80 != uVar12" (identifier "local_6d") (= "=") (binary_expression "local_80 != uVar12" (identifier "local_80") (!= "!=") (identifier "uVar12"))) (; ";")) (} "}"))) (expression_statement "local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);" (assignment_expression "local_6c._1_3_ = (undefined3)((uint)param_4 >> 8)" (field_expression "local_6c._1_3_" (identifier "local_6c") (. ".") (field_identifier "_1_3_")) (= "=") (call_expression "(undefined3)((uint)param_4 >> 8)" (parenthesized_expression "(undefined3)" (( "(") (identifier "undefined3") () ")")) (argument_list "((uint)param_4 >> 8)" (( "(") (binary_expression "(uint)param_4 >> 8" (cast_expression "(uint)param_4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_4")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "local_6c = CONCAT31(local_6c._1_3_,local_6d);" (assignment_expression "local_6c = CONCAT31(local_6c._1_3_,local_6d)" (identifier "local_6c") (= "=") (call_expression "CONCAT31(local_6c._1_3_,local_6d)" (identifier "CONCAT31") (argument_list "(local_6c._1_3_,local_6d)" (( "(") (field_expression "local_6c._1_3_" (identifier "local_6c") (. ".") (field_identifier "_1_3_")) (, ",") (identifier "local_6d") () ")")))) (; ";")) (if_statement "if (local_34 != local_2c) {\n    FUN_001fd020(local_34);\n  }" (if "if") (parenthesized_expression "(local_34 != local_2c)" (( "(") (binary_expression "local_34 != local_2c" (identifier "local_34") (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n    FUN_001fd020(local_34);\n  }" ({ "{") (expression_statement "FUN_001fd020(local_34);" (call_expression "FUN_001fd020(local_34)" (identifier "FUN_001fd020") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_4c != local_44) {\n    FUN_001fd020(local_4c);\n  }" (if "if") (parenthesized_expression "(local_4c != local_44)" (( "(") (binary_expression "local_4c != local_44" (identifier "local_4c") (!= "!=") (identifier "local_44")) () ")")) (compound_statement "{\n    FUN_001fd020(local_4c);\n  }" ({ "{") (expression_statement "FUN_001fd020(local_4c);" (call_expression "FUN_001fd020(local_4c)" (identifier "FUN_001fd020") (argument_list "(local_4c)" (( "(") (identifier "local_4c") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_00271c00:\n  *(undefined4 *)(param_5 + 8) = 0;" (statement_identifier "LAB_00271c00") (: ":") (expression_statement "*(undefined4 *)(param_5 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_5 + 8) = 0" (pointer_expression "*(undefined4 *)(param_5 + 8)" (* "*") (cast_expression "(undefined4 *)(param_5 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 8)" (( "(") (binary_expression "param_5 + 8" (identifier "param_5") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_6c = CONCAT31(local_6c._1_3_,local_6d);" (assignment_expression "local_6c = CONCAT31(local_6c._1_3_,local_6d)" (identifier "local_6c") (= "=") (call_expression "CONCAT31(local_6c._1_3_,local_6d)" (identifier "CONCAT31") (argument_list "(local_6c._1_3_,local_6d)" (( "(") (field_expression "local_6c._1_3_" (identifier "local_6c") (. ".") (field_identifier "_1_3_")) (, ",") (identifier "local_6d") () ")")))) (; ";")) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_6c")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* std::ostreambuf_iterator<char, std::char_traits<char> > std::money_put<char,
   std::ostreambuf_iterator<char, std::char_traits<char> >
   >::_M_insert<true>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char,
   std::string const&) const */

void var_4::money_put<char,var_4::ostreambuf_iterator<char,var_4::char_traits<char>>>::_M_insert<true>
               (type_6 *param_1,type_6 param_2,int *param_3,type_6 param_4,int var_5,
               char param_6,type_6 *param_7)

{
  type_3 var_29;
  int *piVar2;
  type_1 uVar3;
  type_2 *var_15;
  type_3 var_7;
  type_4 *var_16;
  char *pcVar7;
  int var_18;
  type_3 var_28;
  type_3 var_38;
  var_1<var_2,true> *var_10;
  type_4 *var_14;
  bool bVar12;
  type_3 var_24;
  int var_8;
  type_4 *var_13;
  type_5 *var_40;
  char *var_41;
  type_3 var_21;
  type_3 var_34;
  type_3 var_33;
  char var_42;
  type_6 local_6c;
  type_6 local_50;
  type_3 *var_26;
  type_3 var_23;
  type_3 var_27 [4];
  type_3 *var_36;
  type_3 var_35;
  type_3 var_37 [7];
  
  var_42 = (char)param_4;
  local_6c = param_4;
  var_15 = var_3<var_4::type_2<var_2>>((type_7 *)(var_5 + 0x6c));
  var_7 = type_7::id::var_6((type_8 *)PTR_id_003a9dfc);
  piVar2 = (int *)(*(int *)(*(int *)(var_5 + 0x6c) + 0xc) + var_7 * 4);
  var_8 = *piVar2;
  if (var_8 == 0) {
                    /* try { // try from 002720f0 to 002720f4 has its CatchHandler @ 002722cf */
    var_10 = (var_1<var_2,true> *)var_9(0x44);
    *(type_6 *)(var_10 + 4) = 0;
    *(type_6 *)(var_10 + 8) = 0;
    *(type_6 *)(var_10 + 0xc) = 0;
    var_10[0x12] = (var_1<var_2,true>)0x0;
    *(type_9 ***)var_10 = &PTR____moneypunct_cache_003a76b8;
    *(type_10 *)(var_10 + 0x10) = 0;
    *(type_6 *)(var_10 + 0x14) = 0;
    *(type_6 *)(var_10 + 0x18) = 0;
    *(type_6 *)(var_10 + 0x1c) = 0;
    *(type_6 *)(var_10 + 0x20) = 0;
    *(type_6 *)(var_10 + 0x24) = 0;
    *(type_6 *)(var_10 + 0x28) = 0;
    *(type_6 *)(var_10 + 0x2c) = 0;
    *(type_6 *)(var_10 + 0x30) = 0;
    *(type_6 *)(var_10 + 0x34) = 0;
    var_10[0x43] = (var_1<var_2,true>)0x0;
                    /* try { // try from 0027216f to 00272173 has its CatchHandler @ 002722d1 */
    var_1<var_2,true>::var_11(var_10,(type_7 *)(var_5 + 0x6c));
    locale::_Impl::var_12(*(type_11 **)(var_5 + 0x6c),(type_12 *)var_10,var_7);
    var_8 = *piVar2;
  }
  var_13 = (type_4 *)*param_7;
  if (*var_13 == *(type_4 *)(var_8 + 0x38)) {
    local_50 = *(type_6 *)(var_8 + 0x34);
    if (param_7[1] == 0) goto LAB_00271c00;
    var_41 = *(char **)(var_8 + 0x24);
    var_13 = var_13 + 1;
    var_33 = *(type_3 *)(var_8 + 0x28);
  }
  else {
    local_50 = *(type_6 *)(var_8 + 0x30);
    var_41 = *(char **)(var_8 + 0x1c);
    var_33 = *(type_3 *)(var_8 + 0x20);
  }
  var_14 = var_13 + param_7[1];
  if ((var_14 <= var_13) ||
     (var_16 = var_13, (*(type_4 *)(*(int *)(var_15 + 0x18) + 1 + (type_3)*var_13 * 2) & 8) == 0))
  goto LAB_00271c00;
  do {
    var_16 = var_16 + 1;
    if (var_14 == var_16) {
      var_7 = (int)var_14 - (int)var_13;
      goto joined_r0x00271c37;
    }
  } while ((*(type_4 *)(*(int *)(var_15 + 0x18) + 1 + (type_3)*var_16 * 2) & 8) != 0);
  var_7 = (int)var_16 - (int)var_13;
joined_r0x00271c37:
  if (var_7 == 0) goto LAB_00271c00;
  var_23 = 0;
  var_27[0] = var_27[0] & 0xffffff00;
  var_26 = var_27;
                    /* try { // try from 00271c61 to 00271cb0 has its CatchHandler @ 00272307 */
  std::string::var_17((type_5 *)&var_26,var_7 * 2);
  var_18 = *(int *)(var_8 + 0x2c);
  var_21 = var_7 - var_18;
  if (0 < (int)var_21) {
    if (var_18 < 0) {
      var_21 = var_7;
    }
    if (*(int *)(var_8 + 0xc) == 0) {
                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */
      std::string::var_19((type_5 *)&var_26,0,var_23,(char *)var_13,var_21);
      var_18 = *(int *)(var_8 + 0x2c);
    }
    else {
      std::string::var_20((type_5 *)&var_26,0,var_23,var_21 * 2,'\0');
      pcVar7 = var_22<var_2>
                         ((char *)var_26,*(char *)(var_8 + 0x12),*(char **)(var_8 + 8),
                          *(type_3 *)(var_8 + 0xc),(char *)var_13,(char *)(var_13 + var_21));
      var_24 = (int)pcVar7 - (int)var_26;
      if (var_23 < var_24) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */
        var_25
                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",
                   var_24,var_23);
      }
      *pcVar7 = '\0';
      var_18 = *(int *)(var_8 + 0x2c);
      var_23 = var_24;
    }
  }
  var_24 = var_23;
  if (0 < var_18) {
    uVar3 = *(type_1 *)(var_8 + 0x11);
    var_29 = var_23 + 1;
    var_28 = 0xf;
    if (var_26 != var_27) {
      var_28 = var_27[0];
    }
    if (var_28 < var_29) {
      std::string::var_30((type_5 *)&var_26,var_23,0,(char *)0x0,1);
    }
    *(type_1 *)((int)var_26 + var_24) = uVar3;
    *(type_1 *)((int)var_26 + var_29) = 0;
    var_23 = var_29;
    if ((int)var_21 < 0) {
                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */
      std::string::var_20((type_5 *)&var_26,var_29,0,-var_21,*(char *)(var_8 + 0x39));
      if (0x7fffffff - var_23 < var_7) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */
        var_31("basic_string::append");
      }
      std::string::var_32((type_5 *)&var_26,(char *)var_13,var_7);
    }
    else {
      if (0x7fffffff - var_29 < *(type_3 *)(var_8 + 0x2c)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */
        var_31("basic_string::append");
      }
                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */
      std::string::var_32
                ((type_5 *)&var_26,(char *)(var_13 + var_21),*(type_3 *)(var_8 + 0x2c));
    }
  }
  var_7 = *(type_3 *)(var_5 + 0xc) & 0xb0;
  var_24 = var_23 + var_33;
  if ((*(type_3 *)(var_5 + 0xc) & 0x200) != 0) {
    var_24 = var_24 + *(int *)(var_8 + 0x18);
  }
  var_35 = 0;
  var_37[0] = var_37[0] & 0xffffff00;
  var_36 = var_37;
                    /* try { // try from 00271d53 to 00271fe7 has its CatchHandler @ 00272303 */
  std::string::var_17((type_5 *)&var_36,var_24 * 2);
  var_34 = *(type_3 *)(var_5 + 8);
  var_40 = (type_5 *)&local_50;
  bVar12 = var_7 == 0x10 && var_24 < var_34;
  do {
    var_29 = var_35;
    switch(*var_40) {
    case (type_5)0x0:
      if (bVar12) {
        std::string::var_20((type_5 *)&var_36,var_35,0,var_34 - var_24,param_6);
      }
      break;
    case (type_5)0x1:
      if (bVar12) {
        std::string::var_20((type_5 *)&var_36,var_35,0,var_34 - var_24,param_6);
      }
      else {
        var_28 = var_35 + 1;
        var_38 = 0xf;
        if (var_36 != var_37) {
          var_38 = var_37[0];
        }
        if (var_38 < var_28) {
                    /* try { // try from 0027225f to 00272263 has its CatchHandler @ 00272303 */
          std::string::var_30((type_5 *)&var_36,var_35,0,(char *)0x0,1);
        }
        *(char *)((int)var_36 + var_29) = param_6;
        var_35 = var_28;
        *(type_1 *)((int)var_36 + var_29 + 1) = 0;
      }
      break;
    case (type_5)0x2:
      if ((*(type_4 *)(var_5 + 0xd) & 2) != 0) {
        if (0x7fffffff - var_35 < *(type_3 *)(var_8 + 0x18)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002722b8 to 002722bc has its CatchHandler @ 00272303 */
          var_31("basic_string::append");
        }
        std::string::var_32
                  ((type_5 *)&var_36,*(char **)(var_8 + 0x14),*(type_3 *)(var_8 + 0x18));
      }
      break;
    case (type_5)0x3:
      if (var_33 != 0) {
        std::string::var_39((type_5 *)&var_36,*var_41);
      }
      break;
    case (type_5)0x4:
      std::string::var_32((type_5 *)&var_36,(char *)var_26,var_23);
    }
    var_40 = var_40 + 1;
  } while ((type_5 *)&var_26 != var_40);
  if (var_33 < 2) {
    if (var_34 <= var_35) goto LAB_00271ef2;
LAB_00271f70:
    if (var_7 == 0x20) {
                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */
      std::string::var_20((type_5 *)&var_36,var_35,0,var_34 - var_35,param_6);
    }
    else {
      std::string::var_20((type_5 *)&var_36,0,0,var_34 - var_35,param_6);
    }
  }
  else {
    if (0x7fffffff - var_35 < var_33 - 1) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */
      var_31("basic_string::append");
    }
    std::string::var_32((type_5 *)&var_36,var_41 + 1,var_33 - 1);
    if (var_35 < var_34) goto LAB_00271f70;
LAB_00271ef2:
    var_34 = var_35;
  }
  if (var_42 == '\0') {
    var_7 = (**(type_13 **)(*param_3 + 0x30))(param_3,var_36,var_34);
    var_42 = var_34 != var_7;
  }
  local_6c._1_3_ = (undefined3)((type_3)param_4 >> 8);
  local_6c = var_43(local_6c._1_3_,var_42);
  if (var_36 != var_37) {
    var_44(var_36);
  }
  if (var_26 != var_27) {
    var_44(var_26);
  }
LAB_00271c00:
  *(type_6 *)(var_5 + 8) = 0;
  local_6c = var_43(local_6c._1_3_,var_42);
  *param_1 = param_3;
  param_1[1] = local_6c;
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void MASKED(undefined4 *param_1,undefined4 param_2,int *param_3,undefined4 param_4,int param_5
                 ,char param_6,undefined4 *param_7)

{
  uint uVar1;
  int *piVar2;
  undefined1 uVar3;
  int iVar4;
  int iVar5;
  byte *pbVar6;
  undefined1 *puVar7;
  uint uVar8;
  uint uVar9;
  undefined4 *puVar10;
  byte *pbVar11;
  uint uVar12;
  bool bVar13;
  uint uVar14;
  int iVar15;
  byte *pbVar16;
  uint **ppuVar17;
  char *local_8c;
  uint local_88;
  uint local_80;
  uint local_7c;
  char local_6d;
  undefined4 local_6c;
  uint *local_50;
  uint *local_4c;
  uint local_48;
  uint local_44 [4];
  uint *local_34;
  uint local_30;
  uint local_2c [7];
  
  local_6d = (char)param_4;
  local_6c = param_4;
  iVar4 = FUN_00212050(param_5 + 0x6c);
  iVar5 = FUN_001ff9b0(PTR_DAT_003a9dfc);
  piVar2 = (int *)(*(int *)(*(int *)(param_5 + 0x6c) + 0xc) + iVar5 * 4);
  iVar15 = *piVar2;
  if (iVar15 == 0) {
                    /* try { // try from 002720f0 to 002720f4 has its CatchHandler @ 002722cf */
    puVar10 = (undefined4 *)FUN_001fb470(0x44);
    puVar10[1] = 0;
    puVar10[2] = 0;
    puVar10[3] = 0;
    *(undefined1 *)((int)puVar10 + 0x12) = 0;
    *puVar10 = &PTR_FUN_003a76b8;
    *(undefined2 *)(puVar10 + 4) = 0;
    puVar10[5] = 0;
    puVar10[6] = 0;
    puVar10[7] = 0;
    puVar10[8] = 0;
    puVar10[9] = 0;
    puVar10[10] = 0;
    puVar10[0xb] = 0;
    puVar10[0xc] = 0;
    puVar10[0xd] = 0;
    *(undefined1 *)((int)puVar10 + 0x43) = 0;
                    /* try { // try from 0027216f to 00272173 has its CatchHandler @ 002722d1 */
    FUN_00212cd0(puVar10,param_5 + 0x6c);
    FUN_001ffec0(*(undefined4 *)(param_5 + 0x6c),puVar10,iVar5);
    iVar15 = *piVar2;
  }
  pbVar16 = (byte *)*param_7;
  if (*pbVar16 == *(byte *)(iVar15 + 0x38)) {
    local_50 = *(uint **)(iVar15 + 0x34);
    if (param_7[1] == 0) goto LAB_00271c00;
    local_8c = *(char **)(iVar15 + 0x24);
    pbVar16 = pbVar16 + 1;
    local_7c = *(uint *)(iVar15 + 0x28);
  }
  else {
    local_50 = *(uint **)(iVar15 + 0x30);
    local_8c = *(char **)(iVar15 + 0x1c);
    local_7c = *(uint *)(iVar15 + 0x20);
  }
  pbVar11 = pbVar16 + param_7[1];
  if ((pbVar11 <= pbVar16) ||
     (pbVar6 = pbVar16, (*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar16 * 2) & 8) == 0))
  goto LAB_00271c00;
  do {
    pbVar6 = pbVar6 + 1;
    if (pbVar11 == pbVar6) {
      uVar12 = (int)pbVar11 - (int)pbVar16;
      goto joined_r0x00271c37;
    }
  } while ((*(byte *)(*(int *)(iVar4 + 0x18) + 1 + (uint)*pbVar6 * 2) & 8) != 0);
  uVar12 = (int)pbVar6 - (int)pbVar16;
joined_r0x00271c37:
  if (uVar12 == 0) goto LAB_00271c00;
  local_48 = 0;
  local_44[0] = local_44[0] & 0xffffff00;
  local_4c = local_44;
                    /* try { // try from 00271c61 to 00271cb0 has its CatchHandler @ 00272307 */
  FUN_002052b0(&local_4c,uVar12 * 2);
  iVar4 = *(int *)(iVar15 + 0x2c);
  local_88 = uVar12 - iVar4;
  if (0 < (int)local_88) {
    if (iVar4 < 0) {
      local_88 = uVar12;
    }
    if (*(int *)(iVar15 + 0xc) == 0) {
                    /* try { // try from 002721ab to 002721af has its CatchHandler @ 00272307 */
      FUN_00205c60(&local_4c,0,local_48,pbVar16,local_88);
      iVar4 = *(int *)(iVar15 + 0x2c);
    }
    else {
      FUN_002058a0(&local_4c,0,local_48,local_88 * 2,0);
      puVar7 = (undefined1 *)
               FUN_00214200(local_4c,(int)*(char *)(iVar15 + 0x12),*(undefined4 *)(iVar15 + 8),
                            *(undefined4 *)(iVar15 + 0xc),pbVar16,pbVar16 + local_88);
      uVar14 = (int)puVar7 - (int)local_4c;
      if (local_48 < uVar14) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002722a6 to 002722aa has its CatchHandler @ 00272307 */
        FUN_00242ab0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase",
                     uVar14,local_48);
      }
      *puVar7 = 0;
      iVar4 = *(int *)(iVar15 + 0x2c);
      local_48 = uVar14;
    }
  }
  uVar14 = local_48;
  if (0 < iVar4) {
    uVar3 = *(undefined1 *)(iVar15 + 0x11);
    uVar1 = local_48 + 1;
    uVar8 = 0xf;
    if (local_4c != local_44) {
      uVar8 = local_44[0];
    }
    if (uVar8 < uVar1) {
      FUN_00204d10(&local_4c,local_48,0,0,1);
    }
    *(undefined1 *)((int)local_4c + uVar14) = uVar3;
    *(undefined1 *)((int)local_4c + uVar1) = 0;
    local_48 = uVar1;
    if ((int)local_88 < 0) {
                    /* try { // try from 002721f2 to 0027223b has its CatchHandler @ 00272307 */
      FUN_002058a0(&local_4c,uVar1,0,-local_88,(int)*(char *)(iVar15 + 0x39));
      if (0x7fffffff - local_48 < uVar12) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002722ca to 002722ce has its CatchHandler @ 00272307 */
        FUN_00242a10("basic_string::append");
      }
      FUN_00206830(&local_4c,pbVar16,uVar12);
    }
    else {
      if (0x7fffffff - uVar1 < *(uint *)(iVar15 + 0x2c)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0027227c to 00272280 has its CatchHandler @ 00272307 */
        FUN_00242a10("basic_string::append");
      }
                    /* try { // try from 0027207b to 0027207f has its CatchHandler @ 00272307 */
      FUN_00206830(&local_4c,pbVar16 + local_88,*(uint *)(iVar15 + 0x2c));
    }
  }
  uVar12 = *(uint *)(param_5 + 0xc) & 0xb0;
  uVar14 = local_48 + local_7c;
  if ((*(uint *)(param_5 + 0xc) & 0x200) != 0) {
    uVar14 = uVar14 + *(int *)(iVar15 + 0x18);
  }
  local_30 = 0;
  local_2c[0] = local_2c[0] & 0xffffff00;
  local_34 = local_2c;
                    /* try { // try from 00271d53 to 00271fe7 has its CatchHandler @ 00272303 */
  FUN_002052b0(&local_34,uVar14 * 2);
  local_80 = *(uint *)(param_5 + 8);
  ppuVar17 = &local_50;
  bVar13 = uVar12 == 0x10 && uVar14 < local_80;
  do {
    uVar1 = local_30;
    switch(*(undefined1 *)ppuVar17) {
    case 0:
      if (bVar13) {
        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);
      }
      break;
    case 1:
      if (bVar13) {
        FUN_002058a0(&local_34,local_30,0,local_80 - uVar14,(int)param_6);
      }
      else {
        uVar8 = local_30 + 1;
        uVar9 = 0xf;
        if (local_34 != local_2c) {
          uVar9 = local_2c[0];
        }
        if (uVar9 < uVar8) {
          FUN_00204d10(&local_34,local_30,0,0,1);
        }
        *(char *)((int)local_34 + uVar1) = param_6;
        local_30 = uVar8;
        *(undefined1 *)((int)local_34 + uVar1 + 1) = 0;
      }
      break;
    case 2:
      if ((*(byte *)(param_5 + 0xd) & 2) != 0) {
        if (0x7fffffff - local_30 < *(uint *)(iVar15 + 0x18)) {
                    /* WARNING: Subroutine does not return */
          FUN_00242a10("basic_string::append");
        }
        FUN_00206830(&local_34,*(undefined4 *)(iVar15 + 0x14),*(uint *)(iVar15 + 0x18));
      }
      break;
    case 3:
      if (local_7c != 0) {
        FUN_002055d0(&local_34,(int)*local_8c);
      }
      break;
    case 4:
      FUN_00206830(&local_34,local_4c,local_48);
    }
    ppuVar17 = (uint **)((int)ppuVar17 + 1);
  } while (&local_4c != ppuVar17);
  if (local_7c < 2) {
    if (local_80 <= local_30) goto LAB_00271ef2;
LAB_00271f70:
    if (uVar12 == 0x20) {
                    /* try { // try from 002721cc to 002721d0 has its CatchHandler @ 00272303 */
      FUN_002058a0(&local_34,local_30,0,local_80 - local_30,(int)param_6);
    }
    else {
      FUN_002058a0(&local_34,0,0,local_80 - local_30,(int)param_6);
    }
  }
  else {
    if (0x7fffffff - local_30 < local_7c - 1) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0027228e to 00272292 has its CatchHandler @ 00272303 */
      FUN_00242a10("basic_string::append");
    }
    FUN_00206830(&local_34,local_8c + 1,local_7c - 1);
    if (local_30 < local_80) goto LAB_00271f70;
LAB_00271ef2:
    local_80 = local_30;
  }
  if (local_6d == '\0') {
    uVar12 = (**(code **)(*param_3 + 0x30))(param_3,local_34,local_80);
    local_6d = local_80 != uVar12;
  }
  local_6c._1_3_ = (undefined3)((uint)param_4 >> 8);
  local_6c = CONCAT31(local_6c._1_3_,local_6d);
  if (local_34 != local_2c) {
    FUN_001fd020(local_34);
  }
  if (local_4c != local_44) {
    FUN_001fd020(local_4c);
  }
LAB_00271c00:
  *(undefined4 *)(param_5 + 8) = 0;
  local_6c = CONCAT31(local_6c._1_3_,local_6d);
  *param_1 = param_3;
  param_1[1] = local_6c;
  return;
}

