
/* std::ostreambuf_iterator<char, std::char_traits<char> > std::money_put<char,
   std::ostreambuf_iterator<char, std::char_traits<char> >
   >::_M_insert<false>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&,
   char, std::string const&) const */

undefined1  [16]
std::money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>::_M_insert<false>
          (undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,
          undefined8 *param_6)

{
  long *plVar1;
  int iVar2;
  ctype *pcVar3;
  ulong uVar4;
  byte *pbVar5;
  char *pcVar6;
  long lVar7;
  __moneypunct_cache<char,false> *this;
  bool bVar8;
  ulong uVar9;
  ulong uVar10;
  ulong uVar11;
  char cVar12;
  uint uVar13;
  byte *pbVar14;
  char **ppcVar15;
  byte *pbVar16;
  ulong uVar17;
  undefined1 auVar18 [16];
  ulong local_e8;
  char *local_d0;
  char local_b7;
  undefined1 local_7c [4];
  char *local_78;
  ulong local_70;
  char local_68;
  undefined7 uStack_67;
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  
  local_b7 = (char)param_3;
  pcVar3 = use_facet<std::ctype<char>>((locale *)(param_4 + 0xd0));
  uVar4 = locale::id::_M_id((id *)&moneypunct<char,false>::id);
  plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar4 * 8);
  lVar7 = *plVar1;
  if (lVar7 == 0) {
                    /* try { // try from 0030f7ed to 0030f7f1 has its CatchHandler @ 0030fa03 */
    this = (__moneypunct_cache<char,false> *)operator_new(0x70);
    *(undefined4 *)(this + 8) = 0;
    *(undefined8 *)(this + 0x10) = 0;
    *(undefined8 *)(this + 0x18) = 0;
    this[0x22] = (__moneypunct_cache<char,false>)0x0;
    *(undefined ***)this = &PTR____moneypunct_cache_003f3258;
    *(undefined2 *)(this + 0x20) = 0;
    *(undefined8 *)(this + 0x28) = 0;
    *(undefined8 *)(this + 0x30) = 0;
    *(undefined8 *)(this + 0x38) = 0;
    *(undefined8 *)(this + 0x40) = 0;
    *(undefined8 *)(this + 0x48) = 0;
    *(undefined8 *)(this + 0x50) = 0;
    *(undefined8 *)(this + 0x58) = 0;
    *(undefined4 *)(this + 0x60) = 0;
    this[0x6f] = (__moneypunct_cache<char,false>)0x0;
                    /* try { // try from 0030f870 to 0030f874 has its CatchHandler @ 0030fa01 */
    __moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_4 + 0xd0));
    locale::_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar4);
    lVar7 = *plVar1;
  }
  pbVar16 = (byte *)*param_6;
  if (*pbVar16 == *(byte *)(lVar7 + 100)) {
    local_7c = *(undefined1 (*) [4])(lVar7 + 0x60);
    if (param_6[1] == 0) goto LAB_0030f298;
    local_d0 = *(char **)(lVar7 + 0x48);
    pbVar16 = pbVar16 + 1;
    local_e8 = *(ulong *)(lVar7 + 0x50);
  }
  else {
    local_7c = *(undefined1 (*) [4])(lVar7 + 0x5c);
    local_d0 = *(char **)(lVar7 + 0x38);
    local_e8 = *(ulong *)(lVar7 + 0x40);
  }
  pbVar14 = pbVar16 + param_6[1];
  if ((pbVar16 < pbVar14) &&
     (pbVar5 = pbVar16, (*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2) & 8) != 0)) {
    do {
      pbVar5 = pbVar5 + 1;
      if (pbVar14 == pbVar5) {
        uVar4 = (long)pbVar14 - (long)pbVar16;
        goto joined_r0x0030f2c6;
      }
    } while ((*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2) & 8) != 0);
    uVar4 = (long)pbVar5 - (long)pbVar16;
joined_r0x0030f2c6:
    if (uVar4 != 0) {
      local_70 = 0;
      local_78 = &local_68;
      local_68 = '\0';
                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */
      std::string::reserve((string *)&local_78,uVar4 * 2);
      iVar2 = *(int *)(lVar7 + 0x58);
      uVar17 = uVar4 - (long)iVar2;
      if (0 < (long)uVar17) {
        if (iVar2 < 0) {
          uVar17 = uVar4;
        }
        if (*(long *)(lVar7 + 0x18) == 0) {
                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */
          std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);
          iVar2 = *(int *)(lVar7 + 0x58);
        }
        else {
          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');
          pcVar6 = __add_grouping<char>
                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),
                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));
          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */
            __throw_out_of_range_fmt
                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",
                       "basic_string::erase");
          }
          *pcVar6 = '\0';
          iVar2 = *(int *)(lVar7 + 0x58);
          local_70 = (long)pcVar6 - (long)local_78;
        }
      }
      uVar9 = local_70;
      if (0 < iVar2) {
        cVar12 = *(char *)(lVar7 + 0x21);
        uVar11 = local_70 + 1;
        if (local_78 == &local_68) {
          uVar10 = 0xf;
        }
        else {
          uVar10 = CONCAT71(uStack_67,local_68);
        }
        if (uVar10 < uVar11) {
                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */
          std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);
        }
        local_78[uVar9] = cVar12;
        local_78[uVar11] = '\0';
        local_70 = uVar11;
        if ((long)uVar17 < 0) {
                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */
          std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));
          if (0x7fffffffffffffff - local_70 < uVar4) {
                    /* WARNING: Subroutine does not return */
            __throw_length_error("basic_string::append");
          }
        }
        else {
          uVar4 = (ulong)*(int *)(lVar7 + 0x58);
          pbVar16 = pbVar16 + uVar17;
          if (0x7fffffffffffffff - uVar11 < uVar4) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */
            __throw_length_error("basic_string::append");
          }
        }
                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */
        std::string::_M_append((string *)&local_78,(char *)pbVar16,uVar4);
      }
      uVar4 = local_70 + local_e8;
      uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;
      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {
        uVar4 = uVar4 + *(long *)(lVar7 + 0x30);
      }
      local_50 = 0;
      local_58 = &local_48;
      local_48 = 0;
                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */
      std::string::reserve((string *)&local_58,uVar4 * 2);
      uVar17 = *(ulong *)(param_4 + 0x10);
      ppcVar15 = (char **)local_7c;
      bVar8 = uVar13 == 0x10 && uVar4 < uVar17;
      do {
        uVar9 = local_50;
        switch(*(undefined1 *)ppcVar15) {
        case 0:
          if (bVar8) {
            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);
          }
          break;
        case 1:
          if (bVar8) {
                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */
            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);
          }
          else {
            if (local_58 == &local_48) {
              uVar11 = 0xf;
            }
            else {
              uVar11 = CONCAT71(uStack_47,local_48);
            }
            cVar12 = param_5;
            if (uVar11 < local_50 + 1) {
                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */
              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);
            }
LAB_0030f569:
            local_58[uVar9] = cVar12;
            local_50 = uVar9 + 1;
            local_58[uVar9 + 1] = 0;
          }
          break;
        case 2:
          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {
            uVar9 = *(ulong *)(lVar7 + 0x30);
            pcVar6 = *(char **)(lVar7 + 0x28);
            if (0x7fffffffffffffff - local_50 < uVar9) {
                    /* WARNING: Subroutine does not return */
              __throw_length_error("basic_string::append");
            }
            goto LAB_0030f5c8;
          }
          break;
        case 3:
          if (local_e8 != 0) {
            cVar12 = *local_d0;
            if (local_58 == &local_48) {
              uVar11 = 0xf;
            }
            else {
              uVar11 = CONCAT71(uStack_47,local_48);
            }
            if (uVar11 < local_50 + 1) {
                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */
              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);
            }
            goto LAB_0030f569;
          }
          break;
        case 4:
          uVar9 = local_70;
          pcVar6 = local_78;
LAB_0030f5c8:
          std::string::_M_append((string *)&local_58,pcVar6,uVar9);
        }
        ppcVar15 = (char **)((long)ppcVar15 + 1);
      } while (&local_78 != ppcVar15);
      if (1 < local_e8) {
        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */
          __throw_length_error("basic_string::append");
        }
        std::string::_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1);
      }
      uVar4 = local_50;
      if (local_50 < uVar17) {
        uVar4 = uVar17;
        if (uVar13 == 0x20) {
                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */
          std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);
        }
        else {
          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);
        }
      }
      if (local_b7 == '\0') {
        lVar7 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4);
        local_b7 = (int)uVar4 != lVar7;
      }
      param_3 = param_3 & 0xffffffffffffff00;
      if (local_58 != &local_48) {
        operator_delete(local_58);
      }
      if (local_78 != &local_68) {
        operator_delete(local_78);
      }
    }
  }
LAB_0030f298:
  auVar18._9_7_ = (int7)(param_3 >> 8);
  auVar18[8] = local_b7;
  *(undefined8 *)(param_4 + 0x10) = 0;
  auVar18._0_8_ = param_2;
  return auVar18;
}



undefined1  [16]
FUN_0030f1b0(undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,
            undefined8 *param_6)

{
  long *plVar1;
  undefined1 uVar2;
  int iVar3;
  long lVar4;
  long lVar5;
  byte *pbVar6;
  undefined1 *puVar7;
  long lVar8;
  undefined8 *puVar9;
  bool bVar10;
  ulong uVar11;
  ulong uVar12;
  ulong uVar13;
  char cVar14;
  uint uVar15;
  byte *pbVar16;
  ulong uVar17;
  undefined1 **ppuVar18;
  byte *pbVar19;
  ulong uVar20;
  undefined1 auVar21 [16];
  ulong local_e8;
  char *local_d0;
  char local_b7;
  undefined1 local_7c [4];
  undefined1 *local_78;
  ulong local_70;
  undefined1 local_68;
  undefined7 uStack_67;
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  
  local_b7 = (char)param_3;
  lVar4 = FUN_002b4380(param_4 + 0xd0);
  lVar5 = FUN_002a50c0(&DAT_00405ef0);
  plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8);
  lVar8 = *plVar1;
  if (lVar8 == 0) {
                    /* try { // try from 0030f7ed to 0030f7f1 has its CatchHandler @ 0030fa03 */
    puVar9 = (undefined8 *)FUN_002a11b0(0x70);
    *(undefined4 *)(puVar9 + 1) = 0;
    puVar9[2] = 0;
    puVar9[3] = 0;
    *(undefined1 *)((long)puVar9 + 0x22) = 0;
    *puVar9 = &PTR_FUN_003f3258;
    *(undefined2 *)(puVar9 + 4) = 0;
    puVar9[5] = 0;
    puVar9[6] = 0;
    puVar9[7] = 0;
    puVar9[8] = 0;
    puVar9[9] = 0;
    puVar9[10] = 0;
    puVar9[0xb] = 0;
    *(undefined4 *)(puVar9 + 0xc) = 0;
    *(undefined1 *)((long)puVar9 + 0x6f) = 0;
                    /* try { // try from 0030f870 to 0030f874 has its CatchHandler @ 0030fa01 */
    FUN_002b55a0(puVar9,param_4 + 0xd0);
    FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);
    lVar8 = *plVar1;
  }
  pbVar19 = (byte *)*param_6;
  if (*pbVar19 == *(byte *)(lVar8 + 100)) {
    local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);
    if (param_6[1] == 0) goto LAB_0030f298;
    local_d0 = *(char **)(lVar8 + 0x48);
    pbVar19 = pbVar19 + 1;
    local_e8 = *(ulong *)(lVar8 + 0x50);
  }
  else {
    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);
    local_d0 = *(char **)(lVar8 + 0x38);
    local_e8 = *(ulong *)(lVar8 + 0x40);
  }
  pbVar16 = pbVar19 + param_6[1];
  if ((pbVar19 < pbVar16) &&
     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)) {
    do {
      pbVar6 = pbVar6 + 1;
      if (pbVar16 == pbVar6) {
        uVar17 = (long)pbVar16 - (long)pbVar19;
        goto joined_r0x0030f2c6;
      }
    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);
    uVar17 = (long)pbVar6 - (long)pbVar19;
joined_r0x0030f2c6:
    if (uVar17 != 0) {
      local_70 = 0;
      local_78 = &local_68;
      local_68 = 0;
                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */
      FUN_002a9b20(&local_78,uVar17 * 2);
      iVar3 = *(int *)(lVar8 + 0x58);
      uVar20 = uVar17 - (long)iVar3;
      if (0 < (long)uVar20) {
        if (iVar3 < 0) {
          uVar20 = uVar17;
        }
        if (*(long *)(lVar8 + 0x18) == 0) {
                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */
          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);
          iVar3 = *(int *)(lVar8 + 0x58);
        }
        else {
          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);
          puVar7 = (undefined1 *)
                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),
                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);
          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */
            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",
                         "basic_string::erase");
          }
          *puVar7 = 0;
          iVar3 = *(int *)(lVar8 + 0x58);
          local_70 = (long)puVar7 - (long)local_78;
        }
      }
      uVar11 = local_70;
      if (0 < iVar3) {
        uVar2 = *(undefined1 *)(lVar8 + 0x21);
        uVar13 = local_70 + 1;
        if (local_78 == &local_68) {
          uVar12 = 0xf;
        }
        else {
          uVar12 = CONCAT71(uStack_67,local_68);
        }
        if (uVar12 < uVar13) {
                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */
          FUN_002a9670(&local_78,local_70,0,0,1);
        }
        local_78[uVar11] = uVar2;
        local_78[uVar13] = 0;
        local_70 = uVar13;
        if ((long)uVar20 < 0) {
                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */
          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));
          if (0x7fffffffffffffff - local_70 < uVar17) {
                    /* WARNING: Subroutine does not return */
            FUN_002e12b0("basic_string::append");
          }
        }
        else {
          uVar17 = (ulong)*(int *)(lVar8 + 0x58);
          pbVar19 = pbVar19 + uVar20;
          if (0x7fffffffffffffff - uVar13 < uVar17) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */
            FUN_002e12b0("basic_string::append",pbVar19);
          }
        }
                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */
        FUN_002aac00(&local_78,pbVar19,uVar17);
      }
      uVar17 = local_70 + local_e8;
      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;
      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {
        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);
      }
      local_50 = 0;
      local_58 = &local_48;
      local_48 = 0;
                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */
      FUN_002a9b20(&local_58,uVar17 * 2);
      uVar20 = *(ulong *)(param_4 + 0x10);
      ppuVar18 = (undefined1 **)local_7c;
      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;
      do {
        uVar11 = local_50;
        switch(*(undefined1 *)ppuVar18) {
        case 0:
          if (bVar10) {
            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);
          }
          break;
        case 1:
          if (bVar10) {
                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */
            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);
          }
          else {
            if (local_58 == &local_48) {
              uVar13 = 0xf;
            }
            else {
              uVar13 = CONCAT71(uStack_47,local_48);
            }
            cVar14 = param_5;
            if (uVar13 < local_50 + 1) {
                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */
              FUN_002a9670(&local_58,local_50,0,0,1);
            }
LAB_0030f569:
            local_58[uVar11] = cVar14;
            local_50 = uVar11 + 1;
            local_58[uVar11 + 1] = 0;
          }
          break;
        case 2:
          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {
            uVar11 = *(ulong *)(lVar8 + 0x30);
            puVar7 = *(undefined1 **)(lVar8 + 0x28);
            if (0x7fffffffffffffff - local_50 < uVar11) {
                    /* WARNING: Subroutine does not return */
              FUN_002e12b0("basic_string::append");
            }
            goto LAB_0030f5c8;
          }
          break;
        case 3:
          if (local_e8 != 0) {
            cVar14 = *local_d0;
            if (local_58 == &local_48) {
              uVar13 = 0xf;
            }
            else {
              uVar13 = CONCAT71(uStack_47,local_48);
            }
            if (uVar13 < local_50 + 1) {
                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */
              FUN_002a9670(&local_58,local_50,0,0,1);
            }
            goto LAB_0030f569;
          }
          break;
        case 4:
          uVar11 = local_70;
          puVar7 = local_78;
LAB_0030f5c8:
          FUN_002aac00(&local_58,puVar7,uVar11);
        }
        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);
      } while (&local_78 != ppuVar18);
      if (1 < local_e8) {
        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */
          FUN_002e12b0("basic_string::append",local_d0 + 1);
        }
        FUN_002aac00(&local_58);
      }
      uVar17 = local_50;
      if (local_50 < uVar20) {
        uVar17 = uVar20;
        if (uVar15 == 0x20) {
                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */
          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);
        }
        else {
          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);
        }
      }
      if (local_b7 == '\0') {
        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);
        local_b7 = (int)uVar17 != lVar8;
      }
      param_3 = param_3 & 0xffffffffffffff00;
      if (local_58 != &local_48) {
        FUN_002a2980(local_58);
      }
      if (local_78 != &local_68) {
        FUN_002a2980();
      }
    }
  }
LAB_0030f298:
  auVar21._9_7_ = (int7)(param_3 >> 8);
  auVar21[8] = local_b7;
  *(undefined8 *)(param_4 + 0x10) = 0;
  auVar21._0_8_ = param_2;
  return auVar21;
}


PUSH R15
LEA RAX,[RCX + 0xd0]
MOV R15,RCX
PUSH R14
MOV RDI,RAX
PUSH R13
PUSH R12
MOV R12,R9
PUSH RBP
PUSH RBX
MOV RBX,RDX
SUB RSP,0xc8
MOV qword ptr [RSP],RSI
MOV qword ptr [RSP + 0x18],RDX
MOV dword ptr [RSP + 0x38],R8D
MOV byte ptr [RSP + 0x42],R8B
MOV byte ptr [RSP + 0x41],DL
MOV qword ptr [RSP + 0x10],RAX
CALL 0x002b4380
LEA RDI,[0x405ef0]
MOV qword ptr [RSP + 0x8],RAX
CALL 0x002a50c0
MOV R14,RAX
MOV RAX,qword ptr [R15 + 0xd0]
MOV RAX,qword ptr [RAX + 0x18]
LEA R13,[RAX + R14*0x8]
MOV RBP,qword ptr [R13]
TEST RBP,RBP
JZ 0x0030f7e8
MOV R13,qword ptr [R12]
MOVZX EAX,byte ptr [RBP + 0x64]
MOV R12,qword ptr [R12 + 0x8]
CMP byte ptr [R13],AL
JZ 0x0030f450
MOV EAX,dword ptr [RBP + 0x5c]
MOV dword ptr [RSP + 0x7c],EAX
MOV RAX,qword ptr [RBP + 0x38]
MOV qword ptr [RSP + 0x28],RAX
MOV RAX,qword ptr [RBP + 0x40]
MOV qword ptr [RSP + 0x10],RAX
ADD R12,R13
CMP R12,R13
JBE 0x0030f298
MOV RAX,qword ptr [RSP + 0x8]
MOV RCX,qword ptr [RAX + 0x30]
MOVZX EAX,byte ptr [R13]
TEST byte ptr [RCX + RAX*0x2 + 0x1],0x8
JZ 0x0030f298
MOV RAX,R13
JMP 0x0030f28a
MOVZX EDX,byte ptr [RAX]
TEST byte ptr [RCX + RDX*0x2 + 0x1],0x8
JZ 0x0030f2c0
ADD RAX,0x1
CMP R12,RAX
JNZ 0x0030f280
SUB R12,R13
JNZ 0x0030f2c8
MOV BL,byte ptr [RSP + 0x41]
MOV RAX,qword ptr [RSP]
MOV qword ptr [R15 + 0x10],0x0
ADD RSP,0xc8
MOV RDX,RBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R12,RAX
SUB R12,R13
JZ 0x0030f298
LEA RBX,[RSP + 0x80]
LEA RSI,[R12 + R12*0x1]
MOV qword ptr [RSP + 0x88],0x0
LEA RAX,[RBX + 0x10]
MOV RDI,RBX
MOV qword ptr [RSP + 0x20],RBX
MOV qword ptr [RSP + 0x80],RAX
MOV byte ptr [RSP + 0x90],0x0
CALL 0x002a9b20
MOVSXD RDX,dword ptr [RBP + 0x58]
MOV R14,R12
SUB R14,RDX
MOV RAX,RDX
TEST R14,R14
JLE 0x0030f388
TEST EDX,EDX
MOV RDX,qword ptr [RSP + 0x88]
CMOVS R14,R12
CMP qword ptr [RBP + 0x18],0x0
JZ 0x0030f890
LEA RCX,[R14 + R14*0x1]
XOR R8D,R8D
XOR ESI,ESI
MOV RDI,RBX
CALL 0x002aa010
MOV RCX,qword ptr [RBP + 0x18]
MOV RDX,qword ptr [RBP + 0x10]
LEA R9,[R13 + R14*0x1]
MOV R8,R13
MOVSX ESI,byte ptr [RBP + 0x22]
MOV RDI,qword ptr [RSP + 0x80]
CALL 0x002b6230
MOV RCX,qword ptr [RSP + 0x88]
MOV RDX,RAX
SUB RDX,qword ptr [RSP + 0x80]
CMP RDX,RCX
JA 0x0030f985
MOV qword ptr [RSP + 0x88],RDX
MOV byte ptr [RAX],0x0
MOV EAX,dword ptr [RBP + 0x58]
MOV RBX,qword ptr [RSP + 0x88]
TEST EAX,EAX
JG 0x0030f720
MOV EAX,dword ptr [R15 + 0x18]
ADD RBX,qword ptr [RSP + 0x10]
MOV EDI,EAX
AND EDI,0xb0
MOV dword ptr [RSP + 0x3c],EDI
TEST AH,0x2
JNZ 0x0030f6c0
LEA R14,[RSP + 0xa0]
LEA RSI,[RBX + RBX*0x1]
MOV qword ptr [RSP + 0xa8],0x0
LEA RAX,[R14 + 0x10]
MOV RDI,R14
MOV byte ptr [RSP + 0xb0],0x0
MOV qword ptr [RSP + 0xa0],RAX
CALL 0x002a9b20
MOV RSI,qword ptr [R15 + 0x10]
CMP dword ptr [RSP + 0x3c],0x10
LEA R12,[RSP + 0x7c]
LEA R13,[0x35eb5c]
SETZ DL
CMP RSI,RBX
MOV qword ptr [RSP + 0x30],RSI
SETA AL
SUB RSI,RBX
AND EDX,EAX
LEA RAX,[R12 + 0x4]
MOV qword ptr [RSP + 0x48],RSI
MOV qword ptr [RSP + 0x8],RAX
MOVSX EAX,byte ptr [RSP + 0x42]
MOV byte ptr [RSP + 0x43],DL
MOV dword ptr [RSP + 0x44],EAX
CMP byte ptr [R12],0x4
JA 0x0030f5d0
MOVZX EAX,byte ptr [R12]
MOVSXD RAX,dword ptr [R13 + RAX*0x4]
ADD RAX,R13
JMP RAX
MOV EAX,dword ptr [RBP + 0x60]
MOV dword ptr [RSP + 0x7c],EAX
TEST R12,R12
JZ 0x0030f298
MOV RAX,qword ptr [RBP + 0x48]
ADD R13,0x1
MOV qword ptr [RSP + 0x28],RAX
MOV RAX,qword ptr [RBP + 0x50]
MOV qword ptr [RSP + 0x10],RAX
JMP 0x0030f255
CMP qword ptr [RSP + 0x10],0x0
JZ 0x0030f5d0
MOV RAX,qword ptr [RSP + 0x28]
MOV RBX,qword ptr [RSP + 0xa8]
LEA RDX,[R14 + 0x10]
MOVZX EAX,byte ptr [RAX]
MOV byte ptr [RSP + 0x50],AL
LEA RAX,[RBX + 0x1]
MOV qword ptr [RSP + 0x58],RAX
MOV RAX,qword ptr [RSP + 0xa0]
CMP RAX,RDX
JZ 0x0030f97b
MOV RDX,qword ptr [RSP + 0xb0]
CMP qword ptr [RSP + 0x58],RDX
JA 0x0030f8ff
MOVZX EDI,byte ptr [RSP + 0x50]
JMP 0x0030f569
TEST byte ptr [R15 + 0x19],0x2
JZ 0x0030f5d0
MOV RDX,qword ptr [RBP + 0x30]
MOV RSI,qword ptr [RBP + 0x28]
MOV RAX,0x7fffffffffffffff
SUB RAX,qword ptr [RSP + 0xa8]
CMP RDX,RAX
JBE 0x0030f5c8
LEA RDI,[0x33f22b]
CALL 0x002e12b0
CMP byte ptr [RSP + 0x43],0x0
MOV RBX,qword ptr [RSP + 0xa8]
JNZ 0x0030f7c8
LEA RAX,[RBX + 0x1]
LEA RDX,[R14 + 0x10]
MOV qword ptr [RSP + 0x50],RAX
MOV RAX,qword ptr [RSP + 0xa0]
CMP RAX,RDX
JZ 0x0030f971
MOV RDX,qword ptr [RSP + 0xb0]
CMP qword ptr [RSP + 0x50],RDX
JA 0x0030f945
MOVZX EDI,byte ptr [RSP + 0x42]
MOV byte ptr [RAX + RBX*0x1],DIL
LEA RAX,[RBX + 0x1]
MOV qword ptr [RSP + 0xa8],RAX
MOV RAX,qword ptr [RSP + 0xa0]
MOV byte ptr [RAX + RBX*0x1 + 0x1],0x0
JMP 0x0030f5d0
CMP byte ptr [RSP + 0x43],0x0
JZ 0x0030f5d0
MOV R8D,dword ptr [RSP + 0x44]
MOV RCX,qword ptr [RSP + 0x48]
XOR EDX,EDX
MOV RDI,R14
MOV RSI,qword ptr [RSP + 0xa8]
CALL 0x002aa010
JMP 0x0030f5d0
MOV RDX,qword ptr [RSP + 0x88]
MOV RSI,qword ptr [RSP + 0x80]
MOV RDI,R14
CALL 0x002aac00
ADD R12,0x1
CMP qword ptr [RSP + 0x8],R12
JNZ 0x0030f42e
MOV RAX,qword ptr [RSP + 0x10]
MOV RBX,qword ptr [RSP + 0xa8]
CMP RAX,0x1
JA 0x0030f6d0
MOV RAX,qword ptr [RSP + 0x30]
CMP RAX,RBX
JA 0x0030f690
CMP byte ptr [RSP + 0x41],0x0
MOV RSI,qword ptr [RSP + 0xa0]
MOVSXD RBX,EBX
JNZ 0x0030f633
MOV RDI,qword ptr [RSP]
MOV RDX,RBX
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x60]
CMP RBX,RAX
MOV RSI,qword ptr [RSP + 0xa0]
SETNZ byte ptr [RSP + 0x41]
MOV RAX,qword ptr [RSP]
XOR EBX,EBX
MOV BL,byte ptr [RSP + 0x41]
ADD R14,0x10
MOV qword ptr [RSP + 0x60],RAX
MOVZX EAX,BL
MOV qword ptr [RSP + 0x68],RBX
MOV RBX,qword ptr [RSP + 0x18]
XOR BL,BL
OR RBX,RAX
MOV byte ptr [RSP + 0x41],BL
CMP RSI,R14
JZ 0x0030f669
MOV RDI,RSI
CALL 0x002a2980
MOV RAX,qword ptr [RSP + 0x20]
MOV RDI,qword ptr [RSP + 0x80]
ADD RAX,0x10
CMP RDI,RAX
JZ 0x0030f298
CALL 0x002a2980
JMP 0x0030f298
SUB RAX,RBX
XOR EDX,EDX
CMP dword ptr [RSP + 0x3c],0x20
MOVSX R8D,byte ptr [RSP + 0x38]
MOV RCX,RAX
JZ 0x0030f8aa
XOR ESI,ESI
MOV RDI,R14
CALL 0x002aa010
MOV RBX,qword ptr [RSP + 0x30]
JMP 0x0030f604
ADD RBX,qword ptr [RBP + 0x30]
JMP 0x0030f3b6
MOV RDX,RAX
MOV RSI,qword ptr [RSP + 0x28]
MOV RAX,0x7fffffffffffffff
SUB RDX,0x1
SUB RAX,RBX
ADD RSI,0x1
CMP RDX,RAX
JA 0x0030f99a
MOV RDI,R14
CALL 0x002aac00
MOV RBX,qword ptr [RSP + 0xa8]
MOV RAX,qword ptr [RSP + 0x30]
CMP RAX,RBX
JBE 0x0030f604
JMP 0x0030f690
MOVZX EAX,byte ptr [RBP + 0x21]
MOV RDI,qword ptr [RSP + 0x20]
MOV byte ptr [RSP + 0x30],AL
LEA RAX,[RBX + 0x1]
LEA RDX,[RDI + 0x10]
MOV qword ptr [RSP + 0x8],RAX
MOV RAX,qword ptr [RSP + 0x80]
CMP RAX,RDX
JZ 0x0030f967
MOV RDX,qword ptr [RSP + 0x90]
CMP qword ptr [RSP + 0x8],RDX
JA 0x0030f921
MOVZX EDI,byte ptr [RSP + 0x30]
MOV RSI,qword ptr [RSP + 0x8]
MOV byte ptr [RAX + RBX*0x1],DIL
MOV RAX,qword ptr [RSP + 0x80]
MOV qword ptr [RSP + 0x88],RSI
MOV byte ptr [RAX + RSI*0x1],0x0
TEST R14,R14
JS 0x0030f8ba
MOVSXD RDX,dword ptr [RBP + 0x58]
LEA RSI,[R13 + R14*0x1]
MOV RAX,0x7fffffffffffffff
SUB RAX,qword ptr [RSP + 0x88]
CMP RDX,RAX
JA 0x0030f9a6
MOV RDI,qword ptr [RSP + 0x20]
CALL 0x002aac00
MOV RBX,qword ptr [RSP + 0x88]
JMP 0x0030f398
MOV R8D,dword ptr [RSP + 0x44]
MOV RCX,qword ptr [RSP + 0x48]
XOR EDX,EDX
MOV RSI,RBX
MOV RDI,R14
CALL 0x002aa010
JMP 0x0030f5d0
MOV EDI,0x70
CALL 0x002a11b0
MOV RBP,RAX
MOV dword ptr [RAX + 0x8],0x0
MOV RSI,qword ptr [RSP + 0x10]
LEA RAX,[0x3f3248]
MOV qword ptr [RBP + 0x10],0x0
MOV RDI,RBP
MOV qword ptr [RBP + 0x18],0x0
ADD RAX,0x10
MOV byte ptr [RBP + 0x22],0x0
MOV qword ptr [RBP],RAX
XOR EAX,EAX
MOV word ptr [RBP + 0x20],AX
MOV qword ptr [RBP + 0x28],0x0
MOV qword ptr [RBP + 0x30],0x0
MOV qword ptr [RBP + 0x38],0x0
MOV qword ptr [RBP + 0x40],0x0
MOV qword ptr [RBP + 0x48],0x0
MOV qword ptr [RBP + 0x50],0x0
MOV qword ptr [RBP + 0x58],0x0
MOV dword ptr [RBP + 0x60],0x0
MOV byte ptr [RBP + 0x6f],0x0
CALL 0x002b55a0
MOV RDI,qword ptr [R15 + 0xd0]
MOV RSI,RBP
MOV RDX,R14
CALL 0x002a5530
MOV RBP,qword ptr [R13]
JMP 0x0030f225
MOV RDI,qword ptr [RSP + 0x20]
MOV R8,R14
MOV RCX,R13
XOR ESI,ESI
CALL 0x002aa2b0
MOV EAX,dword ptr [RBP + 0x58]
JMP 0x0030f388
MOV RSI,RBX
MOV RDI,R14
CALL 0x002aa010
JMP 0x0030f6b3
MOV RCX,R14
MOVSX R8D,byte ptr [RBP + 0x65]
MOV RDI,qword ptr [RSP + 0x20]
XOR EDX,EDX
MOV RSI,qword ptr [RSP + 0x88]
NEG RCX
CALL 0x002aa010
MOV RAX,0x7fffffffffffffff
SUB RAX,qword ptr [RSP + 0x88]
CMP R12,RAX
JA 0x0030f9b2
MOV RDX,R12
MOV RSI,R13
JMP 0x0030f7ad
MOV R8D,0x1
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBX
MOV RDI,R14
CALL 0x002a9670
MOV RAX,qword ptr [RSP + 0xa0]
JMP 0x0030f4d1
MOV RDI,qword ptr [RSP + 0x20]
MOV R8D,0x1
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBX
CALL 0x002a9670
MOV RAX,qword ptr [RSP + 0x80]
JMP 0x0030f75e
MOV R8D,0x1
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBX
MOV RDI,R14
CALL 0x002a9670
MOV RAX,qword ptr [RSP + 0xa0]
JMP 0x0030f564
MOV EDX,0xf
JMP 0x0030f753
MOV EDX,0xf
JMP 0x0030f559
MOV EDX,0xf
JMP 0x0030f4c6
LEA RSI,[0x351d14]
LEA RDI,[0x342fd0]
XOR EAX,EAX
CALL 0x002e1330
LEA RDI,[0x33f22b]
CALL 0x002e12b0
LEA RDI,[0x33f22b]
CALL 0x002e12b0
LEA RDI,[0x33f22b]
CALL 0x002e12b0
(translation_unit "undefined1  [16]\nFUN_0030f1b0(undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,\n            undefined8 *param_6)\n\n{\n  long *plVar1;\n  undefined1 uVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  byte *pbVar6;\n  undefined1 *puVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  bool bVar10;\n  ulong uVar11;\n  ulong uVar12;\n  ulong uVar13;\n  char cVar14;\n  uint uVar15;\n  byte *pbVar16;\n  ulong uVar17;\n  undefined1 **ppuVar18;\n  byte *pbVar19;\n  ulong uVar20;\n  undefined1 auVar21 [16];\n  ulong local_e8;\n  char *local_d0;\n  char local_b7;\n  undefined1 local_7c [4];\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68;\n  undefined7 uStack_67;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48;\n  undefined7 uStack_47;\n  \n  local_b7 = (char)param_3;\n  lVar4 = FUN_002b4380(param_4 + 0xd0);\n  lVar5 = FUN_002a50c0(&DAT_00405ef0);\n  plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8);\n  lVar8 = *plVar1;\n  if (lVar8 == 0) {\n                    /* try { // try from 0030f7ed to 0030f7f1 has its CatchHandler @ 0030fa03 */\n    puVar9 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)((long)puVar9 + 0x22) = 0;\n    *puVar9 = &PTR_FUN_003f3258;\n    *(undefined2 *)(puVar9 + 4) = 0;\n    puVar9[5] = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    *(undefined4 *)(puVar9 + 0xc) = 0;\n    *(undefined1 *)((long)puVar9 + 0x6f) = 0;\n                    /* try { // try from 0030f870 to 0030f874 has its CatchHandler @ 0030fa01 */\n    FUN_002b55a0(puVar9,param_4 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);\n    lVar8 = *plVar1;\n  }\n  pbVar19 = (byte *)*param_6;\n  if (*pbVar19 == *(byte *)(lVar8 + 100)) {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);\n    if (param_6[1] == 0) goto LAB_0030f298;\n    local_d0 = *(char **)(lVar8 + 0x48);\n    pbVar19 = pbVar19 + 1;\n    local_e8 = *(ulong *)(lVar8 + 0x50);\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);\n    local_d0 = *(char **)(lVar8 + 0x38);\n    local_e8 = *(ulong *)(lVar8 + 0x40);\n  }\n  pbVar16 = pbVar19 + param_6[1];\n  if ((pbVar19 < pbVar16) &&\n     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)) {\n    do {\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);\n    uVar17 = (long)pbVar6 - (long)pbVar19;\njoined_r0x0030f2c6:\n    if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }\n  }\nLAB_0030f298:\n  auVar21._9_7_ = (int7)(param_3 >> 8);\n  auVar21[8] = local_b7;\n  *(undefined8 *)(param_4 + 0x10) = 0;\n  auVar21._0_8_ = param_2;\n  return auVar21;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_0030f1b0(undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,\n            undefined8 *param_6)\n\n{\n  long *plVar1;" (macro_type_specifier "FUN_0030f1b0(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "char" identifier) identifier , (ERROR "undefined8 *param_6)\n\n{\n  long" identifier (pointer_declarator "*param_6" * identifier) ) { long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "char cVar14;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "undefined1 **ppuVar18;" type_identifier (pointer_declarator "**ppuVar18" * (pointer_declarator "*ppuVar18" * identifier)) ;) (declaration "byte *pbVar19;" type_identifier (pointer_declarator "*pbVar19" * identifier) ;) (declaration "ulong uVar20;" type_identifier identifier ;) (declaration "undefined1 auVar21 [16];" type_identifier (array_declarator "auVar21 [16]" identifier [ number_literal ]) ;) (declaration "ulong local_e8;" type_identifier identifier ;) (declaration "char *local_d0;" primitive_type (pointer_declarator "*local_d0" * identifier) ;) (declaration "char local_b7;" primitive_type identifier ;) (declaration "undefined1 local_7c [4];" type_identifier (array_declarator "local_7c [4]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_70;" type_identifier identifier ;) (declaration "undefined1 local_68;" type_identifier identifier ;) (declaration "undefined7 uStack_67;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined1 local_48;" type_identifier identifier ;) (declaration "undefined7 uStack_47;" type_identifier identifier ;) (expression_statement "local_b7 = (char)param_3;" (assignment_expression "local_b7 = (char)param_3" identifier = (cast_expression "(char)param_3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "lVar4 = FUN_002b4380(param_4 + 0xd0);" (assignment_expression "lVar4 = FUN_002b4380(param_4 + 0xd0)" identifier = (call_expression "FUN_002b4380(param_4 + 0xd0)" identifier (argument_list "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) )))) ;) (expression_statement "lVar5 = FUN_002a50c0(&DAT_00405ef0);" (assignment_expression "lVar5 = FUN_002a50c0(&DAT_00405ef0)" identifier = (call_expression "FUN_002a50c0(&DAT_00405ef0)" identifier (argument_list "(&DAT_00405ef0)" ( (pointer_expression "&DAT_00405ef0" & identifier) )))) ;) (expression_statement "plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8);" (assignment_expression "plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8)" ( (binary_expression "*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8" (pointer_expression "*(long *)(*(long *)(param_4 + 0xd0) + 0x18)" * (cast_expression "(long *)(*(long *)(param_4 + 0xd0) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_4 + 0xd0) + 0x18)" ( (binary_expression "*(long *)(param_4 + 0xd0) + 0x18" (pointer_expression "*(long *)(param_4 + 0xd0)" * (cast_expression "(long *)(param_4 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "lVar5 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar8 = *plVar1;" (assignment_expression "lVar8 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (if_statement "if (lVar8 == 0) {\n                    /* try { // try from 0030f7ed to 0030f7f1 has its CatchHandler @ 0030fa03 */\n    puVar9 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)((long)puVar9 + 0x22) = 0;\n    *puVar9 = &PTR_FUN_003f3258;\n    *(undefined2 *)(puVar9 + 4) = 0;\n    puVar9[5] = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    *(undefined4 *)(puVar9 + 0xc) = 0;\n    *(undefined1 *)((long)puVar9 + 0x6f) = 0;\n                    /* try { // try from 0030f870 to 0030f874 has its CatchHandler @ 0030fa01 */\n    FUN_002b55a0(puVar9,param_4 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);\n    lVar8 = *plVar1;\n  }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 0030f7ed to 0030f7f1 has its CatchHandler @ 0030fa03 */\n    puVar9 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)((long)puVar9 + 0x22) = 0;\n    *puVar9 = &PTR_FUN_003f3258;\n    *(undefined2 *)(puVar9 + 4) = 0;\n    puVar9[5] = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    *(undefined4 *)(puVar9 + 0xc) = 0;\n    *(undefined1 *)((long)puVar9 + 0x6f) = 0;\n                    /* try { // try from 0030f870 to 0030f874 has its CatchHandler @ 0030fa01 */\n    FUN_002b55a0(puVar9,param_4 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);\n    lVar8 = *plVar1;\n  }" { comment (expression_statement "puVar9 = (undefined8 *)FUN_002a11b0(0x70);" (assignment_expression "puVar9 = (undefined8 *)FUN_002a11b0(0x70)" identifier = (cast_expression "(undefined8 *)FUN_002a11b0(0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002a11b0(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar9 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 1)" * (cast_expression "(undefined4 *)(puVar9 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 1)" ( (binary_expression "puVar9 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar9[2] = 0;" (assignment_expression "puVar9[2] = 0" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[3] = 0;" (assignment_expression "puVar9[3] = 0" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar9 + 0x22) = 0;" (assignment_expression "*(undefined1 *)((long)puVar9 + 0x22) = 0" (pointer_expression "*(undefined1 *)((long)puVar9 + 0x22)" * (cast_expression "(undefined1 *)((long)puVar9 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 0x22)" ( (binary_expression "(long)puVar9 + 0x22" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar9 = &PTR_FUN_003f3258;" (assignment_expression "*puVar9 = &PTR_FUN_003f3258" (pointer_expression "*puVar9" * identifier) = (pointer_expression "&PTR_FUN_003f3258" & identifier)) ;) (expression_statement "*(undefined2 *)(puVar9 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar9 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar9 + 4)" * (cast_expression "(undefined2 *)(puVar9 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar9[5] = 0;" (assignment_expression "puVar9[5] = 0" (subscript_expression "puVar9[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[6] = 0;" (assignment_expression "puVar9[6] = 0" (subscript_expression "puVar9[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[7] = 0;" (assignment_expression "puVar9[7] = 0" (subscript_expression "puVar9[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[8] = 0;" (assignment_expression "puVar9[8] = 0" (subscript_expression "puVar9[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[9] = 0;" (assignment_expression "puVar9[9] = 0" (subscript_expression "puVar9[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[10] = 0;" (assignment_expression "puVar9[10] = 0" (subscript_expression "puVar9[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[0xb] = 0;" (assignment_expression "puVar9[0xb] = 0" (subscript_expression "puVar9[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar9 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 0xc)" * (cast_expression "(undefined4 *)(puVar9 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0xc)" ( (binary_expression "puVar9 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar9 + 0x6f) = 0;" (assignment_expression "*(undefined1 *)((long)puVar9 + 0x6f) = 0" (pointer_expression "*(undefined1 *)((long)puVar9 + 0x6f)" * (cast_expression "(undefined1 *)((long)puVar9 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 0x6f)" ( (binary_expression "(long)puVar9 + 0x6f" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) comment (expression_statement "FUN_002b55a0(puVar9,param_4 + 0xd0);" (call_expression "FUN_002b55a0(puVar9,param_4 + 0xd0)" identifier (argument_list "(puVar9,param_4 + 0xd0)" ( identifier , (binary_expression "param_4 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);" (call_expression "FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5)" identifier (argument_list "(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5)" ( (pointer_expression "*(undefined8 *)(param_4 + 0xd0)" * (cast_expression "(undefined8 *)(param_4 + 0xd0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "lVar8 = *plVar1;" (assignment_expression "lVar8 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) })) (expression_statement "pbVar19 = (byte *)*param_6;" (assignment_expression "pbVar19 = (byte *)*param_6" identifier = (cast_expression "(byte *)*param_6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_6" * identifier))) ;) (if_statement "if (*pbVar19 == *(byte *)(lVar8 + 100)) {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);\n    if (param_6[1] == 0) goto LAB_0030f298;\n    local_d0 = *(char **)(lVar8 + 0x48);\n    pbVar19 = pbVar19 + 1;\n    local_e8 = *(ulong *)(lVar8 + 0x50);\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);\n    local_d0 = *(char **)(lVar8 + 0x38);\n    local_e8 = *(ulong *)(lVar8 + 0x40);\n  }" if (parenthesized_expression "(*pbVar19 == *(byte *)(lVar8 + 100))" ( (binary_expression "*pbVar19 == *(byte *)(lVar8 + 100)" (pointer_expression "*pbVar19" * identifier) == (pointer_expression "*(byte *)(lVar8 + 100)" * (cast_expression "(byte *)(lVar8 + 100)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 100)" ( (binary_expression "lVar8 + 100" identifier + number_literal) ))))) )) (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);\n    if (param_6[1] == 0) goto LAB_0030f298;\n    local_d0 = *(char **)(lVar8 + 0x48);\n    pbVar19 = pbVar19 + 1;\n    local_e8 = *(ulong *)(lVar8 + 0x50);\n  }" { (expression_statement "local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar8 + 0x60)" identifier = (pointer_expression "*(undefined1 (*) [4])(lVar8 + 0x60)" * (cast_expression "(undefined1 (*) [4])(lVar8 + 0x60)" ( (type_descriptor "undefined1 (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0x60)" ( (binary_expression "lVar8 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (param_6[1] == 0) goto LAB_0030f298;" if (parenthesized_expression "(param_6[1] == 0)" ( (binary_expression "param_6[1] == 0" (subscript_expression "param_6[1]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0030f298;" goto statement_identifier ;)) (expression_statement "local_d0 = *(char **)(lVar8 + 0x48);" (assignment_expression "local_d0 = *(char **)(lVar8 + 0x48)" identifier = (pointer_expression "*(char **)(lVar8 + 0x48)" * (cast_expression "(char **)(lVar8 + 0x48)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x48)" ( (binary_expression "lVar8 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "pbVar19 = pbVar19 + 1;" (assignment_expression "pbVar19 = pbVar19 + 1" identifier = (binary_expression "pbVar19 + 1" identifier + number_literal)) ;) (expression_statement "local_e8 = *(ulong *)(lVar8 + 0x50);" (assignment_expression "local_e8 = *(ulong *)(lVar8 + 0x50)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x50)" * (cast_expression "(ulong *)(lVar8 + 0x50)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x50)" ( (binary_expression "lVar8 + 0x50" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);\n    local_d0 = *(char **)(lVar8 + 0x38);\n    local_e8 = *(ulong *)(lVar8 + 0x40);\n  }" else (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);\n    local_d0 = *(char **)(lVar8 + 0x38);\n    local_e8 = *(ulong *)(lVar8 + 0x40);\n  }" { (expression_statement "local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c)" identifier = (pointer_expression "*(undefined1 (*) [4])(lVar8 + 0x5c)" * (cast_expression "(undefined1 (*) [4])(lVar8 + 0x5c)" ( (type_descriptor "undefined1 (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0x5c)" ( (binary_expression "lVar8 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = *(char **)(lVar8 + 0x38);" (assignment_expression "local_d0 = *(char **)(lVar8 + 0x38)" identifier = (pointer_expression "*(char **)(lVar8 + 0x38)" * (cast_expression "(char **)(lVar8 + 0x38)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x38)" ( (binary_expression "lVar8 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "local_e8 = *(ulong *)(lVar8 + 0x40);" (assignment_expression "local_e8 = *(ulong *)(lVar8 + 0x40)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x40)" * (cast_expression "(ulong *)(lVar8 + 0x40)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x40)" ( (binary_expression "lVar8 + 0x40" identifier + number_literal) ))))) ;) }))) (expression_statement "pbVar16 = pbVar19 + param_6[1];" (assignment_expression "pbVar16 = pbVar19 + param_6[1]" identifier = (binary_expression "pbVar19 + param_6[1]" identifier + (subscript_expression "param_6[1]" identifier [ number_literal ]))) ;) (if_statement "if ((pbVar19 < pbVar16) &&\n     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)) {\n    do {\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);\n    uVar17 = (long)pbVar6 - (long)pbVar19;\njoined_r0x0030f2c6:\n    if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }\n  }" if (parenthesized_expression "((pbVar19 < pbVar16) &&\n     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0))" ( (binary_expression "(pbVar19 < pbVar16) &&\n     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)" (parenthesized_expression "(pbVar19 < pbVar16)" ( (binary_expression "pbVar19 < pbVar16" identifier < identifier) )) && (parenthesized_expression "(pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)" ( (comma_expression "pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0" (assignment_expression "pbVar6 = pbVar19" identifier = identifier) , (binary_expression "(*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0" (parenthesized_expression "(*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8)" ( (binary_expression "*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8" (pointer_expression "*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2)" * (cast_expression "(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2)" ( (binary_expression "*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2" (binary_expression "*(long *)(lVar4 + 0x30) + 1" (pointer_expression "*(long *)(lVar4 + 0x30)" * (cast_expression "(long *)(lVar4 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x30)" ( (binary_expression "lVar4 + 0x30" identifier + number_literal) )))) + number_literal) + (binary_expression "(ulong)*pbVar19 * 2" (binary_expression "(ulong)*pbVar19" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n    do {\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);\n    uVar17 = (long)pbVar6 - (long)pbVar19;\njoined_r0x0030f2c6:\n    if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }\n  }" { (do_statement "do {\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);" do (compound_statement "{\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    }" { (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }" if (parenthesized_expression "(pbVar16 == pbVar6)" ( (binary_expression "pbVar16 == pbVar6" identifier == identifier) )) (compound_statement "{\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }" { (expression_statement "uVar17 = (long)pbVar16 - (long)pbVar19;" (assignment_expression "uVar17 = (long)pbVar16 - (long)pbVar19" identifier = (binary_expression "(long)pbVar16 - (long)pbVar19" (cast_expression "(long)pbVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pbVar19" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (goto_statement "goto joined_r0x0030f2c6;" goto statement_identifier ;) })) }) while (parenthesized_expression "((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0)" ( (binary_expression "(*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0" (parenthesized_expression "(*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8)" ( (binary_expression "*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8" (pointer_expression "*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2)" * (cast_expression "(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2)" ( (binary_expression "*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2" (binary_expression "*(long *)(lVar4 + 0x30) + 1" (pointer_expression "*(long *)(lVar4 + 0x30)" * (cast_expression "(long *)(lVar4 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x30)" ( (binary_expression "lVar4 + 0x30" identifier + number_literal) )))) + number_literal) + (binary_expression "(ulong)*pbVar6 * 2" (binary_expression "(ulong)*pbVar6" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (expression_statement "uVar17 = (long)pbVar6 - (long)pbVar19;" (assignment_expression "uVar17 = (long)pbVar6 - (long)pbVar19" identifier = (binary_expression "(long)pbVar6 - (long)pbVar19" (cast_expression "(long)pbVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pbVar19" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (labeled_statement "joined_r0x0030f2c6:\n    if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }" statement_identifier : (if_statement "if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }" { (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) comment (expression_statement "FUN_002a9b20(&local_78,uVar17 * 2);" (call_expression "FUN_002a9b20(&local_78,uVar17 * 2)" identifier (argument_list "(&local_78,uVar17 * 2)" ( (pointer_expression "&local_78" & identifier) , (binary_expression "uVar17 * 2" identifier * number_literal) ))) ;) (expression_statement "iVar3 = *(int *)(lVar8 + 0x58);" (assignment_expression "iVar3 = *(int *)(lVar8 + 0x58)" identifier = (pointer_expression "*(int *)(lVar8 + 0x58)" * (cast_expression "(int *)(lVar8 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x58)" ( (binary_expression "lVar8 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = uVar17 - (long)iVar3;" (assignment_expression "uVar20 = uVar17 - (long)iVar3" identifier = (binary_expression "uVar17 - (long)iVar3" identifier - (cast_expression "(long)iVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }" if (parenthesized_expression "(0 < (long)uVar20)" ( (binary_expression "0 < (long)uVar20" number_literal < (cast_expression "(long)uVar20" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }" { (if_statement "if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n          uVar20 = uVar17;\n        }" { (expression_statement "uVar20 = uVar17;" (assignment_expression "uVar20 = uVar17" identifier = identifier) ;) })) (if_statement "if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }" if (parenthesized_expression "(*(long *)(lVar8 + 0x18) == 0)" ( (binary_expression "*(long *)(lVar8 + 0x18) == 0" (pointer_expression "*(long *)(lVar8 + 0x18)" * (cast_expression "(long *)(lVar8 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x18)" ( (binary_expression "lVar8 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }" { comment (expression_statement "FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);" (call_expression "FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20)" identifier (argument_list "(&local_78,0,local_70,pbVar19,uVar20)" ( (pointer_expression "&local_78" & identifier) , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "iVar3 = *(int *)(lVar8 + 0x58);" (assignment_expression "iVar3 = *(int *)(lVar8 + 0x58)" identifier = (pointer_expression "*(int *)(lVar8 + 0x58)" * (cast_expression "(int *)(lVar8 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x58)" ( (binary_expression "lVar8 + 0x58" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }" else (compound_statement "{\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }" { (expression_statement "FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);" (call_expression "FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0)" identifier (argument_list "(&local_78,0,local_70,uVar20 * 2,0)" ( (pointer_expression "&local_78" & identifier) , number_literal , identifier , (binary_expression "uVar20 * 2" identifier * number_literal) , number_literal ))) ;) (expression_statement "puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);" (assignment_expression "puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20)" identifier = (cast_expression "(undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20)" identifier (argument_list "(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20)" ( identifier , (cast_expression "(int)*(char *)(lVar8 + 0x22)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(lVar8 + 0x22)" * (cast_expression "(char *)(lVar8 + 0x22)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x22)" ( (binary_expression "lVar8 + 0x22" identifier + number_literal) ))))) , (pointer_expression "*(undefined8 *)(lVar8 + 0x10)" * (cast_expression "(undefined8 *)(lVar8 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x10)" ( (binary_expression "lVar8 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(lVar8 + 0x18)" * (cast_expression "(undefined8 *)(lVar8 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x18)" ( (binary_expression "lVar8 + 0x18" identifier + number_literal) )))) , identifier , (binary_expression "pbVar19 + uVar20" identifier + identifier) ))))) ;) (if_statement "if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }" if (parenthesized_expression "(local_70 < (ulong)((long)puVar7 - (long)local_78))" ( (binary_expression "local_70 < (ulong)((long)puVar7 - (long)local_78)" identifier < (call_expression "(ulong)((long)puVar7 - (long)local_78)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)puVar7 - (long)local_78)" ( (binary_expression "(long)puVar7 - (long)local_78" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_78" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }" { comment comment (expression_statement "FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");" (call_expression "FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase")" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase")" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::erase"" " string_content ") ))) ;) })) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "iVar3 = *(int *)(lVar8 + 0x58);" (assignment_expression "iVar3 = *(int *)(lVar8 + 0x58)" identifier = (pointer_expression "*(int *)(lVar8 + 0x58)" * (cast_expression "(int *)(lVar8 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x58)" ( (binary_expression "lVar8 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "local_70 = (long)puVar7 - (long)local_78;" (assignment_expression "local_70 = (long)puVar7 - (long)local_78" identifier = (binary_expression "(long)puVar7 - (long)local_78" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_78" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) }))) })) (expression_statement "uVar11 = local_70;" (assignment_expression "uVar11 = local_70" identifier = identifier) ;) (if_statement "if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }" if (parenthesized_expression "(0 < iVar3)" ( (binary_expression "0 < iVar3" number_literal < identifier) )) (compound_statement "{\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }" { (expression_statement "uVar2 = *(undefined1 *)(lVar8 + 0x21);" (assignment_expression "uVar2 = *(undefined1 *)(lVar8 + 0x21)" identifier = (pointer_expression "*(undefined1 *)(lVar8 + 0x21)" * (cast_expression "(undefined1 *)(lVar8 + 0x21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x21)" ( (binary_expression "lVar8 + 0x21" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = local_70 + 1;" (assignment_expression "uVar13 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }" if (parenthesized_expression "(local_78 == &local_68)" ( (binary_expression "local_78 == &local_68" identifier == (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n          uVar12 = 0xf;\n        }" { (expression_statement "uVar12 = 0xf;" (assignment_expression "uVar12 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }" else (compound_statement "{\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }" { (expression_statement "uVar12 = CONCAT71(uStack_67,local_68);" (assignment_expression "uVar12 = CONCAT71(uStack_67,local_68)" identifier = (call_expression "CONCAT71(uStack_67,local_68)" identifier (argument_list "(uStack_67,local_68)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar12 < uVar13) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }" if (parenthesized_expression "(uVar12 < uVar13)" ( (binary_expression "uVar12 < uVar13" identifier < identifier) )) (compound_statement "{\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }" { comment (expression_statement "FUN_002a9670(&local_78,local_70,0,0,1);" (call_expression "FUN_002a9670(&local_78,local_70,0,0,1)" identifier (argument_list "(&local_78,local_70,0,0,1)" ( (pointer_expression "&local_78" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "local_78[uVar11] = uVar2;" (assignment_expression "local_78[uVar11] = uVar2" (subscript_expression "local_78[uVar11]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_78[uVar13] = 0;" (assignment_expression "local_78[uVar13] = 0" (subscript_expression "local_78[uVar13]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_70 = uVar13;" (assignment_expression "local_70 = uVar13" identifier = identifier) ;) (if_statement "if ((long)uVar20 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }" if (parenthesized_expression "((long)uVar20 < 0)" ( (binary_expression "(long)uVar20 < 0" (cast_expression "(long)uVar20" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n            FUN_002e12b0("basic_string::append");\n          }\n        }" { comment (expression_statement "FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));" (call_expression "FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65))" identifier (argument_list "(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65))" ( (pointer_expression "&local_78" & identifier) , identifier , number_literal , (unary_expression "-uVar20" - identifier) , (cast_expression "(int)*(char *)(lVar8 + 0x65)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(lVar8 + 0x65)" * (cast_expression "(char *)(lVar8 + 0x65)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x65)" ( (binary_expression "lVar8 + 0x65" identifier + number_literal) ))))) ))) ;) (if_statement "if (0x7fffffffffffffff - local_70 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n            FUN_002e12b0("basic_string::append");\n          }" if (parenthesized_expression "(0x7fffffffffffffff - local_70 < uVar17)" ( (binary_expression "0x7fffffffffffffff - local_70 < uVar17" (binary_expression "0x7fffffffffffffff - local_70" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            FUN_002e12b0("basic_string::append");\n          }" { comment (expression_statement "FUN_002e12b0("basic_string::append");" (call_expression "FUN_002e12b0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) }) (else_clause "else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }" else (compound_statement "{\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }" { (expression_statement "uVar17 = (ulong)*(int *)(lVar8 + 0x58);" (assignment_expression "uVar17 = (ulong)*(int *)(lVar8 + 0x58)" identifier = (binary_expression "(ulong)*(int *)(lVar8 + 0x58)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(int *)(lVar8 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x58)" ( (binary_expression "lVar8 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "pbVar19 = pbVar19 + uVar20;" (assignment_expression "pbVar19 = pbVar19 + uVar20" identifier = (binary_expression "pbVar19 + uVar20" identifier + identifier)) ;) (if_statement "if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }" if (parenthesized_expression "(0x7fffffffffffffff - uVar13 < uVar17)" ( (binary_expression "0x7fffffffffffffff - uVar13 < uVar17" (binary_expression "0x7fffffffffffffff - uVar13" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            FUN_002e12b0("basic_string::append",pbVar19);\n          }" { comment comment (expression_statement "FUN_002e12b0("basic_string::append",pbVar19);" (call_expression "FUN_002e12b0("basic_string::append",pbVar19)" identifier (argument_list "("basic_string::append",pbVar19)" ( (string_literal ""basic_string::append"" " string_content ") , identifier ))) ;) })) }))) comment (expression_statement "FUN_002aac00(&local_78,pbVar19,uVar17);" (call_expression "FUN_002aac00(&local_78,pbVar19,uVar17)" identifier (argument_list "(&local_78,pbVar19,uVar17)" ( (pointer_expression "&local_78" & identifier) , identifier , identifier ))) ;) })) (expression_statement "uVar17 = local_70 + local_e8;" (assignment_expression "uVar17 = local_70 + local_e8" identifier = (binary_expression "local_70 + local_e8" identifier + identifier)) ;) (expression_statement "uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;" (assignment_expression "uVar15 = *(uint *)(param_4 + 0x18) & 0xb0" identifier = (binary_expression "*(uint *)(param_4 + 0x18) & 0xb0" (pointer_expression "*(uint *)(param_4 + 0x18)" * (cast_expression "(uint *)(param_4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x18)" ( (binary_expression "param_4 + 0x18" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }" if (parenthesized_expression "((*(uint *)(param_4 + 0x18) & 0x200) != 0)" ( (binary_expression "(*(uint *)(param_4 + 0x18) & 0x200) != 0" (parenthesized_expression "(*(uint *)(param_4 + 0x18) & 0x200)" ( (binary_expression "*(uint *)(param_4 + 0x18) & 0x200" (pointer_expression "*(uint *)(param_4 + 0x18)" * (cast_expression "(uint *)(param_4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x18)" ( (binary_expression "param_4 + 0x18" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }" { (expression_statement "uVar17 = uVar17 + *(long *)(lVar8 + 0x30);" (assignment_expression "uVar17 = uVar17 + *(long *)(lVar8 + 0x30)" identifier = (binary_expression "uVar17 + *(long *)(lVar8 + 0x30)" identifier + (pointer_expression "*(long *)(lVar8 + 0x30)" * (cast_expression "(long *)(lVar8 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x30)" ( (binary_expression "lVar8 + 0x30" identifier + number_literal) )))))) ;) })) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) comment (expression_statement "FUN_002a9b20(&local_58,uVar17 * 2);" (call_expression "FUN_002a9b20(&local_58,uVar17 * 2)" identifier (argument_list "(&local_58,uVar17 * 2)" ( (pointer_expression "&local_58" & identifier) , (binary_expression "uVar17 * 2" identifier * number_literal) ))) ;) (expression_statement "uVar20 = *(ulong *)(param_4 + 0x10);" (assignment_expression "uVar20 = *(ulong *)(param_4 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_4 + 0x10)" * (cast_expression "(ulong *)(param_4 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x10)" ( (binary_expression "param_4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "ppuVar18 = (undefined1 **)local_7c;" (assignment_expression "ppuVar18 = (undefined1 **)local_7c" identifier = (cast_expression "(undefined1 **)local_7c" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "bVar10 = uVar15 == 0x10 && uVar17 < uVar20;" (assignment_expression "bVar10 = uVar15 == 0x10 && uVar17 < uVar20" identifier = (binary_expression "uVar15 == 0x10 && uVar17 < uVar20" (binary_expression "uVar15 == 0x10" identifier == number_literal) && (binary_expression "uVar17 < uVar20" identifier < identifier))) ;) (do_statement "do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);" do (compound_statement "{\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      }" { (expression_statement "uVar11 = local_50;" (assignment_expression "uVar11 = local_50" identifier = identifier) ;) (switch_statement "switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }" switch (parenthesized_expression "(*(undefined1 *)ppuVar18)" ( (pointer_expression "*(undefined1 *)ppuVar18" * (cast_expression "(undefined1 *)ppuVar18" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }" { (case_statement "case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;" case number_literal : (if_statement "if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }" { (expression_statement "FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);" (call_expression "FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5)" identifier (argument_list "(&local_58,local_50,0,uVar20 - uVar17,(int)param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "uVar20 - uVar17" identifier - identifier) , (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (break_statement "break;" break ;)) (case_statement "case 1:\n          if (bVar10) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;" case number_literal : (if_statement "if (bVar10) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }" { comment (expression_statement "FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);" (call_expression "FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5)" identifier (argument_list "(&local_58,local_50,0,uVar20 - uVar17,(int)param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "uVar20 - uVar17" identifier - identifier) , (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }) (else_clause "else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }" else (compound_statement "{\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }" { (if_statement "if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n              uVar13 = 0xf;\n            }" { (expression_statement "uVar13 = 0xf;" (assignment_expression "uVar13 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" else (compound_statement "{\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" { (expression_statement "uVar13 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar13 = CONCAT71(uStack_47,local_48)" identifier = (call_expression "CONCAT71(uStack_47,local_48)" identifier (argument_list "(uStack_47,local_48)" ( identifier , identifier )))) ;) }))) (expression_statement "cVar14 = param_5;" (assignment_expression "cVar14 = param_5" identifier = identifier) ;) (if_statement "if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }" if (parenthesized_expression "(uVar13 < local_50 + 1)" ( (binary_expression "uVar13 < local_50 + 1" identifier < (binary_expression "local_50 + 1" identifier + number_literal)) )) (compound_statement "{\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }" { comment (expression_statement "FUN_002a9670(&local_58,local_50,0,0,1);" (call_expression "FUN_002a9670(&local_58,local_50,0,0,1)" identifier (argument_list "(&local_58,local_50,0,0,1)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (labeled_statement "LAB_0030f569:\n            local_58[uVar11] = cVar14;" statement_identifier : (expression_statement "local_58[uVar11] = cVar14;" (assignment_expression "local_58[uVar11] = cVar14" (subscript_expression "local_58[uVar11]" identifier [ identifier ]) = identifier) ;)) (expression_statement "local_50 = uVar11 + 1;" (assignment_expression "local_50 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "local_58[uVar11 + 1] = 0;" (assignment_expression "local_58[uVar11 + 1] = 0" (subscript_expression "local_58[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ]) = number_literal) ;) }))) (break_statement "break;" break ;)) (case_statement "case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;" case number_literal : (if_statement "if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }" if (parenthesized_expression "((*(byte *)(param_4 + 0x19) & 2) != 0)" ( (binary_expression "(*(byte *)(param_4 + 0x19) & 2) != 0" (parenthesized_expression "(*(byte *)(param_4 + 0x19) & 2)" ( (binary_expression "*(byte *)(param_4 + 0x19) & 2" (pointer_expression "*(byte *)(param_4 + 0x19)" * (cast_expression "(byte *)(param_4 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x19)" ( (binary_expression "param_4 + 0x19" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }" { (expression_statement "uVar11 = *(ulong *)(lVar8 + 0x30);" (assignment_expression "uVar11 = *(ulong *)(lVar8 + 0x30)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x30)" * (cast_expression "(ulong *)(lVar8 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x30)" ( (binary_expression "lVar8 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar7 = *(undefined1 **)(lVar8 + 0x28);" (assignment_expression "puVar7 = *(undefined1 **)(lVar8 + 0x28)" identifier = (pointer_expression "*(undefined1 **)(lVar8 + 0x28)" * (cast_expression "(undefined1 **)(lVar8 + 0x28)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x28)" ( (binary_expression "lVar8 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (0x7fffffffffffffff - local_50 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }" if (parenthesized_expression "(0x7fffffffffffffff - local_50 < uVar11)" ( (binary_expression "0x7fffffffffffffff - local_50 < uVar11" (binary_expression "0x7fffffffffffffff - local_50" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              FUN_002e12b0("basic_string::append");\n            }" { comment (expression_statement "FUN_002e12b0("basic_string::append");" (call_expression "FUN_002e12b0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (goto_statement "goto LAB_0030f5c8;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;" case number_literal : (if_statement "if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }" if (parenthesized_expression "(local_e8 != 0)" ( (binary_expression "local_e8 != 0" identifier != number_literal) )) (compound_statement "{\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }" { (expression_statement "cVar14 = *local_d0;" (assignment_expression "cVar14 = *local_d0" identifier = (pointer_expression "*local_d0" * identifier)) ;) (if_statement "if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n              uVar13 = 0xf;\n            }" { (expression_statement "uVar13 = 0xf;" (assignment_expression "uVar13 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" else (compound_statement "{\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" { (expression_statement "uVar13 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar13 = CONCAT71(uStack_47,local_48)" identifier = (call_expression "CONCAT71(uStack_47,local_48)" identifier (argument_list "(uStack_47,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar13 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }" if (parenthesized_expression "(uVar13 < local_50 + 1)" ( (binary_expression "uVar13 < local_50 + 1" identifier < (binary_expression "local_50 + 1" identifier + number_literal)) )) (compound_statement "{\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }" { comment (expression_statement "FUN_002a9670(&local_58,local_50,0,0,1);" (call_expression "FUN_002a9670(&local_58,local_50,0,0,1)" identifier (argument_list "(&local_58,local_50,0,0,1)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (goto_statement "goto LAB_0030f569;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);" case number_literal : (expression_statement "uVar11 = local_70;" (assignment_expression "uVar11 = local_70" identifier = identifier) ;) (expression_statement "puVar7 = local_78;" (assignment_expression "puVar7 = local_78" identifier = identifier) ;) (labeled_statement "LAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);" statement_identifier : (expression_statement "FUN_002aac00(&local_58,puVar7,uVar11);" (call_expression "FUN_002aac00(&local_58,puVar7,uVar11)" identifier (argument_list "(&local_58,puVar7,uVar11)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;))) })) (expression_statement "ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);" (assignment_expression "ppuVar18 = (undefined1 **)((long)ppuVar18 + 1)" identifier = (cast_expression "(undefined1 **)((long)ppuVar18 + 1)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)ppuVar18 + 1)" ( (binary_expression "(long)ppuVar18 + 1" (cast_expression "(long)ppuVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(&local_78 != ppuVar18)" ( (binary_expression "&local_78 != ppuVar18" (pointer_expression "&local_78" & identifier) != identifier) )) ;) (if_statement "if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }" if (parenthesized_expression "(1 < local_e8)" ( (binary_expression "1 < local_e8" number_literal < identifier) )) (compound_statement "{\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }" { (if_statement "if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }" if (parenthesized_expression "(0x7fffffffffffffff - local_50 < local_e8 - 1)" ( (binary_expression "0x7fffffffffffffff - local_50 < local_e8 - 1" (binary_expression "0x7fffffffffffffff - local_50" number_literal - identifier) < (binary_expression "local_e8 - 1" identifier - number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }" { comment comment (expression_statement "FUN_002e12b0("basic_string::append",local_d0 + 1);" (call_expression "FUN_002e12b0("basic_string::append",local_d0 + 1)" identifier (argument_list "("basic_string::append",local_d0 + 1)" ( (string_literal ""basic_string::append"" " string_content ") , (binary_expression "local_d0 + 1" identifier + number_literal) ))) ;) })) (expression_statement "FUN_002aac00(&local_58);" (call_expression "FUN_002aac00(&local_58)" identifier (argument_list "(&local_58)" ( (pointer_expression "&local_58" & identifier) ))) ;) })) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (if_statement "if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }" if (parenthesized_expression "(local_50 < uVar20)" ( (binary_expression "local_50 < uVar20" identifier < identifier) )) (compound_statement "{\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }" { (expression_statement "uVar17 = uVar20;" (assignment_expression "uVar17 = uVar20" identifier = identifier) ;) (if_statement "if (uVar15 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }" if (parenthesized_expression "(uVar15 == 0x20)" ( (binary_expression "uVar15 == 0x20" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }" { comment (expression_statement "FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);" (call_expression "FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5)" identifier (argument_list "(&local_58,local_50,0,uVar20 - local_50,(int)param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "uVar20 - local_50" identifier - identifier) , (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }) (else_clause "else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }" else (compound_statement "{\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }" { (expression_statement "FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);" (call_expression "FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5)" identifier (argument_list "(&local_58,0,0,uVar20 - local_50,(int)param_5)" ( (pointer_expression "&local_58" & identifier) , number_literal , number_literal , (binary_expression "uVar20 - local_50" identifier - identifier) , (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }))) })) (if_statement "if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }" if (parenthesized_expression "(local_b7 == '\0')" ( (binary_expression "local_b7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }" { (expression_statement "lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);" (assignment_expression "lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17)" identifier = (call_expression "(**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17)" (parenthesized_expression "(**(code **)(*param_2 + 0x60))" ( (pointer_expression "**(code **)(*param_2 + 0x60)" * (pointer_expression "*(code **)(*param_2 + 0x60)" * (cast_expression "(code **)(*param_2 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x60)" ( (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,local_58,(long)(int)uVar17)" ( identifier , identifier , (cast_expression "(long)(int)uVar17" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_b7 = (int)uVar17 != lVar8;" (assignment_expression "local_b7 = (int)uVar17 != lVar8" identifier = (binary_expression "(int)uVar17 != lVar8" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) != identifier)) ;) })) (expression_statement "param_3 = param_3 & 0xffffffffffffff00;" (assignment_expression "param_3 = param_3 & 0xffffffffffffff00" identifier = (binary_expression "param_3 & 0xffffffffffffff00" identifier & number_literal)) ;) (if_statement "if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }" if (parenthesized_expression "(local_58 != &local_48)" ( (binary_expression "local_58 != &local_48" identifier != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n        FUN_002a2980(local_58);\n      }" { (expression_statement "FUN_002a2980(local_58);" (call_expression "FUN_002a2980(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) })) (if_statement "if (local_78 != &local_68) {\n        FUN_002a2980();\n      }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n        FUN_002a2980();\n      }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) }))) })) (labeled_statement "LAB_0030f298:\n  auVar21._9_7_ = (int7)(param_3 >> 8);" statement_identifier : (expression_statement "auVar21._9_7_ = (int7)(param_3 >> 8);" (assignment_expression "auVar21._9_7_ = (int7)(param_3 >> 8)" (field_expression "auVar21._9_7_" identifier . field_identifier) = (call_expression "(int7)(param_3 >> 8)" (parenthesized_expression "(int7)" ( identifier )) (argument_list "(param_3 >> 8)" ( (binary_expression "param_3 >> 8" identifier >> number_literal) )))) ;)) (expression_statement "auVar21[8] = local_b7;" (assignment_expression "auVar21[8] = local_b7" (subscript_expression "auVar21[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined8 *)(param_4 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(param_4 + 0x10) = 0" (pointer_expression "*(undefined8 *)(param_4 + 0x10)" * (cast_expression "(undefined8 *)(param_4 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x10)" ( (binary_expression "param_4 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "auVar21._0_8_ = param_2;" (assignment_expression "auVar21._0_8_ = param_2" (field_expression "auVar21._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar21;" return identifier ;) (ERROR "}" }))
(translation_unit "/* std::ostreambuf_iterator<char, std::char_traits<char> > std::money_put<char,\n   std::ostreambuf_iterator<char, std::char_traits<char> >\n   >::_M_insert<false>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&,\n   char, std::string const&) const */\n\nundefined1  [16]\nstd::money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>::_M_insert<false>\n          (undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,\n          undefined8 *param_6)\n\n{\n  long *plVar1;\n  int iVar2;\n  ctype *pcVar3;\n  ulong uVar4;\n  byte *pbVar5;\n  char *pcVar6;\n  long lVar7;\n  __moneypunct_cache<char,false> *this;\n  bool bVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  char cVar12;\n  uint uVar13;\n  byte *pbVar14;\n  char **ppcVar15;\n  byte *pbVar16;\n  ulong uVar17;\n  undefined1 auVar18 [16];\n  ulong local_e8;\n  char *local_d0;\n  char local_b7;\n  undefined1 local_7c [4];\n  char *local_78;\n  ulong local_70;\n  char local_68;\n  undefined7 uStack_67;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48;\n  undefined7 uStack_47;\n  \n  local_b7 = (char)param_3;\n  pcVar3 = use_facet<std::ctype<char>>((locale *)(param_4 + 0xd0));\n  uVar4 = locale::id::_M_id((id *)&moneypunct<char,false>::id);\n  plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar4 * 8);\n  lVar7 = *plVar1;\n  if (lVar7 == 0) {\n                    /* try { // try from 0030f7ed to 0030f7f1 has its CatchHandler @ 0030fa03 */\n    this = (__moneypunct_cache<char,false> *)operator_new(0x70);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    this[0x22] = (__moneypunct_cache<char,false>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003f3258;\n    *(undefined2 *)(this + 0x20) = 0;\n    *(undefined8 *)(this + 0x28) = 0;\n    *(undefined8 *)(this + 0x30) = 0;\n    *(undefined8 *)(this + 0x38) = 0;\n    *(undefined8 *)(this + 0x40) = 0;\n    *(undefined8 *)(this + 0x48) = 0;\n    *(undefined8 *)(this + 0x50) = 0;\n    *(undefined8 *)(this + 0x58) = 0;\n    *(undefined4 *)(this + 0x60) = 0;\n    this[0x6f] = (__moneypunct_cache<char,false>)0x0;\n                    /* try { // try from 0030f870 to 0030f874 has its CatchHandler @ 0030fa01 */\n    __moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_4 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar4);\n    lVar7 = *plVar1;\n  }\n  pbVar16 = (byte *)*param_6;\n  if (*pbVar16 == *(byte *)(lVar7 + 100)) {\n    local_7c = *(undefined1 (*) [4])(lVar7 + 0x60);\n    if (param_6[1] == 0) goto LAB_0030f298;\n    local_d0 = *(char **)(lVar7 + 0x48);\n    pbVar16 = pbVar16 + 1;\n    local_e8 = *(ulong *)(lVar7 + 0x50);\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar7 + 0x5c);\n    local_d0 = *(char **)(lVar7 + 0x38);\n    local_e8 = *(ulong *)(lVar7 + 0x40);\n  }\n  pbVar14 = pbVar16 + param_6[1];\n  if ((pbVar16 < pbVar14) &&\n     (pbVar5 = pbVar16, (*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2) & 8) != 0)) {\n    do {\n      pbVar5 = pbVar5 + 1;\n      if (pbVar14 == pbVar5) {\n        uVar4 = (long)pbVar14 - (long)pbVar16;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2) & 8) != 0);\n    uVar4 = (long)pbVar5 - (long)pbVar16;\njoined_r0x0030f2c6:\n    if (uVar4 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = '\0';\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      std::string::reserve((string *)&local_78,uVar4 * 2);\n      iVar2 = *(int *)(lVar7 + 0x58);\n      uVar17 = uVar4 - (long)iVar2;\n      if (0 < (long)uVar17) {\n        if (iVar2 < 0) {\n          uVar17 = uVar4;\n        }\n        if (*(long *)(lVar7 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);\n          iVar2 = *(int *)(lVar7 + 0x58);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');\n          pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));\n          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }\n          *pcVar6 = '\0';\n          iVar2 = *(int *)(lVar7 + 0x58);\n          local_70 = (long)pcVar6 - (long)local_78;\n        }\n      }\n      uVar9 = local_70;\n      if (0 < iVar2) {\n        cVar12 = *(char *)(lVar7 + 0x21);\n        uVar11 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar10 = 0xf;\n        }\n        else {\n          uVar10 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar10 < uVar11) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n        }\n        local_78[uVar9] = cVar12;\n        local_78[uVar11] = '\0';\n        local_70 = uVar11;\n        if ((long)uVar17 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }\n        }\n        else {\n          uVar4 = (ulong)*(int *)(lVar7 + 0x58);\n          pbVar16 = pbVar16 + uVar17;\n          if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        std::string::_M_append((string *)&local_78,(char *)pbVar16,uVar4);\n      }\n      uVar4 = local_70 + local_e8;\n      uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar4 = uVar4 + *(long *)(lVar7 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      std::string::reserve((string *)&local_58,uVar4 * 2);\n      uVar17 = *(ulong *)(param_4 + 0x10);\n      ppcVar15 = (char **)local_7c;\n      bVar8 = uVar13 == 0x10 && uVar4 < uVar17;\n      do {\n        uVar9 = local_50;\n        switch(*(undefined1 *)ppcVar15) {\n        case 0:\n          if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          break;\n        case 1:\n          if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar9 = local_70;\n          pcVar6 = local_78;\nLAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);\n        }\n        ppcVar15 = (char **)((long)ppcVar15 + 1);\n      } while (&local_78 != ppcVar15);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1);\n      }\n      uVar4 = local_50;\n      if (local_50 < uVar17) {\n        uVar4 = uVar17;\n        if (uVar13 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar7 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4);\n        local_b7 = (int)uVar4 != lVar7;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }\n      if (local_78 != &local_68) {\n        operator_delete(local_78);\n      }\n    }\n  }\nLAB_0030f298:\n  auVar18._9_7_ = (int7)(param_3 >> 8);\n  auVar18[8] = local_b7;\n  *(undefined8 *)(param_4 + 0x10) = 0;\n  auVar18._0_8_ = param_2;\n  return auVar18;\n}\n\n" comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (labeled_statement "std::money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>::_M_insert<false>\n          (undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,\n          undefined8 *param_6)" statement_identifier (ERROR "::money_put<char,std::ostreambuf_iterator<char,std:" : : (comma_expression "money_put<char,std" (binary_expression "money_put<char" identifier < identifier) , identifier) : : (comma_expression "ostreambuf_iterator<char,std" (binary_expression "ostreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>::_M_insert<false>\n          (undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,\n          undefined8 *param_6)" (binary_expression "char_traits<char>>>::_M_insert<false>\n          (undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,\n          undefined8 *param_6)" (binary_expression "char_traits<char>>>::_M_insert<false" (binary_expression "char_traits<char>>>::_M_insert" identifier < (binary_expression "char>>>::_M_insert" identifier >> (ERROR ">::" > : :) identifier)) < false) > (parenthesized_expression "(undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,\n          undefined8 *param_6)" ( (comma_expression "undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,\n          undefined8 *param_6" identifier (ERROR "param_1" identifier) , (comma_expression "long *param_2,ulong param_3,long param_4,char param_5,\n          undefined8 *param_6" (binary_expression "long *param_2" identifier * identifier) , (ERROR "ulong" identifier) (comma_expression "param_3,long param_4,char param_5,\n          undefined8 *param_6" identifier , (ERROR "long" identifier) (comma_expression "param_4,char param_5,\n          undefined8 *param_6" identifier , (ERROR "char" identifier) (comma_expression "param_5,\n          undefined8 *param_6" identifier , (binary_expression "undefined8 *param_6" identifier * identifier)))))) ))) ;)) (compound_statement "{\n  long *plVar1;\n  int iVar2;\n  ctype *pcVar3;\n  ulong uVar4;\n  byte *pbVar5;\n  char *pcVar6;\n  long lVar7;\n  __moneypunct_cache<char,false> *this;\n  bool bVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  char cVar12;\n  uint uVar13;\n  byte *pbVar14;\n  char **ppcVar15;\n  byte *pbVar16;\n  ulong uVar17;\n  undefined1 auVar18 [16];\n  ulong local_e8;\n  char *local_d0;\n  char local_b7;\n  undefined1 local_7c [4];\n  char *local_78;\n  ulong local_70;\n  char local_68;\n  undefined7 uStack_67;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48;\n  undefined7 uStack_47;\n  \n  local_b7 = (char)param_3;\n  pcVar3 = use_facet<std::ctype<char>>((locale *)(param_4 + 0xd0));\n  uVar4 = locale::id::_M_id((id *)&moneypunct<char,false>::id);\n  plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar4 * 8);\n  lVar7 = *plVar1;\n  if (lVar7 == 0) {\n                    /* try { // try from 0030f7ed to 0030f7f1 has its CatchHandler @ 0030fa03 */\n    this = (__moneypunct_cache<char,false> *)operator_new(0x70);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    this[0x22] = (__moneypunct_cache<char,false>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003f3258;\n    *(undefined2 *)(this + 0x20) = 0;\n    *(undefined8 *)(this + 0x28) = 0;\n    *(undefined8 *)(this + 0x30) = 0;\n    *(undefined8 *)(this + 0x38) = 0;\n    *(undefined8 *)(this + 0x40) = 0;\n    *(undefined8 *)(this + 0x48) = 0;\n    *(undefined8 *)(this + 0x50) = 0;\n    *(undefined8 *)(this + 0x58) = 0;\n    *(undefined4 *)(this + 0x60) = 0;\n    this[0x6f] = (__moneypunct_cache<char,false>)0x0;\n                    /* try { // try from 0030f870 to 0030f874 has its CatchHandler @ 0030fa01 */\n    __moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_4 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar4);\n    lVar7 = *plVar1;\n  }\n  pbVar16 = (byte *)*param_6;\n  if (*pbVar16 == *(byte *)(lVar7 + 100)) {\n    local_7c = *(undefined1 (*) [4])(lVar7 + 0x60);\n    if (param_6[1] == 0) goto LAB_0030f298;\n    local_d0 = *(char **)(lVar7 + 0x48);\n    pbVar16 = pbVar16 + 1;\n    local_e8 = *(ulong *)(lVar7 + 0x50);\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar7 + 0x5c);\n    local_d0 = *(char **)(lVar7 + 0x38);\n    local_e8 = *(ulong *)(lVar7 + 0x40);\n  }\n  pbVar14 = pbVar16 + param_6[1];\n  if ((pbVar16 < pbVar14) &&\n     (pbVar5 = pbVar16, (*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2) & 8) != 0)) {\n    do {\n      pbVar5 = pbVar5 + 1;\n      if (pbVar14 == pbVar5) {\n        uVar4 = (long)pbVar14 - (long)pbVar16;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2) & 8) != 0);\n    uVar4 = (long)pbVar5 - (long)pbVar16;\njoined_r0x0030f2c6:\n    if (uVar4 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = '\0';\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      std::string::reserve((string *)&local_78,uVar4 * 2);\n      iVar2 = *(int *)(lVar7 + 0x58);\n      uVar17 = uVar4 - (long)iVar2;\n      if (0 < (long)uVar17) {\n        if (iVar2 < 0) {\n          uVar17 = uVar4;\n        }\n        if (*(long *)(lVar7 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);\n          iVar2 = *(int *)(lVar7 + 0x58);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');\n          pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));\n          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }\n          *pcVar6 = '\0';\n          iVar2 = *(int *)(lVar7 + 0x58);\n          local_70 = (long)pcVar6 - (long)local_78;\n        }\n      }\n      uVar9 = local_70;\n      if (0 < iVar2) {\n        cVar12 = *(char *)(lVar7 + 0x21);\n        uVar11 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar10 = 0xf;\n        }\n        else {\n          uVar10 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar10 < uVar11) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n        }\n        local_78[uVar9] = cVar12;\n        local_78[uVar11] = '\0';\n        local_70 = uVar11;\n        if ((long)uVar17 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }\n        }\n        else {\n          uVar4 = (ulong)*(int *)(lVar7 + 0x58);\n          pbVar16 = pbVar16 + uVar17;\n          if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        std::string::_M_append((string *)&local_78,(char *)pbVar16,uVar4);\n      }\n      uVar4 = local_70 + local_e8;\n      uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar4 = uVar4 + *(long *)(lVar7 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      std::string::reserve((string *)&local_58,uVar4 * 2);\n      uVar17 = *(ulong *)(param_4 + 0x10);\n      ppcVar15 = (char **)local_7c;\n      bVar8 = uVar13 == 0x10 && uVar4 < uVar17;\n      do {\n        uVar9 = local_50;\n        switch(*(undefined1 *)ppcVar15) {\n        case 0:\n          if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          break;\n        case 1:\n          if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar9 = local_70;\n          pcVar6 = local_78;\nLAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);\n        }\n        ppcVar15 = (char **)((long)ppcVar15 + 1);\n      } while (&local_78 != ppcVar15);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1);\n      }\n      uVar4 = local_50;\n      if (local_50 < uVar17) {\n        uVar4 = uVar17;\n        if (uVar13 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar7 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4);\n        local_b7 = (int)uVar4 != lVar7;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }\n      if (local_78 != &local_68) {\n        operator_delete(local_78);\n      }\n    }\n  }\nLAB_0030f298:\n  auVar18._9_7_ = (int7)(param_3 >> 8);\n  auVar18[8] = local_b7;\n  *(undefined8 *)(param_4 + 0x10) = 0;\n  auVar18._0_8_ = param_2;\n  return auVar18;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "ctype *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (expression_statement "__moneypunct_cache<char,false> *this;" (comma_expression "__moneypunct_cache<char,false> *this" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false> *this" false > (pointer_expression "*this" * identifier))) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "char cVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "char **ppcVar15;" primitive_type (pointer_declarator "**ppcVar15" * (pointer_declarator "*ppcVar15" * identifier)) ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "undefined1 auVar18 [16];" type_identifier (array_declarator "auVar18 [16]" identifier [ number_literal ]) ;) (declaration "ulong local_e8;" type_identifier identifier ;) (declaration "char *local_d0;" primitive_type (pointer_declarator "*local_d0" * identifier) ;) (declaration "char local_b7;" primitive_type identifier ;) (declaration "undefined1 local_7c [4];" type_identifier (array_declarator "local_7c [4]" identifier [ number_literal ]) ;) (declaration "char *local_78;" primitive_type (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_70;" type_identifier identifier ;) (declaration "char local_68;" primitive_type identifier ;) (declaration "undefined7 uStack_67;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined1 local_48;" type_identifier identifier ;) (declaration "undefined7 uStack_47;" type_identifier identifier ;) (expression_statement "local_b7 = (char)param_3;" (assignment_expression "local_b7 = (char)param_3" identifier = (cast_expression "(char)param_3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar3 = use_facet<std::ctype<char>>((locale *)(param_4 + 0xd0));" (binary_expression "pcVar3 = use_facet<std::ctype<char>>((locale *)(param_4 + 0xd0))" (assignment_expression "pcVar3 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((locale *)(param_4 + 0xd0))" identifier >> (parenthesized_expression "((locale *)(param_4 + 0xd0))" ( (cast_expression "(locale *)(param_4 + 0xd0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) ))) )))) ;) (ERROR "uVar4 = locale::" (assignment_expression "uVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&moneypunct<char,false>::id);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)&moneypunct<char,false>::id);" (call_expression "_M_id((id *)&moneypunct<char,false>::id)" identifier (argument_list "((id *)&moneypunct<char,false>::id)" ( (binary_expression "(id *)&moneypunct<char" (cast_expression "(id *)&moneypunct" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&moneypunct" & identifier)) < identifier) , (binary_expression "false>::id" false > (ERROR "::" : :) identifier) ))) ;)) (expression_statement "plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar4 * 8);" (assignment_expression "plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar4 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar4 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar4 * 8)" ( (binary_expression "*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar4 * 8" (pointer_expression "*(long *)(*(long *)(param_4 + 0xd0) + 0x18)" * (cast_expression "(long *)(*(long *)(param_4 + 0xd0) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_4 + 0xd0) + 0x18)" ( (binary_expression "*(long *)(param_4 + 0xd0) + 0x18" (pointer_expression "*(long *)(param_4 + 0xd0)" * (cast_expression "(long *)(param_4 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "uVar4 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar7 = *plVar1;" (assignment_expression "lVar7 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (if_statement "if (lVar7 == 0) {\n                    /* try { // try from 0030f7ed to 0030f7f1 has its CatchHandler @ 0030fa03 */\n    this = (__moneypunct_cache<char,false> *)operator_new(0x70);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    this[0x22] = (__moneypunct_cache<char,false>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003f3258;\n    *(undefined2 *)(this + 0x20) = 0;\n    *(undefined8 *)(this + 0x28) = 0;\n    *(undefined8 *)(this + 0x30) = 0;\n    *(undefined8 *)(this + 0x38) = 0;\n    *(undefined8 *)(this + 0x40) = 0;\n    *(undefined8 *)(this + 0x48) = 0;\n    *(undefined8 *)(this + 0x50) = 0;\n    *(undefined8 *)(this + 0x58) = 0;\n    *(undefined4 *)(this + 0x60) = 0;\n    this[0x6f] = (__moneypunct_cache<char,false>)0x0;\n                    /* try { // try from 0030f870 to 0030f874 has its CatchHandler @ 0030fa01 */\n    __moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_4 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar4);\n    lVar7 = *plVar1;\n  }" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 0030f7ed to 0030f7f1 has its CatchHandler @ 0030fa03 */\n    this = (__moneypunct_cache<char,false> *)operator_new(0x70);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    this[0x22] = (__moneypunct_cache<char,false>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003f3258;\n    *(undefined2 *)(this + 0x20) = 0;\n    *(undefined8 *)(this + 0x28) = 0;\n    *(undefined8 *)(this + 0x30) = 0;\n    *(undefined8 *)(this + 0x38) = 0;\n    *(undefined8 *)(this + 0x40) = 0;\n    *(undefined8 *)(this + 0x48) = 0;\n    *(undefined8 *)(this + 0x50) = 0;\n    *(undefined8 *)(this + 0x58) = 0;\n    *(undefined4 *)(this + 0x60) = 0;\n    this[0x6f] = (__moneypunct_cache<char,false>)0x0;\n                    /* try { // try from 0030f870 to 0030f874 has its CatchHandler @ 0030fa01 */\n    __moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_4 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar4);\n    lVar7 = *plVar1;\n  }" { comment (expression_statement "this = (__moneypunct_cache<char,false> *)operator_new(0x70);" (assignment_expression "this = (__moneypunct_cache<char,false> *)operator_new(0x70)" identifier = (parenthesized_expression "(__moneypunct_cache<char,false> *)operator_new(0x70)" ( (comma_expression "__moneypunct_cache<char,false> *)operator_new(0x70)" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false> *)operator_new(0x70)" false > (pointer_expression "*)operator_new(0x70)" * (ERROR ")" )) (call_expression "operator_new(0x70)" identifier (argument_list "(0x70)" ( 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 "*(undefined8 *)(this + 0x10) = 0;" (assignment_expression "*(undefined8 *)(this + 0x10) = 0" (pointer_expression "*(undefined8 *)(this + 0x10)" * (cast_expression "(undefined8 *)(this + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x18) = 0;" (assignment_expression "*(undefined8 *)(this + 0x18) = 0" (pointer_expression "*(undefined8 *)(this + 0x18)" * (cast_expression "(undefined8 *)(this + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x22] = (__moneypunct_cache<char,false>)0x0;" (assignment_expression "this[0x22] = (__moneypunct_cache<char,false>)0x0" (subscript_expression "this[0x22]" identifier [ number_literal ]) = (parenthesized_expression "(__moneypunct_cache<char,false>)0x0" ( (comma_expression "__moneypunct_cache<char,false>)0x0" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false>)0x0" false > (ERROR ")" )) number_literal)) ))) ;) (expression_statement "*(undefined ***)this = &PTR____moneypunct_cache_003f3258;" (assignment_expression "*(undefined ***)this = &PTR____moneypunct_cache_003f3258" (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_003f3258" & identifier)) ;) (expression_statement "*(undefined2 *)(this + 0x20) = 0;" (assignment_expression "*(undefined2 *)(this + 0x20) = 0" (pointer_expression "*(undefined2 *)(this + 0x20)" * (cast_expression "(undefined2 *)(this + 0x20)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x20)" ( (binary_expression "this + 0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x28) = 0;" (assignment_expression "*(undefined8 *)(this + 0x28) = 0" (pointer_expression "*(undefined8 *)(this + 0x28)" * (cast_expression "(undefined8 *)(this + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x28)" ( (binary_expression "this + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x30) = 0;" (assignment_expression "*(undefined8 *)(this + 0x30) = 0" (pointer_expression "*(undefined8 *)(this + 0x30)" * (cast_expression "(undefined8 *)(this + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x30)" ( (binary_expression "this + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x38) = 0;" (assignment_expression "*(undefined8 *)(this + 0x38) = 0" (pointer_expression "*(undefined8 *)(this + 0x38)" * (cast_expression "(undefined8 *)(this + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x38)" ( (binary_expression "this + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x40) = 0;" (assignment_expression "*(undefined8 *)(this + 0x40) = 0" (pointer_expression "*(undefined8 *)(this + 0x40)" * (cast_expression "(undefined8 *)(this + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x40)" ( (binary_expression "this + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x48) = 0;" (assignment_expression "*(undefined8 *)(this + 0x48) = 0" (pointer_expression "*(undefined8 *)(this + 0x48)" * (cast_expression "(undefined8 *)(this + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x48)" ( (binary_expression "this + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x50) = 0;" (assignment_expression "*(undefined8 *)(this + 0x50) = 0" (pointer_expression "*(undefined8 *)(this + 0x50)" * (cast_expression "(undefined8 *)(this + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x50)" ( (binary_expression "this + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x58) = 0;" (assignment_expression "*(undefined8 *)(this + 0x58) = 0" (pointer_expression "*(undefined8 *)(this + 0x58)" * (cast_expression "(undefined8 *)(this + 0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x58)" ( (binary_expression "this + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x60) = 0;" (assignment_expression "*(undefined4 *)(this + 0x60) = 0" (pointer_expression "*(undefined4 *)(this + 0x60)" * (cast_expression "(undefined4 *)(this + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x60)" ( (binary_expression "this + 0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x6f] = (__moneypunct_cache<char,false>)0x0;" (assignment_expression "this[0x6f] = (__moneypunct_cache<char,false>)0x0" (subscript_expression "this[0x6f]" identifier [ number_literal ]) = (parenthesized_expression "(__moneypunct_cache<char,false>)0x0" ( (comma_expression "__moneypunct_cache<char,false>)0x0" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false>)0x0" false > (ERROR ")" )) number_literal)) ))) ;) comment (expression_statement "__moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_4 + 0xd0));" (comma_expression "__moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_4 + 0xd0))" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false>::_M_cache(this,(locale *)(param_4 + 0xd0))" false > (ERROR "::" : :) (call_expression "_M_cache(this,(locale *)(param_4 + 0xd0))" identifier (argument_list "(this,(locale *)(param_4 + 0xd0))" ( identifier , (cast_expression "(locale *)(param_4 + 0xd0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) ))) ))))) ;) (labeled_statement "locale::_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar4);" statement_identifier : (ERROR ":" :) (labeled_statement "_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar4);" statement_identifier : (ERROR ":" :) (expression_statement "_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar4);" (call_expression "_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar4)" identifier (argument_list "(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar4)" ( (pointer_expression "*(_Impl **)(param_4 + 0xd0)" * (cast_expression "(_Impl **)(param_4 + 0xd0)" ( (type_descriptor "_Impl **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) )))) , (cast_expression "(facet *)this" ( (type_descriptor "facet *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) (expression_statement "lVar7 = *plVar1;" (assignment_expression "lVar7 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) })) (expression_statement "pbVar16 = (byte *)*param_6;" (assignment_expression "pbVar16 = (byte *)*param_6" identifier = (cast_expression "(byte *)*param_6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_6" * identifier))) ;) (if_statement "if (*pbVar16 == *(byte *)(lVar7 + 100)) {\n    local_7c = *(undefined1 (*) [4])(lVar7 + 0x60);\n    if (param_6[1] == 0) goto LAB_0030f298;\n    local_d0 = *(char **)(lVar7 + 0x48);\n    pbVar16 = pbVar16 + 1;\n    local_e8 = *(ulong *)(lVar7 + 0x50);\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar7 + 0x5c);\n    local_d0 = *(char **)(lVar7 + 0x38);\n    local_e8 = *(ulong *)(lVar7 + 0x40);\n  }" if (parenthesized_expression "(*pbVar16 == *(byte *)(lVar7 + 100))" ( (binary_expression "*pbVar16 == *(byte *)(lVar7 + 100)" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*(byte *)(lVar7 + 100)" * (cast_expression "(byte *)(lVar7 + 100)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 100)" ( (binary_expression "lVar7 + 100" identifier + number_literal) ))))) )) (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar7 + 0x60);\n    if (param_6[1] == 0) goto LAB_0030f298;\n    local_d0 = *(char **)(lVar7 + 0x48);\n    pbVar16 = pbVar16 + 1;\n    local_e8 = *(ulong *)(lVar7 + 0x50);\n  }" { (expression_statement "local_7c = *(undefined1 (*) [4])(lVar7 + 0x60);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar7 + 0x60)" identifier = (pointer_expression "*(undefined1 (*) [4])(lVar7 + 0x60)" * (cast_expression "(undefined1 (*) [4])(lVar7 + 0x60)" ( (type_descriptor "undefined1 (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar7 + 0x60)" ( (binary_expression "lVar7 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (param_6[1] == 0) goto LAB_0030f298;" if (parenthesized_expression "(param_6[1] == 0)" ( (binary_expression "param_6[1] == 0" (subscript_expression "param_6[1]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0030f298;" goto statement_identifier ;)) (expression_statement "local_d0 = *(char **)(lVar7 + 0x48);" (assignment_expression "local_d0 = *(char **)(lVar7 + 0x48)" identifier = (pointer_expression "*(char **)(lVar7 + 0x48)" * (cast_expression "(char **)(lVar7 + 0x48)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar7 + 0x48)" ( (binary_expression "lVar7 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "pbVar16 = pbVar16 + 1;" (assignment_expression "pbVar16 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_e8 = *(ulong *)(lVar7 + 0x50);" (assignment_expression "local_e8 = *(ulong *)(lVar7 + 0x50)" identifier = (pointer_expression "*(ulong *)(lVar7 + 0x50)" * (cast_expression "(ulong *)(lVar7 + 0x50)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x50)" ( (binary_expression "lVar7 + 0x50" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    local_7c = *(undefined1 (*) [4])(lVar7 + 0x5c);\n    local_d0 = *(char **)(lVar7 + 0x38);\n    local_e8 = *(ulong *)(lVar7 + 0x40);\n  }" else (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar7 + 0x5c);\n    local_d0 = *(char **)(lVar7 + 0x38);\n    local_e8 = *(ulong *)(lVar7 + 0x40);\n  }" { (expression_statement "local_7c = *(undefined1 (*) [4])(lVar7 + 0x5c);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar7 + 0x5c)" identifier = (pointer_expression "*(undefined1 (*) [4])(lVar7 + 0x5c)" * (cast_expression "(undefined1 (*) [4])(lVar7 + 0x5c)" ( (type_descriptor "undefined1 (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar7 + 0x5c)" ( (binary_expression "lVar7 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = *(char **)(lVar7 + 0x38);" (assignment_expression "local_d0 = *(char **)(lVar7 + 0x38)" identifier = (pointer_expression "*(char **)(lVar7 + 0x38)" * (cast_expression "(char **)(lVar7 + 0x38)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar7 + 0x38)" ( (binary_expression "lVar7 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "local_e8 = *(ulong *)(lVar7 + 0x40);" (assignment_expression "local_e8 = *(ulong *)(lVar7 + 0x40)" identifier = (pointer_expression "*(ulong *)(lVar7 + 0x40)" * (cast_expression "(ulong *)(lVar7 + 0x40)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x40)" ( (binary_expression "lVar7 + 0x40" identifier + number_literal) ))))) ;) }))) (expression_statement "pbVar14 = pbVar16 + param_6[1];" (assignment_expression "pbVar14 = pbVar16 + param_6[1]" identifier = (binary_expression "pbVar16 + param_6[1]" identifier + (subscript_expression "param_6[1]" identifier [ number_literal ]))) ;) (if_statement "if ((pbVar16 < pbVar14) &&\n     (pbVar5 = pbVar16, (*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2) & 8) != 0)) {\n    do {\n      pbVar5 = pbVar5 + 1;\n      if (pbVar14 == pbVar5) {\n        uVar4 = (long)pbVar14 - (long)pbVar16;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2) & 8) != 0);\n    uVar4 = (long)pbVar5 - (long)pbVar16;\njoined_r0x0030f2c6:\n    if (uVar4 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = '\0';\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      std::string::reserve((string *)&local_78,uVar4 * 2);\n      iVar2 = *(int *)(lVar7 + 0x58);\n      uVar17 = uVar4 - (long)iVar2;\n      if (0 < (long)uVar17) {\n        if (iVar2 < 0) {\n          uVar17 = uVar4;\n        }\n        if (*(long *)(lVar7 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);\n          iVar2 = *(int *)(lVar7 + 0x58);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');\n          pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));\n          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }\n          *pcVar6 = '\0';\n          iVar2 = *(int *)(lVar7 + 0x58);\n          local_70 = (long)pcVar6 - (long)local_78;\n        }\n      }\n      uVar9 = local_70;\n      if (0 < iVar2) {\n        cVar12 = *(char *)(lVar7 + 0x21);\n        uVar11 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar10 = 0xf;\n        }\n        else {\n          uVar10 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar10 < uVar11) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n        }\n        local_78[uVar9] = cVar12;\n        local_78[uVar11] = '\0';\n        local_70 = uVar11;\n        if ((long)uVar17 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }\n        }\n        else {\n          uVar4 = (ulong)*(int *)(lVar7 + 0x58);\n          pbVar16 = pbVar16 + uVar17;\n          if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        std::string::_M_append((string *)&local_78,(char *)pbVar16,uVar4);\n      }\n      uVar4 = local_70 + local_e8;\n      uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar4 = uVar4 + *(long *)(lVar7 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      std::string::reserve((string *)&local_58,uVar4 * 2);\n      uVar17 = *(ulong *)(param_4 + 0x10);\n      ppcVar15 = (char **)local_7c;\n      bVar8 = uVar13 == 0x10 && uVar4 < uVar17;\n      do {\n        uVar9 = local_50;\n        switch(*(undefined1 *)ppcVar15) {\n        case 0:\n          if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          break;\n        case 1:\n          if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar9 = local_70;\n          pcVar6 = local_78;\nLAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);\n        }\n        ppcVar15 = (char **)((long)ppcVar15 + 1);\n      } while (&local_78 != ppcVar15);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1);\n      }\n      uVar4 = local_50;\n      if (local_50 < uVar17) {\n        uVar4 = uVar17;\n        if (uVar13 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar7 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4);\n        local_b7 = (int)uVar4 != lVar7;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }\n      if (local_78 != &local_68) {\n        operator_delete(local_78);\n      }\n    }\n  }" if (parenthesized_expression "((pbVar16 < pbVar14) &&\n     (pbVar5 = pbVar16, (*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2) & 8) != 0))" ( (binary_expression "(pbVar16 < pbVar14) &&\n     (pbVar5 = pbVar16, (*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2) & 8) != 0)" (parenthesized_expression "(pbVar16 < pbVar14)" ( (binary_expression "pbVar16 < pbVar14" identifier < identifier) )) && (parenthesized_expression "(pbVar5 = pbVar16, (*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2) & 8) != 0)" ( (comma_expression "pbVar5 = pbVar16, (*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2) & 8) != 0" (assignment_expression "pbVar5 = pbVar16" identifier = identifier) , (binary_expression "(*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2) & 8) != 0" (parenthesized_expression "(*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2) & 8)" ( (binary_expression "*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2) & 8" (pointer_expression "*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2)" * (cast_expression "(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2)" ( (binary_expression "*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar16 * 2" (binary_expression "*(long *)(pcVar3 + 0x30) + 1" (pointer_expression "*(long *)(pcVar3 + 0x30)" * (cast_expression "(long *)(pcVar3 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar3 + 0x30)" ( (binary_expression "pcVar3 + 0x30" identifier + number_literal) )))) + number_literal) + (binary_expression "(ulong)*pbVar16 * 2" (binary_expression "(ulong)*pbVar16" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n    do {\n      pbVar5 = pbVar5 + 1;\n      if (pbVar14 == pbVar5) {\n        uVar4 = (long)pbVar14 - (long)pbVar16;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2) & 8) != 0);\n    uVar4 = (long)pbVar5 - (long)pbVar16;\njoined_r0x0030f2c6:\n    if (uVar4 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = '\0';\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      std::string::reserve((string *)&local_78,uVar4 * 2);\n      iVar2 = *(int *)(lVar7 + 0x58);\n      uVar17 = uVar4 - (long)iVar2;\n      if (0 < (long)uVar17) {\n        if (iVar2 < 0) {\n          uVar17 = uVar4;\n        }\n        if (*(long *)(lVar7 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);\n          iVar2 = *(int *)(lVar7 + 0x58);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');\n          pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));\n          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }\n          *pcVar6 = '\0';\n          iVar2 = *(int *)(lVar7 + 0x58);\n          local_70 = (long)pcVar6 - (long)local_78;\n        }\n      }\n      uVar9 = local_70;\n      if (0 < iVar2) {\n        cVar12 = *(char *)(lVar7 + 0x21);\n        uVar11 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar10 = 0xf;\n        }\n        else {\n          uVar10 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar10 < uVar11) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n        }\n        local_78[uVar9] = cVar12;\n        local_78[uVar11] = '\0';\n        local_70 = uVar11;\n        if ((long)uVar17 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }\n        }\n        else {\n          uVar4 = (ulong)*(int *)(lVar7 + 0x58);\n          pbVar16 = pbVar16 + uVar17;\n          if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        std::string::_M_append((string *)&local_78,(char *)pbVar16,uVar4);\n      }\n      uVar4 = local_70 + local_e8;\n      uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar4 = uVar4 + *(long *)(lVar7 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      std::string::reserve((string *)&local_58,uVar4 * 2);\n      uVar17 = *(ulong *)(param_4 + 0x10);\n      ppcVar15 = (char **)local_7c;\n      bVar8 = uVar13 == 0x10 && uVar4 < uVar17;\n      do {\n        uVar9 = local_50;\n        switch(*(undefined1 *)ppcVar15) {\n        case 0:\n          if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          break;\n        case 1:\n          if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar9 = local_70;\n          pcVar6 = local_78;\nLAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);\n        }\n        ppcVar15 = (char **)((long)ppcVar15 + 1);\n      } while (&local_78 != ppcVar15);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1);\n      }\n      uVar4 = local_50;\n      if (local_50 < uVar17) {\n        uVar4 = uVar17;\n        if (uVar13 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar7 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4);\n        local_b7 = (int)uVar4 != lVar7;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }\n      if (local_78 != &local_68) {\n        operator_delete(local_78);\n      }\n    }\n  }" { (do_statement "do {\n      pbVar5 = pbVar5 + 1;\n      if (pbVar14 == pbVar5) {\n        uVar4 = (long)pbVar14 - (long)pbVar16;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2) & 8) != 0);" do (compound_statement "{\n      pbVar5 = pbVar5 + 1;\n      if (pbVar14 == pbVar5) {\n        uVar4 = (long)pbVar14 - (long)pbVar16;\n        goto joined_r0x0030f2c6;\n      }\n    }" { (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar14 == pbVar5) {\n        uVar4 = (long)pbVar14 - (long)pbVar16;\n        goto joined_r0x0030f2c6;\n      }" if (parenthesized_expression "(pbVar14 == pbVar5)" ( (binary_expression "pbVar14 == pbVar5" identifier == identifier) )) (compound_statement "{\n        uVar4 = (long)pbVar14 - (long)pbVar16;\n        goto joined_r0x0030f2c6;\n      }" { (expression_statement "uVar4 = (long)pbVar14 - (long)pbVar16;" (assignment_expression "uVar4 = (long)pbVar14 - (long)pbVar16" identifier = (binary_expression "(long)pbVar14 - (long)pbVar16" (cast_expression "(long)pbVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pbVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (goto_statement "goto joined_r0x0030f2c6;" goto statement_identifier ;) })) }) while (parenthesized_expression "((*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2) & 8) != 0)" ( (binary_expression "(*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2) & 8) != 0" (parenthesized_expression "(*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2) & 8)" ( (binary_expression "*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2) & 8" (pointer_expression "*(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2)" * (cast_expression "(byte *)(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2)" ( (binary_expression "*(long *)(pcVar3 + 0x30) + 1 + (ulong)*pbVar5 * 2" (binary_expression "*(long *)(pcVar3 + 0x30) + 1" (pointer_expression "*(long *)(pcVar3 + 0x30)" * (cast_expression "(long *)(pcVar3 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar3 + 0x30)" ( (binary_expression "pcVar3 + 0x30" identifier + number_literal) )))) + number_literal) + (binary_expression "(ulong)*pbVar5 * 2" (binary_expression "(ulong)*pbVar5" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (expression_statement "uVar4 = (long)pbVar5 - (long)pbVar16;" (assignment_expression "uVar4 = (long)pbVar5 - (long)pbVar16" identifier = (binary_expression "(long)pbVar5 - (long)pbVar16" (cast_expression "(long)pbVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pbVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (labeled_statement "joined_r0x0030f2c6:\n    if (uVar4 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = '\0';\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      std::string::reserve((string *)&local_78,uVar4 * 2);\n      iVar2 = *(int *)(lVar7 + 0x58);\n      uVar17 = uVar4 - (long)iVar2;\n      if (0 < (long)uVar17) {\n        if (iVar2 < 0) {\n          uVar17 = uVar4;\n        }\n        if (*(long *)(lVar7 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);\n          iVar2 = *(int *)(lVar7 + 0x58);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');\n          pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));\n          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }\n          *pcVar6 = '\0';\n          iVar2 = *(int *)(lVar7 + 0x58);\n          local_70 = (long)pcVar6 - (long)local_78;\n        }\n      }\n      uVar9 = local_70;\n      if (0 < iVar2) {\n        cVar12 = *(char *)(lVar7 + 0x21);\n        uVar11 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar10 = 0xf;\n        }\n        else {\n          uVar10 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar10 < uVar11) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n        }\n        local_78[uVar9] = cVar12;\n        local_78[uVar11] = '\0';\n        local_70 = uVar11;\n        if ((long)uVar17 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }\n        }\n        else {\n          uVar4 = (ulong)*(int *)(lVar7 + 0x58);\n          pbVar16 = pbVar16 + uVar17;\n          if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        std::string::_M_append((string *)&local_78,(char *)pbVar16,uVar4);\n      }\n      uVar4 = local_70 + local_e8;\n      uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar4 = uVar4 + *(long *)(lVar7 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      std::string::reserve((string *)&local_58,uVar4 * 2);\n      uVar17 = *(ulong *)(param_4 + 0x10);\n      ppcVar15 = (char **)local_7c;\n      bVar8 = uVar13 == 0x10 && uVar4 < uVar17;\n      do {\n        uVar9 = local_50;\n        switch(*(undefined1 *)ppcVar15) {\n        case 0:\n          if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          break;\n        case 1:\n          if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar9 = local_70;\n          pcVar6 = local_78;\nLAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);\n        }\n        ppcVar15 = (char **)((long)ppcVar15 + 1);\n      } while (&local_78 != ppcVar15);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1);\n      }\n      uVar4 = local_50;\n      if (local_50 < uVar17) {\n        uVar4 = uVar17;\n        if (uVar13 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar7 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4);\n        local_b7 = (int)uVar4 != lVar7;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }\n      if (local_78 != &local_68) {\n        operator_delete(local_78);\n      }\n    }" statement_identifier : (if_statement "if (uVar4 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = '\0';\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      std::string::reserve((string *)&local_78,uVar4 * 2);\n      iVar2 = *(int *)(lVar7 + 0x58);\n      uVar17 = uVar4 - (long)iVar2;\n      if (0 < (long)uVar17) {\n        if (iVar2 < 0) {\n          uVar17 = uVar4;\n        }\n        if (*(long *)(lVar7 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);\n          iVar2 = *(int *)(lVar7 + 0x58);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');\n          pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));\n          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }\n          *pcVar6 = '\0';\n          iVar2 = *(int *)(lVar7 + 0x58);\n          local_70 = (long)pcVar6 - (long)local_78;\n        }\n      }\n      uVar9 = local_70;\n      if (0 < iVar2) {\n        cVar12 = *(char *)(lVar7 + 0x21);\n        uVar11 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar10 = 0xf;\n        }\n        else {\n          uVar10 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar10 < uVar11) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n        }\n        local_78[uVar9] = cVar12;\n        local_78[uVar11] = '\0';\n        local_70 = uVar11;\n        if ((long)uVar17 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }\n        }\n        else {\n          uVar4 = (ulong)*(int *)(lVar7 + 0x58);\n          pbVar16 = pbVar16 + uVar17;\n          if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        std::string::_M_append((string *)&local_78,(char *)pbVar16,uVar4);\n      }\n      uVar4 = local_70 + local_e8;\n      uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar4 = uVar4 + *(long *)(lVar7 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      std::string::reserve((string *)&local_58,uVar4 * 2);\n      uVar17 = *(ulong *)(param_4 + 0x10);\n      ppcVar15 = (char **)local_7c;\n      bVar8 = uVar13 == 0x10 && uVar4 < uVar17;\n      do {\n        uVar9 = local_50;\n        switch(*(undefined1 *)ppcVar15) {\n        case 0:\n          if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          break;\n        case 1:\n          if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar9 = local_70;\n          pcVar6 = local_78;\nLAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);\n        }\n        ppcVar15 = (char **)((long)ppcVar15 + 1);\n      } while (&local_78 != ppcVar15);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1);\n      }\n      uVar4 = local_50;\n      if (local_50 < uVar17) {\n        uVar4 = uVar17;\n        if (uVar13 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar7 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4);\n        local_b7 = (int)uVar4 != lVar7;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }\n      if (local_78 != &local_68) {\n        operator_delete(local_78);\n      }\n    }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = '\0';\n                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */\n      std::string::reserve((string *)&local_78,uVar4 * 2);\n      iVar2 = *(int *)(lVar7 + 0x58);\n      uVar17 = uVar4 - (long)iVar2;\n      if (0 < (long)uVar17) {\n        if (iVar2 < 0) {\n          uVar17 = uVar4;\n        }\n        if (*(long *)(lVar7 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);\n          iVar2 = *(int *)(lVar7 + 0x58);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');\n          pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));\n          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }\n          *pcVar6 = '\0';\n          iVar2 = *(int *)(lVar7 + 0x58);\n          local_70 = (long)pcVar6 - (long)local_78;\n        }\n      }\n      uVar9 = local_70;\n      if (0 < iVar2) {\n        cVar12 = *(char *)(lVar7 + 0x21);\n        uVar11 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar10 = 0xf;\n        }\n        else {\n          uVar10 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar10 < uVar11) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n        }\n        local_78[uVar9] = cVar12;\n        local_78[uVar11] = '\0';\n        local_70 = uVar11;\n        if ((long)uVar17 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }\n        }\n        else {\n          uVar4 = (ulong)*(int *)(lVar7 + 0x58);\n          pbVar16 = pbVar16 + uVar17;\n          if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        std::string::_M_append((string *)&local_78,(char *)pbVar16,uVar4);\n      }\n      uVar4 = local_70 + local_e8;\n      uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar4 = uVar4 + *(long *)(lVar7 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */\n      std::string::reserve((string *)&local_58,uVar4 * 2);\n      uVar17 = *(ulong *)(param_4 + 0x10);\n      ppcVar15 = (char **)local_7c;\n      bVar8 = uVar13 == 0x10 && uVar4 < uVar17;\n      do {\n        uVar9 = local_50;\n        switch(*(undefined1 *)ppcVar15) {\n        case 0:\n          if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          break;\n        case 1:\n          if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar9 = local_70;\n          pcVar6 = local_78;\nLAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);\n        }\n        ppcVar15 = (char **)((long)ppcVar15 + 1);\n      } while (&local_78 != ppcVar15);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1);\n      }\n      uVar4 = local_50;\n      if (local_50 < uVar17) {\n        uVar4 = uVar17;\n        if (uVar13 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar7 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4);\n        local_b7 = (int)uVar4 != lVar7;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }\n      if (local_78 != &local_68) {\n        operator_delete(local_78);\n      }\n    }" { (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (expression_statement "local_68 = '\0';" (assignment_expression "local_68 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) comment (labeled_statement "std::string::reserve((string *)&local_78,uVar4 * 2);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((string *)&local_78,uVar4 * 2);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((string *)&local_78,uVar4 * 2);" (call_expression "reserve((string *)&local_78,uVar4 * 2)" identifier (argument_list "((string *)&local_78,uVar4 * 2)" ( (cast_expression "(string *)&local_78" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , (binary_expression "uVar4 * 2" identifier * number_literal) ))) ;))) (expression_statement "iVar2 = *(int *)(lVar7 + 0x58);" (assignment_expression "iVar2 = *(int *)(lVar7 + 0x58)" identifier = (pointer_expression "*(int *)(lVar7 + 0x58)" * (cast_expression "(int *)(lVar7 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x58)" ( (binary_expression "lVar7 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = uVar4 - (long)iVar2;" (assignment_expression "uVar17 = uVar4 - (long)iVar2" identifier = (binary_expression "uVar4 - (long)iVar2" identifier - (cast_expression "(long)iVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0 < (long)uVar17) {\n        if (iVar2 < 0) {\n          uVar17 = uVar4;\n        }\n        if (*(long *)(lVar7 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);\n          iVar2 = *(int *)(lVar7 + 0x58);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');\n          pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));\n          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }\n          *pcVar6 = '\0';\n          iVar2 = *(int *)(lVar7 + 0x58);\n          local_70 = (long)pcVar6 - (long)local_78;\n        }\n      }" if (parenthesized_expression "(0 < (long)uVar17)" ( (binary_expression "0 < (long)uVar17" number_literal < (cast_expression "(long)uVar17" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        if (iVar2 < 0) {\n          uVar17 = uVar4;\n        }\n        if (*(long *)(lVar7 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);\n          iVar2 = *(int *)(lVar7 + 0x58);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');\n          pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));\n          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }\n          *pcVar6 = '\0';\n          iVar2 = *(int *)(lVar7 + 0x58);\n          local_70 = (long)pcVar6 - (long)local_78;\n        }\n      }" { (if_statement "if (iVar2 < 0) {\n          uVar17 = uVar4;\n        }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n          uVar17 = uVar4;\n        }" { (expression_statement "uVar17 = uVar4;" (assignment_expression "uVar17 = uVar4" identifier = identifier) ;) })) (if_statement "if (*(long *)(lVar7 + 0x18) == 0) {\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);\n          iVar2 = *(int *)(lVar7 + 0x58);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');\n          pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));\n          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }\n          *pcVar6 = '\0';\n          iVar2 = *(int *)(lVar7 + 0x58);\n          local_70 = (long)pcVar6 - (long)local_78;\n        }" if (parenthesized_expression "(*(long *)(lVar7 + 0x18) == 0)" ( (binary_expression "*(long *)(lVar7 + 0x18) == 0" (pointer_expression "*(long *)(lVar7 + 0x18)" * (cast_expression "(long *)(lVar7 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x18)" ( (binary_expression "lVar7 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);\n          iVar2 = *(int *)(lVar7 + 0x58);\n        }" { comment (labeled_statement "std::string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17);" (call_expression "_M_replace((string *)&local_78,0,local_70,(char *)pbVar16,uVar17)" identifier (argument_list "((string *)&local_78,0,local_70,(char *)pbVar16,uVar17)" ( (cast_expression "(string *)&local_78" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , number_literal , identifier , (cast_expression "(char *)pbVar16" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) (expression_statement "iVar2 = *(int *)(lVar7 + 0x58);" (assignment_expression "iVar2 = *(int *)(lVar7 + 0x58)" identifier = (pointer_expression "*(int *)(lVar7 + 0x58)" * (cast_expression "(int *)(lVar7 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x58)" ( (binary_expression "lVar7 + 0x58" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');\n          pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));\n          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }\n          *pcVar6 = '\0';\n          iVar2 = *(int *)(lVar7 + 0x58);\n          local_70 = (long)pcVar6 - (long)local_78;\n        }" else (compound_statement "{\n          std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');\n          pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));\n          if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }\n          *pcVar6 = '\0';\n          iVar2 = *(int *)(lVar7 + 0x58);\n          local_70 = (long)pcVar6 - (long)local_78;\n        }" { (labeled_statement "std::string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0');" (call_expression "_M_replace_aux((string *)&local_78,0,local_70,uVar17 * 2,'\0')" identifier (argument_list "((string *)&local_78,0,local_70,uVar17 * 2,'\0')" ( (cast_expression "(string *)&local_78" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , number_literal , identifier , (binary_expression "uVar17 * 2" identifier * number_literal) , (char_literal "'\0'" ' escape_sequence ') ))) ;))) (expression_statement "pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17));" (assignment_expression "pcVar6 = __add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17))" identifier = (binary_expression "__add_grouping<char>\n                             (local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17))" (binary_expression "__add_grouping<char" identifier < identifier) > (parenthesized_expression "(local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17))" ( (comma_expression "local_78,*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17)" identifier , (comma_expression "*(char *)(lVar7 + 0x22),*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17)" (pointer_expression "*(char *)(lVar7 + 0x22)" * (cast_expression "(char *)(lVar7 + 0x22)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x22)" ( (binary_expression "lVar7 + 0x22" identifier + number_literal) )))) , (comma_expression "*(char **)(lVar7 + 0x10),\n                              *(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17)" (pointer_expression "*(char **)(lVar7 + 0x10)" * (cast_expression "(char **)(lVar7 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar7 + 0x10)" ( (binary_expression "lVar7 + 0x10" identifier + number_literal) )))) , (comma_expression "*(ulong *)(lVar7 + 0x18),(char *)pbVar16,(char *)(pbVar16 + uVar17)" (pointer_expression "*(ulong *)(lVar7 + 0x18)" * (cast_expression "(ulong *)(lVar7 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x18)" ( (binary_expression "lVar7 + 0x18" identifier + number_literal) )))) , (comma_expression "(char *)pbVar16,(char *)(pbVar16 + uVar17)" (cast_expression "(char *)pbVar16" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)(pbVar16 + uVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar16 + uVar17)" ( (binary_expression "pbVar16 + uVar17" identifier + identifier) )))))))) )))) ;) (if_statement "if (local_70 < (ulong)((long)pcVar6 - (long)local_78)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }" if (parenthesized_expression "(local_70 < (ulong)((long)pcVar6 - (long)local_78))" ( (binary_expression "local_70 < (ulong)((long)pcVar6 - (long)local_78)" identifier < (call_expression "(ulong)((long)pcVar6 - (long)local_78)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)pcVar6 - (long)local_78)" ( (binary_expression "(long)pcVar6 - (long)local_78" (cast_expression "(long)pcVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_78" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */\n            __throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");\n          }" { comment comment (expression_statement "__throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase");" (call_expression "__throw_out_of_range_fmt\n                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase")" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                       "basic_string::erase")" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::erase"" " string_content ") ))) ;) })) (expression_statement "*pcVar6 = '\0';" (assignment_expression "*pcVar6 = '\0'" (pointer_expression "*pcVar6" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar2 = *(int *)(lVar7 + 0x58);" (assignment_expression "iVar2 = *(int *)(lVar7 + 0x58)" identifier = (pointer_expression "*(int *)(lVar7 + 0x58)" * (cast_expression "(int *)(lVar7 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x58)" ( (binary_expression "lVar7 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "local_70 = (long)pcVar6 - (long)local_78;" (assignment_expression "local_70 = (long)pcVar6 - (long)local_78" identifier = (binary_expression "(long)pcVar6 - (long)local_78" (cast_expression "(long)pcVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_78" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) }))) })) (expression_statement "uVar9 = local_70;" (assignment_expression "uVar9 = local_70" identifier = identifier) ;) (if_statement "if (0 < iVar2) {\n        cVar12 = *(char *)(lVar7 + 0x21);\n        uVar11 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar10 = 0xf;\n        }\n        else {\n          uVar10 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar10 < uVar11) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n        }\n        local_78[uVar9] = cVar12;\n        local_78[uVar11] = '\0';\n        local_70 = uVar11;\n        if ((long)uVar17 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }\n        }\n        else {\n          uVar4 = (ulong)*(int *)(lVar7 + 0x58);\n          pbVar16 = pbVar16 + uVar17;\n          if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        std::string::_M_append((string *)&local_78,(char *)pbVar16,uVar4);\n      }" if (parenthesized_expression "(0 < iVar2)" ( (binary_expression "0 < iVar2" number_literal < identifier) )) (compound_statement "{\n        cVar12 = *(char *)(lVar7 + 0x21);\n        uVar11 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar10 = 0xf;\n        }\n        else {\n          uVar10 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar10 < uVar11) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n        }\n        local_78[uVar9] = cVar12;\n        local_78[uVar11] = '\0';\n        local_70 = uVar11;\n        if ((long)uVar17 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }\n        }\n        else {\n          uVar4 = (ulong)*(int *)(lVar7 + 0x58);\n          pbVar16 = pbVar16 + uVar17;\n          if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }\n        }\n                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */\n        std::string::_M_append((string *)&local_78,(char *)pbVar16,uVar4);\n      }" { (expression_statement "cVar12 = *(char *)(lVar7 + 0x21);" (assignment_expression "cVar12 = *(char *)(lVar7 + 0x21)" identifier = (pointer_expression "*(char *)(lVar7 + 0x21)" * (cast_expression "(char *)(lVar7 + 0x21)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x21)" ( (binary_expression "lVar7 + 0x21" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = local_70 + 1;" (assignment_expression "uVar11 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_78 == &local_68) {\n          uVar10 = 0xf;\n        }\n        else {\n          uVar10 = CONCAT71(uStack_67,local_68);\n        }" if (parenthesized_expression "(local_78 == &local_68)" ( (binary_expression "local_78 == &local_68" identifier == (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n          uVar10 = 0xf;\n        }" { (expression_statement "uVar10 = 0xf;" (assignment_expression "uVar10 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n          uVar10 = CONCAT71(uStack_67,local_68);\n        }" else (compound_statement "{\n          uVar10 = CONCAT71(uStack_67,local_68);\n        }" { (expression_statement "uVar10 = CONCAT71(uStack_67,local_68);" (assignment_expression "uVar10 = CONCAT71(uStack_67,local_68)" identifier = (call_expression "CONCAT71(uStack_67,local_68)" identifier (argument_list "(uStack_67,local_68)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar10 < uVar11) {\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n        }" if (parenthesized_expression "(uVar10 < uVar11)" ( (binary_expression "uVar10 < uVar11" identifier < identifier) )) (compound_statement "{\n                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n        }" { comment (labeled_statement "std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);" (call_expression "_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1)" identifier (argument_list "((string *)&local_78,local_70,0,(char *)0x0,1)" ( (cast_expression "(string *)&local_78" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "local_78[uVar9] = cVar12;" (assignment_expression "local_78[uVar9] = cVar12" (subscript_expression "local_78[uVar9]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_78[uVar11] = '\0';" (assignment_expression "local_78[uVar11] = '\0'" (subscript_expression "local_78[uVar11]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_70 = uVar11;" (assignment_expression "local_70 = uVar11" identifier = identifier) ;) (if_statement "if ((long)uVar17 < 0) {\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }\n        }\n        else {\n          uVar4 = (ulong)*(int *)(lVar7 + 0x58);\n          pbVar16 = pbVar16 + uVar17;\n          if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }\n        }" if (parenthesized_expression "((long)uVar17 < 0)" ( (binary_expression "(long)uVar17 < 0" (cast_expression "(long)uVar17" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */\n          std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }\n        }" { comment (labeled_statement "std::string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65));" (call_expression "_M_replace_aux((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65))" identifier (argument_list "((string *)&local_78,uVar11,0,-uVar17,*(char *)(lVar7 + 0x65))" ( (cast_expression "(string *)&local_78" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , identifier , number_literal , (unary_expression "-uVar17" - identifier) , (pointer_expression "*(char *)(lVar7 + 0x65)" * (cast_expression "(char *)(lVar7 + 0x65)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x65)" ( (binary_expression "lVar7 + 0x65" identifier + number_literal) )))) ))) ;))) (if_statement "if (0x7fffffffffffffff - local_70 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }" if (parenthesized_expression "(0x7fffffffffffffff - local_70 < uVar4)" ( (binary_expression "0x7fffffffffffffff - local_70 < uVar4" (binary_expression "0x7fffffffffffffff - local_70" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __throw_length_error("basic_string::append");\n          }" { 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 ") ))) ;) })) }) (else_clause "else {\n          uVar4 = (ulong)*(int *)(lVar7 + 0x58);\n          pbVar16 = pbVar16 + uVar17;\n          if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }\n        }" else (compound_statement "{\n          uVar4 = (ulong)*(int *)(lVar7 + 0x58);\n          pbVar16 = pbVar16 + uVar17;\n          if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }\n        }" { (expression_statement "uVar4 = (ulong)*(int *)(lVar7 + 0x58);" (assignment_expression "uVar4 = (ulong)*(int *)(lVar7 + 0x58)" identifier = (binary_expression "(ulong)*(int *)(lVar7 + 0x58)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(int *)(lVar7 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x58)" ( (binary_expression "lVar7 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "pbVar16 = pbVar16 + uVar17;" (assignment_expression "pbVar16 = pbVar16 + uVar17" identifier = (binary_expression "pbVar16 + uVar17" identifier + identifier)) ;) (if_statement "if (0x7fffffffffffffff - uVar11 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\n            __throw_length_error("basic_string::append");\n          }" if (parenthesized_expression "(0x7fffffffffffffff - uVar11 < uVar4)" ( (binary_expression "0x7fffffffffffffff - uVar11 < uVar4" (binary_expression "0x7fffffffffffffff - uVar11" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */\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((string *)&local_78,(char *)pbVar16,uVar4);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)&local_78,(char *)pbVar16,uVar4);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&local_78,(char *)pbVar16,uVar4);" (call_expression "_M_append((string *)&local_78,(char *)pbVar16,uVar4)" identifier (argument_list "((string *)&local_78,(char *)pbVar16,uVar4)" ( (cast_expression "(string *)&local_78" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , (cast_expression "(char *)pbVar16" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) })) (expression_statement "uVar4 = local_70 + local_e8;" (assignment_expression "uVar4 = local_70 + local_e8" identifier = (binary_expression "local_70 + local_e8" identifier + identifier)) ;) (expression_statement "uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;" (assignment_expression "uVar13 = *(uint *)(param_4 + 0x18) & 0xb0" identifier = (binary_expression "*(uint *)(param_4 + 0x18) & 0xb0" (pointer_expression "*(uint *)(param_4 + 0x18)" * (cast_expression "(uint *)(param_4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x18)" ( (binary_expression "param_4 + 0x18" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar4 = uVar4 + *(long *)(lVar7 + 0x30);\n      }" if (parenthesized_expression "((*(uint *)(param_4 + 0x18) & 0x200) != 0)" ( (binary_expression "(*(uint *)(param_4 + 0x18) & 0x200) != 0" (parenthesized_expression "(*(uint *)(param_4 + 0x18) & 0x200)" ( (binary_expression "*(uint *)(param_4 + 0x18) & 0x200" (pointer_expression "*(uint *)(param_4 + 0x18)" * (cast_expression "(uint *)(param_4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x18)" ( (binary_expression "param_4 + 0x18" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar4 = uVar4 + *(long *)(lVar7 + 0x30);\n      }" { (expression_statement "uVar4 = uVar4 + *(long *)(lVar7 + 0x30);" (assignment_expression "uVar4 = uVar4 + *(long *)(lVar7 + 0x30)" identifier = (binary_expression "uVar4 + *(long *)(lVar7 + 0x30)" identifier + (pointer_expression "*(long *)(lVar7 + 0x30)" * (cast_expression "(long *)(lVar7 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x30)" ( (binary_expression "lVar7 + 0x30" identifier + number_literal) )))))) ;) })) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) comment (labeled_statement "std::string::reserve((string *)&local_58,uVar4 * 2);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((string *)&local_58,uVar4 * 2);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((string *)&local_58,uVar4 * 2);" (call_expression "reserve((string *)&local_58,uVar4 * 2)" identifier (argument_list "((string *)&local_58,uVar4 * 2)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , (binary_expression "uVar4 * 2" identifier * number_literal) ))) ;))) (expression_statement "uVar17 = *(ulong *)(param_4 + 0x10);" (assignment_expression "uVar17 = *(ulong *)(param_4 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_4 + 0x10)" * (cast_expression "(ulong *)(param_4 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x10)" ( (binary_expression "param_4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "ppcVar15 = (char **)local_7c;" (assignment_expression "ppcVar15 = (char **)local_7c" identifier = (cast_expression "(char **)local_7c" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "bVar8 = uVar13 == 0x10 && uVar4 < uVar17;" (assignment_expression "bVar8 = uVar13 == 0x10 && uVar4 < uVar17" identifier = (binary_expression "uVar13 == 0x10 && uVar4 < uVar17" (binary_expression "uVar13 == 0x10" identifier == number_literal) && (binary_expression "uVar4 < uVar17" identifier < identifier))) ;) (do_statement "do {\n        uVar9 = local_50;\n        switch(*(undefined1 *)ppcVar15) {\n        case 0:\n          if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          break;\n        case 1:\n          if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar9 = local_70;\n          pcVar6 = local_78;\nLAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);\n        }\n        ppcVar15 = (char **)((long)ppcVar15 + 1);\n      } while (&local_78 != ppcVar15);" do (compound_statement "{\n        uVar9 = local_50;\n        switch(*(undefined1 *)ppcVar15) {\n        case 0:\n          if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          break;\n        case 1:\n          if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar9 = local_70;\n          pcVar6 = local_78;\nLAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);\n        }\n        ppcVar15 = (char **)((long)ppcVar15 + 1);\n      }" { (expression_statement "uVar9 = local_50;" (assignment_expression "uVar9 = local_50" identifier = identifier) ;) (switch_statement "switch(*(undefined1 *)ppcVar15) {\n        case 0:\n          if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          break;\n        case 1:\n          if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar9 = local_70;\n          pcVar6 = local_78;\nLAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);\n        }" switch (parenthesized_expression "(*(undefined1 *)ppcVar15)" ( (pointer_expression "*(undefined1 *)ppcVar15" * (cast_expression "(undefined1 *)ppcVar15" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        case 0:\n          if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          break;\n        case 1:\n          if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar9 = local_70;\n          pcVar6 = local_78;\nLAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);\n        }" { (case_statement "case 0:\n          if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          break;" case number_literal : (if_statement "if (bVar8) {\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }" if (parenthesized_expression "(bVar8)" ( identifier )) (compound_statement "{\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }" { (labeled_statement "std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);" (call_expression "_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5)" identifier (argument_list "((string *)&local_58,local_50,0,uVar17 - uVar4,param_5)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , number_literal , (binary_expression "uVar17 - uVar4" identifier - identifier) , identifier ))) ;))) })) (break_statement "break;" break ;)) (case_statement "case 1:\n          if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }\n          break;" case number_literal : (if_statement "if (bVar8) {\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }" if (parenthesized_expression "(bVar8)" ( identifier )) (compound_statement "{\n                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */\n            std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);\n          }" { comment (labeled_statement "std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5);" (call_expression "_M_replace_aux((string *)&local_58,local_50,0,uVar17 - uVar4,param_5)" identifier (argument_list "((string *)&local_58,local_50,0,uVar17 - uVar4,param_5)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , number_literal , (binary_expression "uVar17 - uVar4" identifier - identifier) , identifier ))) ;))) }) (else_clause "else {\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }" else (compound_statement "{\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            cVar12 = param_5;\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\nLAB_0030f569:\n            local_58[uVar9] = cVar12;\n            local_50 = uVar9 + 1;\n            local_58[uVar9 + 1] = 0;\n          }" { (if_statement "if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n              uVar11 = 0xf;\n            }" { (expression_statement "uVar11 = 0xf;" (assignment_expression "uVar11 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }" else (compound_statement "{\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }" { (expression_statement "uVar11 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar11 = CONCAT71(uStack_47,local_48)" identifier = (call_expression "CONCAT71(uStack_47,local_48)" identifier (argument_list "(uStack_47,local_48)" ( identifier , identifier )))) ;) }))) (expression_statement "cVar12 = param_5;" (assignment_expression "cVar12 = param_5" identifier = identifier) ;) (if_statement "if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }" if (parenthesized_expression "(uVar11 < local_50 + 1)" ( (binary_expression "uVar11 < local_50 + 1" identifier < (binary_expression "local_50 + 1" identifier + number_literal)) )) (compound_statement "{\n                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }" { comment (labeled_statement "std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);" (call_expression "_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1)" identifier (argument_list "((string *)&local_58,local_50,0,(char *)0x0,1)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (labeled_statement "LAB_0030f569:\n            local_58[uVar9] = cVar12;" statement_identifier : (expression_statement "local_58[uVar9] = cVar12;" (assignment_expression "local_58[uVar9] = cVar12" (subscript_expression "local_58[uVar9]" identifier [ identifier ]) = identifier) ;)) (expression_statement "local_50 = uVar9 + 1;" (assignment_expression "local_50 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "local_58[uVar9 + 1] = 0;" (assignment_expression "local_58[uVar9 + 1] = 0" (subscript_expression "local_58[uVar9 + 1]" identifier [ (binary_expression "uVar9 + 1" identifier + number_literal) ]) = number_literal) ;) }))) (break_statement "break;" break ;)) (case_statement "case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;" case number_literal : (if_statement "if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }" if (parenthesized_expression "((*(byte *)(param_4 + 0x19) & 2) != 0)" ( (binary_expression "(*(byte *)(param_4 + 0x19) & 2) != 0" (parenthesized_expression "(*(byte *)(param_4 + 0x19) & 2)" ( (binary_expression "*(byte *)(param_4 + 0x19) & 2" (pointer_expression "*(byte *)(param_4 + 0x19)" * (cast_expression "(byte *)(param_4 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x19)" ( (binary_expression "param_4 + 0x19" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar9 = *(ulong *)(lVar7 + 0x30);\n            pcVar6 = *(char **)(lVar7 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }" { (expression_statement "uVar9 = *(ulong *)(lVar7 + 0x30);" (assignment_expression "uVar9 = *(ulong *)(lVar7 + 0x30)" identifier = (pointer_expression "*(ulong *)(lVar7 + 0x30)" * (cast_expression "(ulong *)(lVar7 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x30)" ( (binary_expression "lVar7 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = *(char **)(lVar7 + 0x28);" (assignment_expression "pcVar6 = *(char **)(lVar7 + 0x28)" identifier = (pointer_expression "*(char **)(lVar7 + 0x28)" * (cast_expression "(char **)(lVar7 + 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar7 + 0x28)" ( (binary_expression "lVar7 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (0x7fffffffffffffff - local_50 < uVar9) {\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }" if (parenthesized_expression "(0x7fffffffffffffff - local_50 < uVar9)" ( (binary_expression "0x7fffffffffffffff - local_50 < uVar9" (binary_expression "0x7fffffffffffffff - local_50" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              __throw_length_error("basic_string::append");\n            }" { 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 ") ))) ;) })) (goto_statement "goto LAB_0030f5c8;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n          if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;" case number_literal : (if_statement "if (local_e8 != 0) {\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }" if (parenthesized_expression "(local_e8 != 0)" ( (binary_expression "local_e8 != 0" identifier != number_literal) )) (compound_statement "{\n            cVar12 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }\n            goto LAB_0030f569;\n          }" { (expression_statement "cVar12 = *local_d0;" (assignment_expression "cVar12 = *local_d0" identifier = (pointer_expression "*local_d0" * identifier)) ;) (if_statement "if (local_58 == &local_48) {\n              uVar11 = 0xf;\n            }\n            else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n              uVar11 = 0xf;\n            }" { (expression_statement "uVar11 = 0xf;" (assignment_expression "uVar11 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }" else (compound_statement "{\n              uVar11 = CONCAT71(uStack_47,local_48);\n            }" { (expression_statement "uVar11 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar11 = CONCAT71(uStack_47,local_48)" identifier = (call_expression "CONCAT71(uStack_47,local_48)" identifier (argument_list "(uStack_47,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar11 < local_50 + 1) {\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }" if (parenthesized_expression "(uVar11 < local_50 + 1)" ( (binary_expression "uVar11 < local_50 + 1" identifier < (binary_expression "local_50 + 1" identifier + number_literal)) )) (compound_statement "{\n                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */\n              std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n            }" { comment (labeled_statement "std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);" (call_expression "_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1)" identifier (argument_list "((string *)&local_58,local_50,0,(char *)0x0,1)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (goto_statement "goto LAB_0030f569;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n          uVar9 = local_70;\n          pcVar6 = local_78;\nLAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);" case number_literal : (expression_statement "uVar9 = local_70;" (assignment_expression "uVar9 = local_70" identifier = identifier) ;) (expression_statement "pcVar6 = local_78;" (assignment_expression "pcVar6 = local_78" identifier = identifier) ;) (labeled_statement "LAB_0030f5c8:\n          std::string::_M_append((string *)&local_58,pcVar6,uVar9);" statement_identifier : (labeled_statement "std::string::_M_append((string *)&local_58,pcVar6,uVar9);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)&local_58,pcVar6,uVar9);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&local_58,pcVar6,uVar9);" (call_expression "_M_append((string *)&local_58,pcVar6,uVar9)" identifier (argument_list "((string *)&local_58,pcVar6,uVar9)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , identifier ))) ;))))) })) (expression_statement "ppcVar15 = (char **)((long)ppcVar15 + 1);" (assignment_expression "ppcVar15 = (char **)((long)ppcVar15 + 1)" identifier = (cast_expression "(char **)((long)ppcVar15 + 1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)ppcVar15 + 1)" ( (binary_expression "(long)ppcVar15 + 1" (cast_expression "(long)ppcVar15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(&local_78 != ppcVar15)" ( (binary_expression "&local_78 != ppcVar15" (pointer_expression "&local_78" & identifier) != identifier) )) ;) (if_statement "if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1);\n      }" if (parenthesized_expression "(1 < local_e8)" ( (binary_expression "1 < local_e8" number_literal < identifier) )) (compound_statement "{\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          __throw_length_error("basic_string::append");\n        }\n        std::string::_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1);\n      }" { (if_statement "if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\n          __throw_length_error("basic_string::append");\n        }" if (parenthesized_expression "(0x7fffffffffffffff - local_50 < local_e8 - 1)" ( (binary_expression "0x7fffffffffffffff - local_50 < local_e8 - 1" (binary_expression "0x7fffffffffffffff - local_50" number_literal - identifier) < (binary_expression "local_e8 - 1" identifier - number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */\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_58,local_d0 + 1,local_e8 - 1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1);" (call_expression "_M_append((string *)&local_58,local_d0 + 1,local_e8 - 1)" identifier (argument_list "((string *)&local_58,local_d0 + 1,local_e8 - 1)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , (binary_expression "local_d0 + 1" identifier + number_literal) , (binary_expression "local_e8 - 1" identifier - number_literal) ))) ;))) })) (expression_statement "uVar4 = local_50;" (assignment_expression "uVar4 = local_50" identifier = identifier) ;) (if_statement "if (local_50 < uVar17) {\n        uVar4 = uVar17;\n        if (uVar13 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);\n        }\n      }" if (parenthesized_expression "(local_50 < uVar17)" ( (binary_expression "local_50 < uVar17" identifier < identifier) )) (compound_statement "{\n        uVar4 = uVar17;\n        if (uVar13 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);\n        }\n      }" { (expression_statement "uVar4 = uVar17;" (assignment_expression "uVar4 = uVar17" identifier = identifier) ;) (if_statement "if (uVar13 == 0x20) {\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);\n        }\n        else {\n          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);\n        }" if (parenthesized_expression "(uVar13 == 0x20)" ( (binary_expression "uVar13 == 0x20" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */\n          std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);\n        }" { comment (labeled_statement "std::string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5);" (call_expression "_M_replace_aux((string *)&local_58,local_50,0,uVar17 - local_50,param_5)" identifier (argument_list "((string *)&local_58,local_50,0,uVar17 - local_50,param_5)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , number_literal , (binary_expression "uVar17 - local_50" identifier - identifier) , identifier ))) ;))) }) (else_clause "else {\n          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);\n        }" else (compound_statement "{\n          std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);\n        }" { (labeled_statement "std::string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5);" (call_expression "_M_replace_aux((string *)&local_58,0,0,uVar17 - local_50,param_5)" identifier (argument_list "((string *)&local_58,0,0,uVar17 - local_50,param_5)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , number_literal , number_literal , (binary_expression "uVar17 - local_50" identifier - identifier) , identifier ))) ;))) }))) })) (if_statement "if (local_b7 == '\0') {\n        lVar7 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4);\n        local_b7 = (int)uVar4 != lVar7;\n      }" if (parenthesized_expression "(local_b7 == '\0')" ( (binary_expression "local_b7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        lVar7 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4);\n        local_b7 = (int)uVar4 != lVar7;\n      }" { (expression_statement "lVar7 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4);" (assignment_expression "lVar7 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4)" identifier = (call_expression "(**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar4)" (parenthesized_expression "(**(code **)(*param_2 + 0x60))" ( (pointer_expression "**(code **)(*param_2 + 0x60)" * (pointer_expression "*(code **)(*param_2 + 0x60)" * (cast_expression "(code **)(*param_2 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x60)" ( (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,local_58,(long)(int)uVar4)" ( identifier , identifier , (cast_expression "(long)(int)uVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_b7 = (int)uVar4 != lVar7;" (assignment_expression "local_b7 = (int)uVar4 != lVar7" identifier = (binary_expression "(int)uVar4 != lVar7" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) != identifier)) ;) })) (expression_statement "param_3 = param_3 & 0xffffffffffffff00;" (assignment_expression "param_3 = param_3 & 0xffffffffffffff00" identifier = (binary_expression "param_3 & 0xffffffffffffff00" identifier & number_literal)) ;) (if_statement "if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }" if (parenthesized_expression "(local_58 != &local_48)" ( (binary_expression "local_58 != &local_48" identifier != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n        operator_delete(local_58);\n      }" { (expression_statement "operator_delete(local_58);" (call_expression "operator_delete(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) })) (if_statement "if (local_78 != &local_68) {\n        operator_delete(local_78);\n      }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n        operator_delete(local_78);\n      }" { (expression_statement "operator_delete(local_78);" (call_expression "operator_delete(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) })) }))) })) (labeled_statement "LAB_0030f298:\n  auVar18._9_7_ = (int7)(param_3 >> 8);" statement_identifier : (expression_statement "auVar18._9_7_ = (int7)(param_3 >> 8);" (assignment_expression "auVar18._9_7_ = (int7)(param_3 >> 8)" (field_expression "auVar18._9_7_" identifier . field_identifier) = (call_expression "(int7)(param_3 >> 8)" (parenthesized_expression "(int7)" ( identifier )) (argument_list "(param_3 >> 8)" ( (binary_expression "param_3 >> 8" identifier >> number_literal) )))) ;)) (expression_statement "auVar18[8] = local_b7;" (assignment_expression "auVar18[8] = local_b7" (subscript_expression "auVar18[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined8 *)(param_4 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(param_4 + 0x10) = 0" (pointer_expression "*(undefined8 *)(param_4 + 0x10)" * (cast_expression "(undefined8 *)(param_4 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x10)" ( (binary_expression "param_4 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "auVar18._0_8_ = param_2;" (assignment_expression "auVar18._0_8_ = param_2" (field_expression "auVar18._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar18;" return identifier ;) }))
(translation_unit "undefined1  [16]\nFUN_0030f1b0(undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,\n            undefined8 *param_6)\n\n{\n  long *plVar1;\n  undefined1 uVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  byte *pbVar6;\n  undefined1 *puVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  bool bVar10;\n  ulong uVar11;\n  ulong uVar12;\n  ulong uVar13;\n  char cVar14;\n  uint uVar15;\n  byte *pbVar16;\n  ulong uVar17;\n  undefined1 **ppuVar18;\n  byte *pbVar19;\n  ulong uVar20;\n  undefined1 auVar21 [16];\n  ulong local_e8;\n  char *local_d0;\n  char local_b7;\n  undefined1 local_7c [4];\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68;\n  undefined7 uStack_67;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48;\n  undefined7 uStack_47;\n  \n  local_b7 = (char)param_3;\n  lVar4 = FUN_002b4380(param_4 + 0xd0);\n  lVar5 = FUN_002a50c0(&DAT_00405ef0);\n  plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8);\n  lVar8 = *plVar1;\n  if (lVar8 == 0) {\n                    \n    puVar9 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)((long)puVar9 + 0x22) = 0;\n    *puVar9 = &PTR_FUN_003f3258;\n    *(undefined2 *)(puVar9 + 4) = 0;\n    puVar9[5] = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    *(undefined4 *)(puVar9 + 0xc) = 0;\n    *(undefined1 *)((long)puVar9 + 0x6f) = 0;\n                    \n    FUN_002b55a0(puVar9,param_4 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);\n    lVar8 = *plVar1;\n  }\n  pbVar19 = (byte *)*param_6;\n  if (*pbVar19 == *(byte *)(lVar8 + 100)) {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);\n    if (param_6[1] == 0) goto LAB_0030f298;\n    local_d0 = *(char **)(lVar8 + 0x48);\n    pbVar19 = pbVar19 + 1;\n    local_e8 = *(ulong *)(lVar8 + 0x50);\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);\n    local_d0 = *(char **)(lVar8 + 0x38);\n    local_e8 = *(ulong *)(lVar8 + 0x40);\n  }\n  pbVar16 = pbVar19 + param_6[1];\n  if ((pbVar19 < pbVar16) &&\n     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)) {\n    do {\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);\n    uVar17 = (long)pbVar6 - (long)pbVar19;\njoined_r0x0030f2c6:\n    if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    \n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    \n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }\n  }\nLAB_0030f298:\n  auVar21._9_7_ = (int7)(param_3 >> 8);\n  auVar21[8] = local_b7;\n  *(undefined8 *)(param_4 + 0x10) = 0;\n  auVar21._0_8_ = param_2;\n  return auVar21;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_0030f1b0(undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,\n            undefined8 *param_6)\n\n{\n  long *plVar1;" (macro_type_specifier "FUN_0030f1b0(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "char" identifier) identifier , (ERROR "undefined8 *param_6)\n\n{\n  long" identifier (pointer_declarator "*param_6" * identifier) ) { long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "char cVar14;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "undefined1 **ppuVar18;" type_identifier (pointer_declarator "**ppuVar18" * (pointer_declarator "*ppuVar18" * identifier)) ;) (declaration "byte *pbVar19;" type_identifier (pointer_declarator "*pbVar19" * identifier) ;) (declaration "ulong uVar20;" type_identifier identifier ;) (declaration "undefined1 auVar21 [16];" type_identifier (array_declarator "auVar21 [16]" identifier [ number_literal ]) ;) (declaration "ulong local_e8;" type_identifier identifier ;) (declaration "char *local_d0;" primitive_type (pointer_declarator "*local_d0" * identifier) ;) (declaration "char local_b7;" primitive_type identifier ;) (declaration "undefined1 local_7c [4];" type_identifier (array_declarator "local_7c [4]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_70;" type_identifier identifier ;) (declaration "undefined1 local_68;" type_identifier identifier ;) (declaration "undefined7 uStack_67;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined1 local_48;" type_identifier identifier ;) (declaration "undefined7 uStack_47;" type_identifier identifier ;) (expression_statement "local_b7 = (char)param_3;" (assignment_expression "local_b7 = (char)param_3" identifier = (cast_expression "(char)param_3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "lVar4 = FUN_002b4380(param_4 + 0xd0);" (assignment_expression "lVar4 = FUN_002b4380(param_4 + 0xd0)" identifier = (call_expression "FUN_002b4380(param_4 + 0xd0)" identifier (argument_list "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) )))) ;) (expression_statement "lVar5 = FUN_002a50c0(&DAT_00405ef0);" (assignment_expression "lVar5 = FUN_002a50c0(&DAT_00405ef0)" identifier = (call_expression "FUN_002a50c0(&DAT_00405ef0)" identifier (argument_list "(&DAT_00405ef0)" ( (pointer_expression "&DAT_00405ef0" & identifier) )))) ;) (expression_statement "plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8);" (assignment_expression "plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8)" ( (binary_expression "*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8" (pointer_expression "*(long *)(*(long *)(param_4 + 0xd0) + 0x18)" * (cast_expression "(long *)(*(long *)(param_4 + 0xd0) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_4 + 0xd0) + 0x18)" ( (binary_expression "*(long *)(param_4 + 0xd0) + 0x18" (pointer_expression "*(long *)(param_4 + 0xd0)" * (cast_expression "(long *)(param_4 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "lVar5 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar8 = *plVar1;" (assignment_expression "lVar8 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (if_statement "if (lVar8 == 0) {\n                    \n    puVar9 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)((long)puVar9 + 0x22) = 0;\n    *puVar9 = &PTR_FUN_003f3258;\n    *(undefined2 *)(puVar9 + 4) = 0;\n    puVar9[5] = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    *(undefined4 *)(puVar9 + 0xc) = 0;\n    *(undefined1 *)((long)puVar9 + 0x6f) = 0;\n                    \n    FUN_002b55a0(puVar9,param_4 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);\n    lVar8 = *plVar1;\n  }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    puVar9 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)((long)puVar9 + 0x22) = 0;\n    *puVar9 = &PTR_FUN_003f3258;\n    *(undefined2 *)(puVar9 + 4) = 0;\n    puVar9[5] = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    *(undefined4 *)(puVar9 + 0xc) = 0;\n    *(undefined1 *)((long)puVar9 + 0x6f) = 0;\n                    \n    FUN_002b55a0(puVar9,param_4 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);\n    lVar8 = *plVar1;\n  }" { (expression_statement "puVar9 = (undefined8 *)FUN_002a11b0(0x70);" (assignment_expression "puVar9 = (undefined8 *)FUN_002a11b0(0x70)" identifier = (cast_expression "(undefined8 *)FUN_002a11b0(0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002a11b0(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar9 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 1)" * (cast_expression "(undefined4 *)(puVar9 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 1)" ( (binary_expression "puVar9 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar9[2] = 0;" (assignment_expression "puVar9[2] = 0" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[3] = 0;" (assignment_expression "puVar9[3] = 0" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar9 + 0x22) = 0;" (assignment_expression "*(undefined1 *)((long)puVar9 + 0x22) = 0" (pointer_expression "*(undefined1 *)((long)puVar9 + 0x22)" * (cast_expression "(undefined1 *)((long)puVar9 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 0x22)" ( (binary_expression "(long)puVar9 + 0x22" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar9 = &PTR_FUN_003f3258;" (assignment_expression "*puVar9 = &PTR_FUN_003f3258" (pointer_expression "*puVar9" * identifier) = (pointer_expression "&PTR_FUN_003f3258" & identifier)) ;) (expression_statement "*(undefined2 *)(puVar9 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar9 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar9 + 4)" * (cast_expression "(undefined2 *)(puVar9 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar9[5] = 0;" (assignment_expression "puVar9[5] = 0" (subscript_expression "puVar9[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[6] = 0;" (assignment_expression "puVar9[6] = 0" (subscript_expression "puVar9[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[7] = 0;" (assignment_expression "puVar9[7] = 0" (subscript_expression "puVar9[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[8] = 0;" (assignment_expression "puVar9[8] = 0" (subscript_expression "puVar9[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[9] = 0;" (assignment_expression "puVar9[9] = 0" (subscript_expression "puVar9[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[10] = 0;" (assignment_expression "puVar9[10] = 0" (subscript_expression "puVar9[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[0xb] = 0;" (assignment_expression "puVar9[0xb] = 0" (subscript_expression "puVar9[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar9 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 0xc)" * (cast_expression "(undefined4 *)(puVar9 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0xc)" ( (binary_expression "puVar9 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar9 + 0x6f) = 0;" (assignment_expression "*(undefined1 *)((long)puVar9 + 0x6f) = 0" (pointer_expression "*(undefined1 *)((long)puVar9 + 0x6f)" * (cast_expression "(undefined1 *)((long)puVar9 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 0x6f)" ( (binary_expression "(long)puVar9 + 0x6f" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002b55a0(puVar9,param_4 + 0xd0);" (call_expression "FUN_002b55a0(puVar9,param_4 + 0xd0)" identifier (argument_list "(puVar9,param_4 + 0xd0)" ( identifier , (binary_expression "param_4 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);" (call_expression "FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5)" identifier (argument_list "(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5)" ( (pointer_expression "*(undefined8 *)(param_4 + 0xd0)" * (cast_expression "(undefined8 *)(param_4 + 0xd0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "lVar8 = *plVar1;" (assignment_expression "lVar8 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) })) (expression_statement "pbVar19 = (byte *)*param_6;" (assignment_expression "pbVar19 = (byte *)*param_6" identifier = (cast_expression "(byte *)*param_6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_6" * identifier))) ;) (if_statement "if (*pbVar19 == *(byte *)(lVar8 + 100)) {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);\n    if (param_6[1] == 0) goto LAB_0030f298;\n    local_d0 = *(char **)(lVar8 + 0x48);\n    pbVar19 = pbVar19 + 1;\n    local_e8 = *(ulong *)(lVar8 + 0x50);\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);\n    local_d0 = *(char **)(lVar8 + 0x38);\n    local_e8 = *(ulong *)(lVar8 + 0x40);\n  }" if (parenthesized_expression "(*pbVar19 == *(byte *)(lVar8 + 100))" ( (binary_expression "*pbVar19 == *(byte *)(lVar8 + 100)" (pointer_expression "*pbVar19" * identifier) == (pointer_expression "*(byte *)(lVar8 + 100)" * (cast_expression "(byte *)(lVar8 + 100)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 100)" ( (binary_expression "lVar8 + 100" identifier + number_literal) ))))) )) (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);\n    if (param_6[1] == 0) goto LAB_0030f298;\n    local_d0 = *(char **)(lVar8 + 0x48);\n    pbVar19 = pbVar19 + 1;\n    local_e8 = *(ulong *)(lVar8 + 0x50);\n  }" { (expression_statement "local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar8 + 0x60)" identifier = (pointer_expression "*(undefined1 (*) [4])(lVar8 + 0x60)" * (cast_expression "(undefined1 (*) [4])(lVar8 + 0x60)" ( (type_descriptor "undefined1 (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0x60)" ( (binary_expression "lVar8 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (param_6[1] == 0) goto LAB_0030f298;" if (parenthesized_expression "(param_6[1] == 0)" ( (binary_expression "param_6[1] == 0" (subscript_expression "param_6[1]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0030f298;" goto statement_identifier ;)) (expression_statement "local_d0 = *(char **)(lVar8 + 0x48);" (assignment_expression "local_d0 = *(char **)(lVar8 + 0x48)" identifier = (pointer_expression "*(char **)(lVar8 + 0x48)" * (cast_expression "(char **)(lVar8 + 0x48)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x48)" ( (binary_expression "lVar8 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "pbVar19 = pbVar19 + 1;" (assignment_expression "pbVar19 = pbVar19 + 1" identifier = (binary_expression "pbVar19 + 1" identifier + number_literal)) ;) (expression_statement "local_e8 = *(ulong *)(lVar8 + 0x50);" (assignment_expression "local_e8 = *(ulong *)(lVar8 + 0x50)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x50)" * (cast_expression "(ulong *)(lVar8 + 0x50)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x50)" ( (binary_expression "lVar8 + 0x50" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);\n    local_d0 = *(char **)(lVar8 + 0x38);\n    local_e8 = *(ulong *)(lVar8 + 0x40);\n  }" else (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);\n    local_d0 = *(char **)(lVar8 + 0x38);\n    local_e8 = *(ulong *)(lVar8 + 0x40);\n  }" { (expression_statement "local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c)" identifier = (pointer_expression "*(undefined1 (*) [4])(lVar8 + 0x5c)" * (cast_expression "(undefined1 (*) [4])(lVar8 + 0x5c)" ( (type_descriptor "undefined1 (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0x5c)" ( (binary_expression "lVar8 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = *(char **)(lVar8 + 0x38);" (assignment_expression "local_d0 = *(char **)(lVar8 + 0x38)" identifier = (pointer_expression "*(char **)(lVar8 + 0x38)" * (cast_expression "(char **)(lVar8 + 0x38)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x38)" ( (binary_expression "lVar8 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "local_e8 = *(ulong *)(lVar8 + 0x40);" (assignment_expression "local_e8 = *(ulong *)(lVar8 + 0x40)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x40)" * (cast_expression "(ulong *)(lVar8 + 0x40)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x40)" ( (binary_expression "lVar8 + 0x40" identifier + number_literal) ))))) ;) }))) (expression_statement "pbVar16 = pbVar19 + param_6[1];" (assignment_expression "pbVar16 = pbVar19 + param_6[1]" identifier = (binary_expression "pbVar19 + param_6[1]" identifier + (subscript_expression "param_6[1]" identifier [ number_literal ]))) ;) (if_statement "if ((pbVar19 < pbVar16) &&\n     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)) {\n    do {\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);\n    uVar17 = (long)pbVar6 - (long)pbVar19;\njoined_r0x0030f2c6:\n    if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    \n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    \n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }\n  }" if (parenthesized_expression "((pbVar19 < pbVar16) &&\n     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0))" ( (binary_expression "(pbVar19 < pbVar16) &&\n     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)" (parenthesized_expression "(pbVar19 < pbVar16)" ( (binary_expression "pbVar19 < pbVar16" identifier < identifier) )) && (parenthesized_expression "(pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)" ( (comma_expression "pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0" (assignment_expression "pbVar6 = pbVar19" identifier = identifier) , (binary_expression "(*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0" (parenthesized_expression "(*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8)" ( (binary_expression "*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8" (pointer_expression "*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2)" * (cast_expression "(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2)" ( (binary_expression "*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2" (binary_expression "*(long *)(lVar4 + 0x30) + 1" (pointer_expression "*(long *)(lVar4 + 0x30)" * (cast_expression "(long *)(lVar4 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x30)" ( (binary_expression "lVar4 + 0x30" identifier + number_literal) )))) + number_literal) + (binary_expression "(ulong)*pbVar19 * 2" (binary_expression "(ulong)*pbVar19" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n    do {\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);\n    uVar17 = (long)pbVar6 - (long)pbVar19;\njoined_r0x0030f2c6:\n    if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    \n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    \n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }\n  }" { (do_statement "do {\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);" do (compound_statement "{\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    }" { (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }" if (parenthesized_expression "(pbVar16 == pbVar6)" ( (binary_expression "pbVar16 == pbVar6" identifier == identifier) )) (compound_statement "{\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }" { (expression_statement "uVar17 = (long)pbVar16 - (long)pbVar19;" (assignment_expression "uVar17 = (long)pbVar16 - (long)pbVar19" identifier = (binary_expression "(long)pbVar16 - (long)pbVar19" (cast_expression "(long)pbVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pbVar19" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (goto_statement "goto joined_r0x0030f2c6;" goto statement_identifier ;) })) }) while (parenthesized_expression "((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0)" ( (binary_expression "(*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0" (parenthesized_expression "(*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8)" ( (binary_expression "*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8" (pointer_expression "*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2)" * (cast_expression "(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2)" ( (binary_expression "*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2" (binary_expression "*(long *)(lVar4 + 0x30) + 1" (pointer_expression "*(long *)(lVar4 + 0x30)" * (cast_expression "(long *)(lVar4 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x30)" ( (binary_expression "lVar4 + 0x30" identifier + number_literal) )))) + number_literal) + (binary_expression "(ulong)*pbVar6 * 2" (binary_expression "(ulong)*pbVar6" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (expression_statement "uVar17 = (long)pbVar6 - (long)pbVar19;" (assignment_expression "uVar17 = (long)pbVar6 - (long)pbVar19" identifier = (binary_expression "(long)pbVar6 - (long)pbVar19" (cast_expression "(long)pbVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pbVar19" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (labeled_statement "joined_r0x0030f2c6:\n    if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    \n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    \n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }" statement_identifier : (if_statement "if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    \n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    \n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    \n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    \n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }" { (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "FUN_002a9b20(&local_78,uVar17 * 2);" (call_expression "FUN_002a9b20(&local_78,uVar17 * 2)" identifier (argument_list "(&local_78,uVar17 * 2)" ( (pointer_expression "&local_78" & identifier) , (binary_expression "uVar17 * 2" identifier * number_literal) ))) ;) (expression_statement "iVar3 = *(int *)(lVar8 + 0x58);" (assignment_expression "iVar3 = *(int *)(lVar8 + 0x58)" identifier = (pointer_expression "*(int *)(lVar8 + 0x58)" * (cast_expression "(int *)(lVar8 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x58)" ( (binary_expression "lVar8 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = uVar17 - (long)iVar3;" (assignment_expression "uVar20 = uVar17 - (long)iVar3" identifier = (binary_expression "uVar17 - (long)iVar3" identifier - (cast_expression "(long)iVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }" if (parenthesized_expression "(0 < (long)uVar20)" ( (binary_expression "0 < (long)uVar20" number_literal < (cast_expression "(long)uVar20" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }" { (if_statement "if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n          uVar20 = uVar17;\n        }" { (expression_statement "uVar20 = uVar17;" (assignment_expression "uVar20 = uVar17" identifier = identifier) ;) })) (if_statement "if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }" if (parenthesized_expression "(*(long *)(lVar8 + 0x18) == 0)" ( (binary_expression "*(long *)(lVar8 + 0x18) == 0" (pointer_expression "*(long *)(lVar8 + 0x18)" * (cast_expression "(long *)(lVar8 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x18)" ( (binary_expression "lVar8 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }" { (expression_statement "FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);" (call_expression "FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20)" identifier (argument_list "(&local_78,0,local_70,pbVar19,uVar20)" ( (pointer_expression "&local_78" & identifier) , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "iVar3 = *(int *)(lVar8 + 0x58);" (assignment_expression "iVar3 = *(int *)(lVar8 + 0x58)" identifier = (pointer_expression "*(int *)(lVar8 + 0x58)" * (cast_expression "(int *)(lVar8 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x58)" ( (binary_expression "lVar8 + 0x58" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }" else (compound_statement "{\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }" { (expression_statement "FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);" (call_expression "FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0)" identifier (argument_list "(&local_78,0,local_70,uVar20 * 2,0)" ( (pointer_expression "&local_78" & identifier) , number_literal , identifier , (binary_expression "uVar20 * 2" identifier * number_literal) , number_literal ))) ;) (expression_statement "puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);" (assignment_expression "puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20)" identifier = (cast_expression "(undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20)" identifier (argument_list "(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20)" ( identifier , (cast_expression "(int)*(char *)(lVar8 + 0x22)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(lVar8 + 0x22)" * (cast_expression "(char *)(lVar8 + 0x22)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x22)" ( (binary_expression "lVar8 + 0x22" identifier + number_literal) ))))) , (pointer_expression "*(undefined8 *)(lVar8 + 0x10)" * (cast_expression "(undefined8 *)(lVar8 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x10)" ( (binary_expression "lVar8 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(lVar8 + 0x18)" * (cast_expression "(undefined8 *)(lVar8 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x18)" ( (binary_expression "lVar8 + 0x18" identifier + number_literal) )))) , identifier , (binary_expression "pbVar19 + uVar20" identifier + identifier) ))))) ;) (if_statement "if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }" if (parenthesized_expression "(local_70 < (ulong)((long)puVar7 - (long)local_78))" ( (binary_expression "local_70 < (ulong)((long)puVar7 - (long)local_78)" identifier < (call_expression "(ulong)((long)puVar7 - (long)local_78)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)puVar7 - (long)local_78)" ( (binary_expression "(long)puVar7 - (long)local_78" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_78" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) )) (compound_statement "{\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }" { (expression_statement "FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");" (call_expression "FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase")" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase")" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::erase"" " string_content ") ))) ;) })) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "iVar3 = *(int *)(lVar8 + 0x58);" (assignment_expression "iVar3 = *(int *)(lVar8 + 0x58)" identifier = (pointer_expression "*(int *)(lVar8 + 0x58)" * (cast_expression "(int *)(lVar8 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x58)" ( (binary_expression "lVar8 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "local_70 = (long)puVar7 - (long)local_78;" (assignment_expression "local_70 = (long)puVar7 - (long)local_78" identifier = (binary_expression "(long)puVar7 - (long)local_78" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_78" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) }))) })) (expression_statement "uVar11 = local_70;" (assignment_expression "uVar11 = local_70" identifier = identifier) ;) (if_statement "if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }" if (parenthesized_expression "(0 < iVar3)" ( (binary_expression "0 < iVar3" number_literal < identifier) )) (compound_statement "{\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }" { (expression_statement "uVar2 = *(undefined1 *)(lVar8 + 0x21);" (assignment_expression "uVar2 = *(undefined1 *)(lVar8 + 0x21)" identifier = (pointer_expression "*(undefined1 *)(lVar8 + 0x21)" * (cast_expression "(undefined1 *)(lVar8 + 0x21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x21)" ( (binary_expression "lVar8 + 0x21" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = local_70 + 1;" (assignment_expression "uVar13 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }" if (parenthesized_expression "(local_78 == &local_68)" ( (binary_expression "local_78 == &local_68" identifier == (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n          uVar12 = 0xf;\n        }" { (expression_statement "uVar12 = 0xf;" (assignment_expression "uVar12 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }" else (compound_statement "{\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }" { (expression_statement "uVar12 = CONCAT71(uStack_67,local_68);" (assignment_expression "uVar12 = CONCAT71(uStack_67,local_68)" identifier = (call_expression "CONCAT71(uStack_67,local_68)" identifier (argument_list "(uStack_67,local_68)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }" if (parenthesized_expression "(uVar12 < uVar13)" ( (binary_expression "uVar12 < uVar13" identifier < identifier) )) (compound_statement "{\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }" { (expression_statement "FUN_002a9670(&local_78,local_70,0,0,1);" (call_expression "FUN_002a9670(&local_78,local_70,0,0,1)" identifier (argument_list "(&local_78,local_70,0,0,1)" ( (pointer_expression "&local_78" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "local_78[uVar11] = uVar2;" (assignment_expression "local_78[uVar11] = uVar2" (subscript_expression "local_78[uVar11]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_78[uVar13] = 0;" (assignment_expression "local_78[uVar13] = 0" (subscript_expression "local_78[uVar13]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_70 = uVar13;" (assignment_expression "local_70 = uVar13" identifier = identifier) ;) (if_statement "if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }" if (parenthesized_expression "((long)uVar20 < 0)" ( (binary_expression "(long)uVar20 < 0" (cast_expression "(long)uVar20" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }" { (expression_statement "FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));" (call_expression "FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65))" identifier (argument_list "(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65))" ( (pointer_expression "&local_78" & identifier) , identifier , number_literal , (unary_expression "-uVar20" - identifier) , (cast_expression "(int)*(char *)(lVar8 + 0x65)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)(lVar8 + 0x65)" * (cast_expression "(char *)(lVar8 + 0x65)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x65)" ( (binary_expression "lVar8 + 0x65" identifier + number_literal) ))))) ))) ;) (if_statement "if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }" if (parenthesized_expression "(0x7fffffffffffffff - local_70 < uVar17)" ( (binary_expression "0x7fffffffffffffff - local_70 < uVar17" (binary_expression "0x7fffffffffffffff - local_70" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n            FUN_002e12b0("basic_string::append");\n          }" { (expression_statement "FUN_002e12b0("basic_string::append");" (call_expression "FUN_002e12b0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) }) (else_clause "else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }" else (compound_statement "{\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }" { (expression_statement "uVar17 = (ulong)*(int *)(lVar8 + 0x58);" (assignment_expression "uVar17 = (ulong)*(int *)(lVar8 + 0x58)" identifier = (binary_expression "(ulong)*(int *)(lVar8 + 0x58)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(int *)(lVar8 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x58)" ( (binary_expression "lVar8 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "pbVar19 = pbVar19 + uVar20;" (assignment_expression "pbVar19 = pbVar19 + uVar20" identifier = (binary_expression "pbVar19 + uVar20" identifier + identifier)) ;) (if_statement "if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }" if (parenthesized_expression "(0x7fffffffffffffff - uVar13 < uVar17)" ( (binary_expression "0x7fffffffffffffff - uVar13 < uVar17" (binary_expression "0x7fffffffffffffff - uVar13" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }" { (expression_statement "FUN_002e12b0("basic_string::append",pbVar19);" (call_expression "FUN_002e12b0("basic_string::append",pbVar19)" identifier (argument_list "("basic_string::append",pbVar19)" ( (string_literal ""basic_string::append"" " string_content ") , identifier ))) ;) })) }))) (expression_statement "FUN_002aac00(&local_78,pbVar19,uVar17);" (call_expression "FUN_002aac00(&local_78,pbVar19,uVar17)" identifier (argument_list "(&local_78,pbVar19,uVar17)" ( (pointer_expression "&local_78" & identifier) , identifier , identifier ))) ;) })) (expression_statement "uVar17 = local_70 + local_e8;" (assignment_expression "uVar17 = local_70 + local_e8" identifier = (binary_expression "local_70 + local_e8" identifier + identifier)) ;) (expression_statement "uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;" (assignment_expression "uVar15 = *(uint *)(param_4 + 0x18) & 0xb0" identifier = (binary_expression "*(uint *)(param_4 + 0x18) & 0xb0" (pointer_expression "*(uint *)(param_4 + 0x18)" * (cast_expression "(uint *)(param_4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x18)" ( (binary_expression "param_4 + 0x18" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }" if (parenthesized_expression "((*(uint *)(param_4 + 0x18) & 0x200) != 0)" ( (binary_expression "(*(uint *)(param_4 + 0x18) & 0x200) != 0" (parenthesized_expression "(*(uint *)(param_4 + 0x18) & 0x200)" ( (binary_expression "*(uint *)(param_4 + 0x18) & 0x200" (pointer_expression "*(uint *)(param_4 + 0x18)" * (cast_expression "(uint *)(param_4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x18)" ( (binary_expression "param_4 + 0x18" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }" { (expression_statement "uVar17 = uVar17 + *(long *)(lVar8 + 0x30);" (assignment_expression "uVar17 = uVar17 + *(long *)(lVar8 + 0x30)" identifier = (binary_expression "uVar17 + *(long *)(lVar8 + 0x30)" identifier + (pointer_expression "*(long *)(lVar8 + 0x30)" * (cast_expression "(long *)(lVar8 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x30)" ( (binary_expression "lVar8 + 0x30" identifier + number_literal) )))))) ;) })) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "FUN_002a9b20(&local_58,uVar17 * 2);" (call_expression "FUN_002a9b20(&local_58,uVar17 * 2)" identifier (argument_list "(&local_58,uVar17 * 2)" ( (pointer_expression "&local_58" & identifier) , (binary_expression "uVar17 * 2" identifier * number_literal) ))) ;) (expression_statement "uVar20 = *(ulong *)(param_4 + 0x10);" (assignment_expression "uVar20 = *(ulong *)(param_4 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_4 + 0x10)" * (cast_expression "(ulong *)(param_4 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x10)" ( (binary_expression "param_4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "ppuVar18 = (undefined1 **)local_7c;" (assignment_expression "ppuVar18 = (undefined1 **)local_7c" identifier = (cast_expression "(undefined1 **)local_7c" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "bVar10 = uVar15 == 0x10 && uVar17 < uVar20;" (assignment_expression "bVar10 = uVar15 == 0x10 && uVar17 < uVar20" identifier = (binary_expression "uVar15 == 0x10 && uVar17 < uVar20" (binary_expression "uVar15 == 0x10" identifier == number_literal) && (binary_expression "uVar17 < uVar20" identifier < identifier))) ;) (do_statement "do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);" do (compound_statement "{\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      }" { (expression_statement "uVar11 = local_50;" (assignment_expression "uVar11 = local_50" identifier = identifier) ;) (switch_statement "switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }" switch (parenthesized_expression "(*(undefined1 *)ppuVar18)" ( (pointer_expression "*(undefined1 *)ppuVar18" * (cast_expression "(undefined1 *)ppuVar18" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }" { (case_statement "case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;" case number_literal : (if_statement "if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }" { (expression_statement "FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);" (call_expression "FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5)" identifier (argument_list "(&local_58,local_50,0,uVar20 - uVar17,(int)param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "uVar20 - uVar17" identifier - identifier) , (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (break_statement "break;" break ;)) (case_statement "case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;" case number_literal : (if_statement "if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }" { (expression_statement "FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);" (call_expression "FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5)" identifier (argument_list "(&local_58,local_50,0,uVar20 - uVar17,(int)param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "uVar20 - uVar17" identifier - identifier) , (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }) (else_clause "else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }" else (compound_statement "{\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }" { (if_statement "if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n              uVar13 = 0xf;\n            }" { (expression_statement "uVar13 = 0xf;" (assignment_expression "uVar13 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" else (compound_statement "{\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" { (expression_statement "uVar13 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar13 = CONCAT71(uStack_47,local_48)" identifier = (call_expression "CONCAT71(uStack_47,local_48)" identifier (argument_list "(uStack_47,local_48)" ( identifier , identifier )))) ;) }))) (expression_statement "cVar14 = param_5;" (assignment_expression "cVar14 = param_5" identifier = identifier) ;) (if_statement "if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }" if (parenthesized_expression "(uVar13 < local_50 + 1)" ( (binary_expression "uVar13 < local_50 + 1" identifier < (binary_expression "local_50 + 1" identifier + number_literal)) )) (compound_statement "{\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }" { (expression_statement "FUN_002a9670(&local_58,local_50,0,0,1);" (call_expression "FUN_002a9670(&local_58,local_50,0,0,1)" identifier (argument_list "(&local_58,local_50,0,0,1)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (labeled_statement "LAB_0030f569:\n            local_58[uVar11] = cVar14;" statement_identifier : (expression_statement "local_58[uVar11] = cVar14;" (assignment_expression "local_58[uVar11] = cVar14" (subscript_expression "local_58[uVar11]" identifier [ identifier ]) = identifier) ;)) (expression_statement "local_50 = uVar11 + 1;" (assignment_expression "local_50 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "local_58[uVar11 + 1] = 0;" (assignment_expression "local_58[uVar11 + 1] = 0" (subscript_expression "local_58[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ]) = number_literal) ;) }))) (break_statement "break;" break ;)) (case_statement "case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;" case number_literal : (if_statement "if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }" if (parenthesized_expression "((*(byte *)(param_4 + 0x19) & 2) != 0)" ( (binary_expression "(*(byte *)(param_4 + 0x19) & 2) != 0" (parenthesized_expression "(*(byte *)(param_4 + 0x19) & 2)" ( (binary_expression "*(byte *)(param_4 + 0x19) & 2" (pointer_expression "*(byte *)(param_4 + 0x19)" * (cast_expression "(byte *)(param_4 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x19)" ( (binary_expression "param_4 + 0x19" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }" { (expression_statement "uVar11 = *(ulong *)(lVar8 + 0x30);" (assignment_expression "uVar11 = *(ulong *)(lVar8 + 0x30)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x30)" * (cast_expression "(ulong *)(lVar8 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x30)" ( (binary_expression "lVar8 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar7 = *(undefined1 **)(lVar8 + 0x28);" (assignment_expression "puVar7 = *(undefined1 **)(lVar8 + 0x28)" identifier = (pointer_expression "*(undefined1 **)(lVar8 + 0x28)" * (cast_expression "(undefined1 **)(lVar8 + 0x28)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x28)" ( (binary_expression "lVar8 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }" if (parenthesized_expression "(0x7fffffffffffffff - local_50 < uVar11)" ( (binary_expression "0x7fffffffffffffff - local_50 < uVar11" (binary_expression "0x7fffffffffffffff - local_50" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n              FUN_002e12b0("basic_string::append");\n            }" { (expression_statement "FUN_002e12b0("basic_string::append");" (call_expression "FUN_002e12b0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (goto_statement "goto LAB_0030f5c8;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;" case number_literal : (if_statement "if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }" if (parenthesized_expression "(local_e8 != 0)" ( (binary_expression "local_e8 != 0" identifier != number_literal) )) (compound_statement "{\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }" { (expression_statement "cVar14 = *local_d0;" (assignment_expression "cVar14 = *local_d0" identifier = (pointer_expression "*local_d0" * identifier)) ;) (if_statement "if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n              uVar13 = 0xf;\n            }" { (expression_statement "uVar13 = 0xf;" (assignment_expression "uVar13 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" else (compound_statement "{\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" { (expression_statement "uVar13 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar13 = CONCAT71(uStack_47,local_48)" identifier = (call_expression "CONCAT71(uStack_47,local_48)" identifier (argument_list "(uStack_47,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }" if (parenthesized_expression "(uVar13 < local_50 + 1)" ( (binary_expression "uVar13 < local_50 + 1" identifier < (binary_expression "local_50 + 1" identifier + number_literal)) )) (compound_statement "{\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }" { (expression_statement "FUN_002a9670(&local_58,local_50,0,0,1);" (call_expression "FUN_002a9670(&local_58,local_50,0,0,1)" identifier (argument_list "(&local_58,local_50,0,0,1)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (goto_statement "goto LAB_0030f569;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);" case number_literal : (expression_statement "uVar11 = local_70;" (assignment_expression "uVar11 = local_70" identifier = identifier) ;) (expression_statement "puVar7 = local_78;" (assignment_expression "puVar7 = local_78" identifier = identifier) ;) (labeled_statement "LAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);" statement_identifier : (expression_statement "FUN_002aac00(&local_58,puVar7,uVar11);" (call_expression "FUN_002aac00(&local_58,puVar7,uVar11)" identifier (argument_list "(&local_58,puVar7,uVar11)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;))) })) (expression_statement "ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);" (assignment_expression "ppuVar18 = (undefined1 **)((long)ppuVar18 + 1)" identifier = (cast_expression "(undefined1 **)((long)ppuVar18 + 1)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)ppuVar18 + 1)" ( (binary_expression "(long)ppuVar18 + 1" (cast_expression "(long)ppuVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(&local_78 != ppuVar18)" ( (binary_expression "&local_78 != ppuVar18" (pointer_expression "&local_78" & identifier) != identifier) )) ;) (if_statement "if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }" if (parenthesized_expression "(1 < local_e8)" ( (binary_expression "1 < local_e8" number_literal < identifier) )) (compound_statement "{\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }" { (if_statement "if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }" if (parenthesized_expression "(0x7fffffffffffffff - local_50 < local_e8 - 1)" ( (binary_expression "0x7fffffffffffffff - local_50 < local_e8 - 1" (binary_expression "0x7fffffffffffffff - local_50" number_literal - identifier) < (binary_expression "local_e8 - 1" identifier - number_literal)) )) (compound_statement "{\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }" { (expression_statement "FUN_002e12b0("basic_string::append",local_d0 + 1);" (call_expression "FUN_002e12b0("basic_string::append",local_d0 + 1)" identifier (argument_list "("basic_string::append",local_d0 + 1)" ( (string_literal ""basic_string::append"" " string_content ") , (binary_expression "local_d0 + 1" identifier + number_literal) ))) ;) })) (expression_statement "FUN_002aac00(&local_58);" (call_expression "FUN_002aac00(&local_58)" identifier (argument_list "(&local_58)" ( (pointer_expression "&local_58" & identifier) ))) ;) })) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (if_statement "if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }" if (parenthesized_expression "(local_50 < uVar20)" ( (binary_expression "local_50 < uVar20" identifier < identifier) )) (compound_statement "{\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }" { (expression_statement "uVar17 = uVar20;" (assignment_expression "uVar17 = uVar20" identifier = identifier) ;) (if_statement "if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }" if (parenthesized_expression "(uVar15 == 0x20)" ( (binary_expression "uVar15 == 0x20" identifier == number_literal) )) (compound_statement "{\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }" { (expression_statement "FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);" (call_expression "FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5)" identifier (argument_list "(&local_58,local_50,0,uVar20 - local_50,(int)param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "uVar20 - local_50" identifier - identifier) , (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }) (else_clause "else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }" else (compound_statement "{\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }" { (expression_statement "FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);" (call_expression "FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5)" identifier (argument_list "(&local_58,0,0,uVar20 - local_50,(int)param_5)" ( (pointer_expression "&local_58" & identifier) , number_literal , number_literal , (binary_expression "uVar20 - local_50" identifier - identifier) , (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }))) })) (if_statement "if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }" if (parenthesized_expression "(local_b7 == '\0')" ( (binary_expression "local_b7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }" { (expression_statement "lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);" (assignment_expression "lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17)" identifier = (call_expression "(**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17)" (parenthesized_expression "(**(code **)(*param_2 + 0x60))" ( (pointer_expression "**(code **)(*param_2 + 0x60)" * (pointer_expression "*(code **)(*param_2 + 0x60)" * (cast_expression "(code **)(*param_2 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x60)" ( (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,local_58,(long)(int)uVar17)" ( identifier , identifier , (cast_expression "(long)(int)uVar17" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_b7 = (int)uVar17 != lVar8;" (assignment_expression "local_b7 = (int)uVar17 != lVar8" identifier = (binary_expression "(int)uVar17 != lVar8" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) != identifier)) ;) })) (expression_statement "param_3 = param_3 & 0xffffffffffffff00;" (assignment_expression "param_3 = param_3 & 0xffffffffffffff00" identifier = (binary_expression "param_3 & 0xffffffffffffff00" identifier & number_literal)) ;) (if_statement "if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }" if (parenthesized_expression "(local_58 != &local_48)" ( (binary_expression "local_58 != &local_48" identifier != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n        FUN_002a2980(local_58);\n      }" { (expression_statement "FUN_002a2980(local_58);" (call_expression "FUN_002a2980(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) })) (if_statement "if (local_78 != &local_68) {\n        FUN_002a2980();\n      }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n        FUN_002a2980();\n      }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) }))) })) (labeled_statement "LAB_0030f298:\n  auVar21._9_7_ = (int7)(param_3 >> 8);" statement_identifier : (expression_statement "auVar21._9_7_ = (int7)(param_3 >> 8);" (assignment_expression "auVar21._9_7_ = (int7)(param_3 >> 8)" (field_expression "auVar21._9_7_" identifier . field_identifier) = (call_expression "(int7)(param_3 >> 8)" (parenthesized_expression "(int7)" ( identifier )) (argument_list "(param_3 >> 8)" ( (binary_expression "param_3 >> 8" identifier >> number_literal) )))) ;)) (expression_statement "auVar21[8] = local_b7;" (assignment_expression "auVar21[8] = local_b7" (subscript_expression "auVar21[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined8 *)(param_4 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(param_4 + 0x10) = 0" (pointer_expression "*(undefined8 *)(param_4 + 0x10)" * (cast_expression "(undefined8 *)(param_4 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x10)" ( (binary_expression "param_4 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "auVar21._0_8_ = param_2;" (assignment_expression "auVar21._0_8_ = param_2" (field_expression "auVar21._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar21;" return identifier ;) (ERROR "}" }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (declaration (macro_type_specifier IDENT ( (type_descriptor TYPE) )) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) IDENT , (ERROR IDENT) IDENT , (ERROR IDENT (pointer_declarator * IDENT) ) { long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) 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 ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (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_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) & LIT) )) != LIT)) ))) )) (compound_statement { (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 (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 (sized_type_specifier long) (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 (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 (sized_type_specifier long) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") ))) ;) })) (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 = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (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 (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 ") ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (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 (binary_expression LIT - IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT ))) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) 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 { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , LIT , LIT ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression 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 { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 ") ))) ;) })) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , LIT , LIT ))) ;) })) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (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 (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) != IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (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 ") , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression 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) ))) ;) }))) })) (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 , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return IDENT ;) (ERROR }))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (declaration "FUN_0030f1b0(undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,\n            undefined8 *param_6)\n\n{\n  long *plVar1;" (macro_type_specifier "FUN_0030f1b0(undefined8" (identifier "FUN_0030f1b0") (( "(") (type_descriptor "undefined8" (type_identifier "undefined8")) () "")) (identifier "param_1") (, ",") (ERROR "long" (identifier "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2")) (, ",") (ERROR "ulong" (identifier "ulong")) (identifier "param_3") (, ",") (ERROR "long" (identifier "long")) (identifier "param_4") (, ",") (ERROR "char" (identifier "char")) (identifier "param_5") (, ",") (ERROR "undefined8 *param_6)\n\n{\n  long" (identifier "undefined8") (pointer_declarator "*param_6" (* "*") (identifier "param_6")) () ")") ({ "{") (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "undefined1 uVar2;" (type_identifier "undefined1") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "undefined1 *puVar7;" (type_identifier "undefined1") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "undefined8 *puVar9;" (type_identifier "undefined8") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "ulong uVar12;" (type_identifier "ulong") (identifier "uVar12") (; ";")) (declaration "ulong uVar13;" (type_identifier "ulong") (identifier "uVar13") (; ";")) (declaration "char cVar14;" (primitive_type "char") (identifier "cVar14") (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "byte *pbVar16;" (type_identifier "byte") (pointer_declarator "*pbVar16" (* "*") (identifier "pbVar16")) (; ";")) (declaration "ulong uVar17;" (type_identifier "ulong") (identifier "uVar17") (; ";")) (declaration "undefined1 **ppuVar18;" (type_identifier "undefined1") (pointer_declarator "**ppuVar18" (* "*") (pointer_declarator "*ppuVar18" (* "*") (identifier "ppuVar18"))) (; ";")) (declaration "byte *pbVar19;" (type_identifier "byte") (pointer_declarator "*pbVar19" (* "*") (identifier "pbVar19")) (; ";")) (declaration "ulong uVar20;" (type_identifier "ulong") (identifier "uVar20") (; ";")) (declaration "undefined1 auVar21 [16];" (type_identifier "undefined1") (array_declarator "auVar21 [16]" (identifier "auVar21") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "ulong local_e8;" (type_identifier "ulong") (identifier "local_e8") (; ";")) (declaration "char *local_d0;" (primitive_type "char") (pointer_declarator "*local_d0" (* "*") (identifier "local_d0")) (; ";")) (declaration "char local_b7;" (primitive_type "char") (identifier "local_b7") (; ";")) (declaration "undefined1 local_7c [4];" (type_identifier "undefined1") (array_declarator "local_7c [4]" (identifier "local_7c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined1 *local_78;" (type_identifier "undefined1") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "ulong local_70;" (type_identifier "ulong") (identifier "local_70") (; ";")) (declaration "undefined1 local_68;" (type_identifier "undefined1") (identifier "local_68") (; ";")) (declaration "undefined7 uStack_67;" (type_identifier "undefined7") (identifier "uStack_67") (; ";")) (declaration "undefined1 *local_58;" (type_identifier "undefined1") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "ulong local_50;" (type_identifier "ulong") (identifier "local_50") (; ";")) (declaration "undefined1 local_48;" (type_identifier "undefined1") (identifier "local_48") (; ";")) (declaration "undefined7 uStack_47;" (type_identifier "undefined7") (identifier "uStack_47") (; ";")) (expression_statement "local_b7 = (char)param_3;" (assignment_expression "local_b7 = (char)param_3" (identifier "local_b7") (= "=") (cast_expression "(char)param_3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_3"))) (; ";")) (expression_statement "lVar4 = FUN_002b4380(param_4 + 0xd0);" (assignment_expression "lVar4 = FUN_002b4380(param_4 + 0xd0)" (identifier "lVar4") (= "=") (call_expression "FUN_002b4380(param_4 + 0xd0)" (identifier "FUN_002b4380") (argument_list "(param_4 + 0xd0)" (( "(") (binary_expression "param_4 + 0xd0" (identifier "param_4") (+ "+") (number_literal "0xd0")) () ")")))) (; ";")) (expression_statement "lVar5 = FUN_002a50c0(&DAT_00405ef0);" (assignment_expression "lVar5 = FUN_002a50c0(&DAT_00405ef0)" (identifier "lVar5") (= "=") (call_expression "FUN_002a50c0(&DAT_00405ef0)" (identifier "FUN_002a50c0") (argument_list "(&DAT_00405ef0)" (( "(") (pointer_expression "&DAT_00405ef0" (& "&") (identifier "DAT_00405ef0")) () ")")))) (; ";")) (expression_statement "plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8);" (assignment_expression "plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8)" (identifier "plVar1") (= "=") (cast_expression "(long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8)" (( "(") (binary_expression "*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8" (pointer_expression "*(long *)(*(long *)(param_4 + 0xd0) + 0x18)" (* "*") (cast_expression "(long *)(*(long *)(param_4 + 0xd0) + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_4 + 0xd0) + 0x18)" (( "(") (binary_expression "*(long *)(param_4 + 0xd0) + 0x18" (pointer_expression "*(long *)(param_4 + 0xd0)" (* "*") (cast_expression "(long *)(param_4 + 0xd0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xd0)" (( "(") (binary_expression "param_4 + 0xd0" (identifier "param_4") (+ "+") (number_literal "0xd0")) () ")")))) (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (binary_expression "lVar5 * 8" (identifier "lVar5") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "lVar8 = *plVar1;" (assignment_expression "lVar8 = *plVar1" (identifier "lVar8") (= "=") (pointer_expression "*plVar1" (* "*") (identifier "plVar1"))) (; ";")) (if_statement "if (lVar8 == 0) {\n                    \n    puVar9 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)((long)puVar9 + 0x22) = 0;\n    *puVar9 = &PTR_FUN_003f3258;\n    *(undefined2 *)(puVar9 + 4) = 0;\n    puVar9[5] = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    *(undefined4 *)(puVar9 + 0xc) = 0;\n    *(undefined1 *)((long)puVar9 + 0x6f) = 0;\n                    \n    FUN_002b55a0(puVar9,param_4 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);\n    lVar8 = *plVar1;\n  }" (if "if") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    puVar9 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)((long)puVar9 + 0x22) = 0;\n    *puVar9 = &PTR_FUN_003f3258;\n    *(undefined2 *)(puVar9 + 4) = 0;\n    puVar9[5] = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    *(undefined4 *)(puVar9 + 0xc) = 0;\n    *(undefined1 *)((long)puVar9 + 0x6f) = 0;\n                    \n    FUN_002b55a0(puVar9,param_4 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);\n    lVar8 = *plVar1;\n  }" ({ "{") (expression_statement "puVar9 = (undefined8 *)FUN_002a11b0(0x70);" (assignment_expression "puVar9 = (undefined8 *)FUN_002a11b0(0x70)" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)FUN_002a11b0(0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002a11b0(0x70)" (identifier "FUN_002a11b0") (argument_list "(0x70)" (( "(") (number_literal "0x70") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar9 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 1)" (( "(") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[2] = 0;" (assignment_expression "puVar9[2] = 0" (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[3] = 0;" (assignment_expression "puVar9[3] = 0" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((long)puVar9 + 0x22) = 0;" (assignment_expression "*(undefined1 *)((long)puVar9 + 0x22) = 0" (pointer_expression "*(undefined1 *)((long)puVar9 + 0x22)" (* "*") (cast_expression "(undefined1 *)((long)puVar9 + 0x22)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 0x22)" (( "(") (binary_expression "(long)puVar9 + 0x22" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "0x22")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar9 = &PTR_FUN_003f3258;" (assignment_expression "*puVar9 = &PTR_FUN_003f3258" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (pointer_expression "&PTR_FUN_003f3258" (& "&") (identifier "PTR_FUN_003f3258"))) (; ";")) (expression_statement "*(undefined2 *)(puVar9 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar9 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar9 + 4)" (* "*") (cast_expression "(undefined2 *)(puVar9 + 4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[5] = 0;" (assignment_expression "puVar9[5] = 0" (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[6] = 0;" (assignment_expression "puVar9[6] = 0" (subscript_expression "puVar9[6]" (identifier "puVar9") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[7] = 0;" (assignment_expression "puVar9[7] = 0" (subscript_expression "puVar9[7]" (identifier "puVar9") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[8] = 0;" (assignment_expression "puVar9[8] = 0" (subscript_expression "puVar9[8]" (identifier "puVar9") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[9] = 0;" (assignment_expression "puVar9[9] = 0" (subscript_expression "puVar9[9]" (identifier "puVar9") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[10] = 0;" (assignment_expression "puVar9[10] = 0" (subscript_expression "puVar9[10]" (identifier "puVar9") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[0xb] = 0;" (assignment_expression "puVar9[0xb] = 0" (subscript_expression "puVar9[0xb]" (identifier "puVar9") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar9 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0xc)" (( "(") (binary_expression "puVar9 + 0xc" (identifier "puVar9") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((long)puVar9 + 0x6f) = 0;" (assignment_expression "*(undefined1 *)((long)puVar9 + 0x6f) = 0" (pointer_expression "*(undefined1 *)((long)puVar9 + 0x6f)" (* "*") (cast_expression "(undefined1 *)((long)puVar9 + 0x6f)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 0x6f)" (( "(") (binary_expression "(long)puVar9 + 0x6f" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "0x6f")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_002b55a0(puVar9,param_4 + 0xd0);" (call_expression "FUN_002b55a0(puVar9,param_4 + 0xd0)" (identifier "FUN_002b55a0") (argument_list "(puVar9,param_4 + 0xd0)" (( "(") (identifier "puVar9") (, ",") (binary_expression "param_4 + 0xd0" (identifier "param_4") (+ "+") (number_literal "0xd0")) () ")"))) (; ";")) (expression_statement "FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);" (call_expression "FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5)" (identifier "FUN_002a5530") (argument_list "(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5)" (( "(") (pointer_expression "*(undefined8 *)(param_4 + 0xd0)" (* "*") (cast_expression "(undefined8 *)(param_4 + 0xd0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xd0)" (( "(") (binary_expression "param_4 + 0xd0" (identifier "param_4") (+ "+") (number_literal "0xd0")) () ")")))) (, ",") (identifier "puVar9") (, ",") (identifier "lVar5") () ")"))) (; ";")) (expression_statement "lVar8 = *plVar1;" (assignment_expression "lVar8 = *plVar1" (identifier "lVar8") (= "=") (pointer_expression "*plVar1" (* "*") (identifier "plVar1"))) (; ";")) (} "}"))) (expression_statement "pbVar19 = (byte *)*param_6;" (assignment_expression "pbVar19 = (byte *)*param_6" (identifier "pbVar19") (= "=") (cast_expression "(byte *)*param_6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_6" (* "*") (identifier "param_6")))) (; ";")) (if_statement "if (*pbVar19 == *(byte *)(lVar8 + 100)) {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);\n    if (param_6[1] == 0) goto LAB_0030f298;\n    local_d0 = *(char **)(lVar8 + 0x48);\n    pbVar19 = pbVar19 + 1;\n    local_e8 = *(ulong *)(lVar8 + 0x50);\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);\n    local_d0 = *(char **)(lVar8 + 0x38);\n    local_e8 = *(ulong *)(lVar8 + 0x40);\n  }" (if "if") (parenthesized_expression "(*pbVar19 == *(byte *)(lVar8 + 100))" (( "(") (binary_expression "*pbVar19 == *(byte *)(lVar8 + 100)" (pointer_expression "*pbVar19" (* "*") (identifier "pbVar19")) (== "==") (pointer_expression "*(byte *)(lVar8 + 100)" (* "*") (cast_expression "(byte *)(lVar8 + 100)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 100)" (( "(") (binary_expression "lVar8 + 100" (identifier "lVar8") (+ "+") (number_literal "100")) () ")"))))) () ")")) (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);\n    if (param_6[1] == 0) goto LAB_0030f298;\n    local_d0 = *(char **)(lVar8 + 0x48);\n    pbVar19 = pbVar19 + 1;\n    local_e8 = *(ulong *)(lVar8 + 0x50);\n  }" ({ "{") (expression_statement "local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar8 + 0x60)" (identifier "local_7c") (= "=") (pointer_expression "*(undefined1 (*) [4])(lVar8 + 0x60)" (* "*") (cast_expression "(undefined1 (*) [4])(lVar8 + 0x60)" (( "(") (type_descriptor "undefined1 (*) [4]" (type_identifier "undefined1") (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "4") (] "]"))) () ")") (parenthesized_expression "(lVar8 + 0x60)" (( "(") (binary_expression "lVar8 + 0x60" (identifier "lVar8") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (if_statement "if (param_6[1] == 0) goto LAB_0030f298;" (if "if") (parenthesized_expression "(param_6[1] == 0)" (( "(") (binary_expression "param_6[1] == 0" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0030f298;" (goto "goto") (statement_identifier "LAB_0030f298") (; ";"))) (expression_statement "local_d0 = *(char **)(lVar8 + 0x48);" (assignment_expression "local_d0 = *(char **)(lVar8 + 0x48)" (identifier "local_d0") (= "=") (pointer_expression "*(char **)(lVar8 + 0x48)" (* "*") (cast_expression "(char **)(lVar8 + 0x48)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar8 + 0x48)" (( "(") (binary_expression "lVar8 + 0x48" (identifier "lVar8") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "pbVar19 = pbVar19 + 1;" (assignment_expression "pbVar19 = pbVar19 + 1" (identifier "pbVar19") (= "=") (binary_expression "pbVar19 + 1" (identifier "pbVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_e8 = *(ulong *)(lVar8 + 0x50);" (assignment_expression "local_e8 = *(ulong *)(lVar8 + 0x50)" (identifier "local_e8") (= "=") (pointer_expression "*(ulong *)(lVar8 + 0x50)" (* "*") (cast_expression "(ulong *)(lVar8 + 0x50)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x50)" (( "(") (binary_expression "lVar8 + 0x50" (identifier "lVar8") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);\n    local_d0 = *(char **)(lVar8 + 0x38);\n    local_e8 = *(ulong *)(lVar8 + 0x40);\n  }" (else "else") (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);\n    local_d0 = *(char **)(lVar8 + 0x38);\n    local_e8 = *(ulong *)(lVar8 + 0x40);\n  }" ({ "{") (expression_statement "local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c)" (identifier "local_7c") (= "=") (pointer_expression "*(undefined1 (*) [4])(lVar8 + 0x5c)" (* "*") (cast_expression "(undefined1 (*) [4])(lVar8 + 0x5c)" (( "(") (type_descriptor "undefined1 (*) [4]" (type_identifier "undefined1") (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "4") (] "]"))) () ")") (parenthesized_expression "(lVar8 + 0x5c)" (( "(") (binary_expression "lVar8 + 0x5c" (identifier "lVar8") (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (expression_statement "local_d0 = *(char **)(lVar8 + 0x38);" (assignment_expression "local_d0 = *(char **)(lVar8 + 0x38)" (identifier "local_d0") (= "=") (pointer_expression "*(char **)(lVar8 + 0x38)" (* "*") (cast_expression "(char **)(lVar8 + 0x38)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar8 + 0x38)" (( "(") (binary_expression "lVar8 + 0x38" (identifier "lVar8") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "local_e8 = *(ulong *)(lVar8 + 0x40);" (assignment_expression "local_e8 = *(ulong *)(lVar8 + 0x40)" (identifier "local_e8") (= "=") (pointer_expression "*(ulong *)(lVar8 + 0x40)" (* "*") (cast_expression "(ulong *)(lVar8 + 0x40)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x40)" (( "(") (binary_expression "lVar8 + 0x40" (identifier "lVar8") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pbVar16 = pbVar19 + param_6[1];" (assignment_expression "pbVar16 = pbVar19 + param_6[1]" (identifier "pbVar16") (= "=") (binary_expression "pbVar19 + param_6[1]" (identifier "pbVar19") (+ "+") (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if ((pbVar19 < pbVar16) &&\n     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)) {\n    do {\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);\n    uVar17 = (long)pbVar6 - (long)pbVar19;\njoined_r0x0030f2c6:\n    if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    \n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    \n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }\n  }" (if "if") (parenthesized_expression "((pbVar19 < pbVar16) &&\n     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0))" (( "(") (binary_expression "(pbVar19 < pbVar16) &&\n     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)" (parenthesized_expression "(pbVar19 < pbVar16)" (( "(") (binary_expression "pbVar19 < pbVar16" (identifier "pbVar19") (< "<") (identifier "pbVar16")) () ")")) (&& "&&") (parenthesized_expression "(pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)" (( "(") (comma_expression "pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0" (assignment_expression "pbVar6 = pbVar19" (identifier "pbVar6") (= "=") (identifier "pbVar19")) (, ",") (binary_expression "(*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0" (parenthesized_expression "(*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8)" (( "(") (binary_expression "*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8" (pointer_expression "*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2)" (* "*") (cast_expression "(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2)" (( "(") (binary_expression "*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2" (binary_expression "*(long *)(lVar4 + 0x30) + 1" (pointer_expression "*(long *)(lVar4 + 0x30)" (* "*") (cast_expression "(long *)(lVar4 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x30)" (( "(") (binary_expression "lVar4 + 0x30" (identifier "lVar4") (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (number_literal "1")) (+ "+") (binary_expression "(ulong)*pbVar19 * 2" (binary_expression "(ulong)*pbVar19" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "pbVar19")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    do {\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);\n    uVar17 = (long)pbVar6 - (long)pbVar19;\njoined_r0x0030f2c6:\n    if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    \n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    \n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }\n  }" ({ "{") (do_statement "do {\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }\n    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);" (do "do") (compound_statement "{\n      pbVar6 = pbVar6 + 1;\n      if (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\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 (pbVar16 == pbVar6) {\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }" (if "if") (parenthesized_expression "(pbVar16 == pbVar6)" (( "(") (binary_expression "pbVar16 == pbVar6" (identifier "pbVar16") (== "==") (identifier "pbVar6")) () ")")) (compound_statement "{\n        uVar17 = (long)pbVar16 - (long)pbVar19;\n        goto joined_r0x0030f2c6;\n      }" ({ "{") (expression_statement "uVar17 = (long)pbVar16 - (long)pbVar19;" (assignment_expression "uVar17 = (long)pbVar16 - (long)pbVar19" (identifier "uVar17") (= "=") (binary_expression "(long)pbVar16 - (long)pbVar19" (cast_expression "(long)pbVar16" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pbVar16")) (- "-") (cast_expression "(long)pbVar19" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pbVar19")))) (; ";")) (goto_statement "goto joined_r0x0030f2c6;" (goto "goto") (statement_identifier "joined_r0x0030f2c6") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0" (parenthesized_expression "(*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8)" (( "(") (binary_expression "*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8" (pointer_expression "*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2)" (* "*") (cast_expression "(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2)" (( "(") (binary_expression "*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2" (binary_expression "*(long *)(lVar4 + 0x30) + 1" (pointer_expression "*(long *)(lVar4 + 0x30)" (* "*") (cast_expression "(long *)(lVar4 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x30)" (( "(") (binary_expression "lVar4 + 0x30" (identifier "lVar4") (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (number_literal "1")) (+ "+") (binary_expression "(ulong)*pbVar6 * 2" (binary_expression "(ulong)*pbVar6" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "pbVar6")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar17 = (long)pbVar6 - (long)pbVar19;" (assignment_expression "uVar17 = (long)pbVar6 - (long)pbVar19" (identifier "uVar17") (= "=") (binary_expression "(long)pbVar6 - (long)pbVar19" (cast_expression "(long)pbVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pbVar6")) (- "-") (cast_expression "(long)pbVar19" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pbVar19")))) (; ";")) (labeled_statement "joined_r0x0030f2c6:\n    if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    \n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    \n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }" (statement_identifier "joined_r0x0030f2c6") (: ":") (if_statement "if (uVar17 != 0) {\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    \n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    \n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }" (if "if") (parenthesized_expression "(uVar17 != 0)" (( "(") (binary_expression "uVar17 != 0" (identifier "uVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_70 = 0;\n      local_78 = &local_68;\n      local_68 = 0;\n                    \n      FUN_002a9b20(&local_78,uVar17 * 2);\n      iVar3 = *(int *)(lVar8 + 0x58);\n      uVar20 = uVar17 - (long)iVar3;\n      if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }\n      uVar11 = local_70;\n      if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }\n      uVar17 = local_70 + local_e8;\n      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;\n      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }\n      local_50 = 0;\n      local_58 = &local_48;\n      local_48 = 0;\n                    \n      FUN_002a9b20(&local_58,uVar17 * 2);\n      uVar20 = *(ulong *)(param_4 + 0x10);\n      ppuVar18 = (undefined1 **)local_7c;\n      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;\n      do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);\n      if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }\n      uVar17 = local_50;\n      if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }\n      if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }\n      param_3 = param_3 & 0xffffffffffffff00;\n      if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }\n      if (local_78 != &local_68) {\n        FUN_002a2980();\n      }\n    }" ({ "{") (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" (identifier "local_70") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" (identifier "local_78") (= "=") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) (; ";")) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" (identifier "local_68") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_002a9b20(&local_78,uVar17 * 2);" (call_expression "FUN_002a9b20(&local_78,uVar17 * 2)" (identifier "FUN_002a9b20") (argument_list "(&local_78,uVar17 * 2)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (binary_expression "uVar17 * 2" (identifier "uVar17") (* "*") (number_literal "2")) () ")"))) (; ";")) (expression_statement "iVar3 = *(int *)(lVar8 + 0x58);" (assignment_expression "iVar3 = *(int *)(lVar8 + 0x58)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(lVar8 + 0x58)" (* "*") (cast_expression "(int *)(lVar8 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x58)" (( "(") (binary_expression "lVar8 + 0x58" (identifier "lVar8") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "uVar20 = uVar17 - (long)iVar3;" (assignment_expression "uVar20 = uVar17 - (long)iVar3" (identifier "uVar20") (= "=") (binary_expression "uVar17 - (long)iVar3" (identifier "uVar17") (- "-") (cast_expression "(long)iVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar3")))) (; ";")) (if_statement "if (0 < (long)uVar20) {\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }" (if "if") (parenthesized_expression "(0 < (long)uVar20)" (( "(") (binary_expression "0 < (long)uVar20" (number_literal "0") (< "<") (cast_expression "(long)uVar20" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar20"))) () ")")) (compound_statement "{\n        if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }\n        if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }\n      }" ({ "{") (if_statement "if (iVar3 < 0) {\n          uVar20 = uVar17;\n        }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          uVar20 = uVar17;\n        }" ({ "{") (expression_statement "uVar20 = uVar17;" (assignment_expression "uVar20 = uVar17" (identifier "uVar20") (= "=") (identifier "uVar17")) (; ";")) (} "}"))) (if_statement "if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }\n        else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }" (if "if") (parenthesized_expression "(*(long *)(lVar8 + 0x18) == 0)" (( "(") (binary_expression "*(long *)(lVar8 + 0x18) == 0" (pointer_expression "*(long *)(lVar8 + 0x18)" (* "*") (cast_expression "(long *)(lVar8 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x18)" (( "(") (binary_expression "lVar8 + 0x18" (identifier "lVar8") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);\n          iVar3 = *(int *)(lVar8 + 0x58);\n        }" ({ "{") (expression_statement "FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);" (call_expression "FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20)" (identifier "FUN_002aa2b0") (argument_list "(&local_78,0,local_70,pbVar19,uVar20)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (number_literal "0") (, ",") (identifier "local_70") (, ",") (identifier "pbVar19") (, ",") (identifier "uVar20") () ")"))) (; ";")) (expression_statement "iVar3 = *(int *)(lVar8 + 0x58);" (assignment_expression "iVar3 = *(int *)(lVar8 + 0x58)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(lVar8 + 0x58)" (* "*") (cast_expression "(int *)(lVar8 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x58)" (( "(") (binary_expression "lVar8 + 0x58" (identifier "lVar8") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }" (else "else") (compound_statement "{\n          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);\n          puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);\n          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }\n          *puVar7 = 0;\n          iVar3 = *(int *)(lVar8 + 0x58);\n          local_70 = (long)puVar7 - (long)local_78;\n        }" ({ "{") (expression_statement "FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);" (call_expression "FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0)" (identifier "FUN_002aa010") (argument_list "(&local_78,0,local_70,uVar20 * 2,0)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (number_literal "0") (, ",") (identifier "local_70") (, ",") (binary_expression "uVar20 * 2" (identifier "uVar20") (* "*") (number_literal "2")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);" (assignment_expression "puVar7 = (undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20)" (identifier "puVar7") (= "=") (cast_expression "(undefined1 *)\n                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20)" (identifier "FUN_002b6230") (argument_list "(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),\n                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20)" (( "(") (identifier "local_78") (, ",") (cast_expression "(int)*(char *)(lVar8 + 0x22)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(char *)(lVar8 + 0x22)" (* "*") (cast_expression "(char *)(lVar8 + 0x22)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x22)" (( "(") (binary_expression "lVar8 + 0x22" (identifier "lVar8") (+ "+") (number_literal "0x22")) () ")"))))) (, ",") (pointer_expression "*(undefined8 *)(lVar8 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar8 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x10)" (( "(") (binary_expression "lVar8 + 0x10" (identifier "lVar8") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(lVar8 + 0x18)" (* "*") (cast_expression "(undefined8 *)(lVar8 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x18)" (( "(") (binary_expression "lVar8 + 0x18" (identifier "lVar8") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (identifier "pbVar19") (, ",") (binary_expression "pbVar19 + uVar20" (identifier "pbVar19") (+ "+") (identifier "uVar20")) () ")"))))) (; ";")) (if_statement "if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }" (if "if") (parenthesized_expression "(local_70 < (ulong)((long)puVar7 - (long)local_78))" (( "(") (binary_expression "local_70 < (ulong)((long)puVar7 - (long)local_78)" (identifier "local_70") (< "<") (call_expression "(ulong)((long)puVar7 - (long)local_78)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((long)puVar7 - (long)local_78)" (( "(") (binary_expression "(long)puVar7 - (long)local_78" (cast_expression "(long)puVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar7")) (- "-") (cast_expression "(long)local_78" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_78"))) () ")")))) () ")")) (compound_statement "{\n                    \n                    \n            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");\n          }" ({ "{") (expression_statement "FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase");" (call_expression "FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase")" (identifier "FUN_002e1330") (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)",\n                         "basic_string::erase")" (( "(") (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") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = *(int *)(lVar8 + 0x58);" (assignment_expression "iVar3 = *(int *)(lVar8 + 0x58)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(lVar8 + 0x58)" (* "*") (cast_expression "(int *)(lVar8 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x58)" (( "(") (binary_expression "lVar8 + 0x58" (identifier "lVar8") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "local_70 = (long)puVar7 - (long)local_78;" (assignment_expression "local_70 = (long)puVar7 - (long)local_78" (identifier "local_70") (= "=") (binary_expression "(long)puVar7 - (long)local_78" (cast_expression "(long)puVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar7")) (- "-") (cast_expression "(long)local_78" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_78")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar11 = local_70;" (assignment_expression "uVar11 = local_70" (identifier "uVar11") (= "=") (identifier "local_70")) (; ";")) (if_statement "if (0 < iVar3) {\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }" (if "if") (parenthesized_expression "(0 < iVar3)" (( "(") (binary_expression "0 < iVar3" (number_literal "0") (< "<") (identifier "iVar3")) () ")")) (compound_statement "{\n        uVar2 = *(undefined1 *)(lVar8 + 0x21);\n        uVar13 = local_70 + 1;\n        if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }\n        if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }\n        local_78[uVar11] = uVar2;\n        local_78[uVar13] = 0;\n        local_70 = uVar13;\n        if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }\n                    \n        FUN_002aac00(&local_78,pbVar19,uVar17);\n      }" ({ "{") (expression_statement "uVar2 = *(undefined1 *)(lVar8 + 0x21);" (assignment_expression "uVar2 = *(undefined1 *)(lVar8 + 0x21)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined1 *)(lVar8 + 0x21)" (* "*") (cast_expression "(undefined1 *)(lVar8 + 0x21)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x21)" (( "(") (binary_expression "lVar8 + 0x21" (identifier "lVar8") (+ "+") (number_literal "0x21")) () ")"))))) (; ";")) (expression_statement "uVar13 = local_70 + 1;" (assignment_expression "uVar13 = local_70 + 1" (identifier "uVar13") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_78 == &local_68) {\n          uVar12 = 0xf;\n        }\n        else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }" (if "if") (parenthesized_expression "(local_78 == &local_68)" (( "(") (binary_expression "local_78 == &local_68" (identifier "local_78") (== "==") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) () ")")) (compound_statement "{\n          uVar12 = 0xf;\n        }" ({ "{") (expression_statement "uVar12 = 0xf;" (assignment_expression "uVar12 = 0xf" (identifier "uVar12") (= "=") (number_literal "0xf")) (; ";")) (} "}")) (else_clause "else {\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }" (else "else") (compound_statement "{\n          uVar12 = CONCAT71(uStack_67,local_68);\n        }" ({ "{") (expression_statement "uVar12 = CONCAT71(uStack_67,local_68);" (assignment_expression "uVar12 = CONCAT71(uStack_67,local_68)" (identifier "uVar12") (= "=") (call_expression "CONCAT71(uStack_67,local_68)" (identifier "CONCAT71") (argument_list "(uStack_67,local_68)" (( "(") (identifier "uStack_67") (, ",") (identifier "local_68") () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar12 < uVar13) {\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }" (if "if") (parenthesized_expression "(uVar12 < uVar13)" (( "(") (binary_expression "uVar12 < uVar13" (identifier "uVar12") (< "<") (identifier "uVar13")) () ")")) (compound_statement "{\n                    \n          FUN_002a9670(&local_78,local_70,0,0,1);\n        }" ({ "{") (expression_statement "FUN_002a9670(&local_78,local_70,0,0,1);" (call_expression "FUN_002a9670(&local_78,local_70,0,0,1)" (identifier "FUN_002a9670") (argument_list "(&local_78,local_70,0,0,1)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (identifier "local_70") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (expression_statement "local_78[uVar11] = uVar2;" (assignment_expression "local_78[uVar11] = uVar2" (subscript_expression "local_78[uVar11]" (identifier "local_78") ([ "[") (identifier "uVar11") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "local_78[uVar13] = 0;" (assignment_expression "local_78[uVar13] = 0" (subscript_expression "local_78[uVar13]" (identifier "local_78") ([ "[") (identifier "uVar13") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70 = uVar13;" (assignment_expression "local_70 = uVar13" (identifier "local_70") (= "=") (identifier "uVar13")) (; ";")) (if_statement "if ((long)uVar20 < 0) {\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }\n        else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }" (if "if") (parenthesized_expression "((long)uVar20 < 0)" (( "(") (binary_expression "(long)uVar20 < 0" (cast_expression "(long)uVar20" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar20")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));\n          if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }\n        }" ({ "{") (expression_statement "FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));" (call_expression "FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65))" (identifier "FUN_002aa010") (argument_list "(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65))" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (identifier "uVar13") (, ",") (number_literal "0") (, ",") (unary_expression "-uVar20" (- "-") (identifier "uVar20")) (, ",") (cast_expression "(int)*(char *)(lVar8 + 0x65)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(char *)(lVar8 + 0x65)" (* "*") (cast_expression "(char *)(lVar8 + 0x65)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x65)" (( "(") (binary_expression "lVar8 + 0x65" (identifier "lVar8") (+ "+") (number_literal "0x65")) () ")"))))) () ")"))) (; ";")) (if_statement "if (0x7fffffffffffffff - local_70 < uVar17) {\n                    \n            FUN_002e12b0("basic_string::append");\n          }" (if "if") (parenthesized_expression "(0x7fffffffffffffff - local_70 < uVar17)" (( "(") (binary_expression "0x7fffffffffffffff - local_70 < uVar17" (binary_expression "0x7fffffffffffffff - local_70" (number_literal "0x7fffffffffffffff") (- "-") (identifier "local_70")) (< "<") (identifier "uVar17")) () ")")) (compound_statement "{\n                    \n            FUN_002e12b0("basic_string::append");\n          }" ({ "{") (expression_statement "FUN_002e12b0("basic_string::append");" (call_expression "FUN_002e12b0("basic_string::append")" (identifier "FUN_002e12b0") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }" (else "else") (compound_statement "{\n          uVar17 = (ulong)*(int *)(lVar8 + 0x58);\n          pbVar19 = pbVar19 + uVar20;\n          if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }\n        }" ({ "{") (expression_statement "uVar17 = (ulong)*(int *)(lVar8 + 0x58);" (assignment_expression "uVar17 = (ulong)*(int *)(lVar8 + 0x58)" (identifier "uVar17") (= "=") (binary_expression "(ulong)*(int *)(lVar8 + 0x58)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(int *)(lVar8 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x58)" (( "(") (binary_expression "lVar8 + 0x58" (identifier "lVar8") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "pbVar19 = pbVar19 + uVar20;" (assignment_expression "pbVar19 = pbVar19 + uVar20" (identifier "pbVar19") (= "=") (binary_expression "pbVar19 + uVar20" (identifier "pbVar19") (+ "+") (identifier "uVar20"))) (; ";")) (if_statement "if (0x7fffffffffffffff - uVar13 < uVar17) {\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }" (if "if") (parenthesized_expression "(0x7fffffffffffffff - uVar13 < uVar17)" (( "(") (binary_expression "0x7fffffffffffffff - uVar13 < uVar17" (binary_expression "0x7fffffffffffffff - uVar13" (number_literal "0x7fffffffffffffff") (- "-") (identifier "uVar13")) (< "<") (identifier "uVar17")) () ")")) (compound_statement "{\n                    \n                    \n            FUN_002e12b0("basic_string::append",pbVar19);\n          }" ({ "{") (expression_statement "FUN_002e12b0("basic_string::append",pbVar19);" (call_expression "FUN_002e12b0("basic_string::append",pbVar19)" (identifier "FUN_002e12b0") (argument_list "("basic_string::append",pbVar19)" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) (, ",") (identifier "pbVar19") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_002aac00(&local_78,pbVar19,uVar17);" (call_expression "FUN_002aac00(&local_78,pbVar19,uVar17)" (identifier "FUN_002aac00") (argument_list "(&local_78,pbVar19,uVar17)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (identifier "pbVar19") (, ",") (identifier "uVar17") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar17 = local_70 + local_e8;" (assignment_expression "uVar17 = local_70 + local_e8" (identifier "uVar17") (= "=") (binary_expression "local_70 + local_e8" (identifier "local_70") (+ "+") (identifier "local_e8"))) (; ";")) (expression_statement "uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;" (assignment_expression "uVar15 = *(uint *)(param_4 + 0x18) & 0xb0" (identifier "uVar15") (= "=") (binary_expression "*(uint *)(param_4 + 0x18) & 0xb0" (pointer_expression "*(uint *)(param_4 + 0x18)" (* "*") (cast_expression "(uint *)(param_4 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x18)" (( "(") (binary_expression "param_4 + 0x18" (identifier "param_4") (+ "+") (number_literal "0x18")) () ")")))) (& "&") (number_literal "0xb0"))) (; ";")) (if_statement "if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }" (if "if") (parenthesized_expression "((*(uint *)(param_4 + 0x18) & 0x200) != 0)" (( "(") (binary_expression "(*(uint *)(param_4 + 0x18) & 0x200) != 0" (parenthesized_expression "(*(uint *)(param_4 + 0x18) & 0x200)" (( "(") (binary_expression "*(uint *)(param_4 + 0x18) & 0x200" (pointer_expression "*(uint *)(param_4 + 0x18)" (* "*") (cast_expression "(uint *)(param_4 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x18)" (( "(") (binary_expression "param_4 + 0x18" (identifier "param_4") (+ "+") (number_literal "0x18")) () ")")))) (& "&") (number_literal "0x200")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);\n      }" ({ "{") (expression_statement "uVar17 = uVar17 + *(long *)(lVar8 + 0x30);" (assignment_expression "uVar17 = uVar17 + *(long *)(lVar8 + 0x30)" (identifier "uVar17") (= "=") (binary_expression "uVar17 + *(long *)(lVar8 + 0x30)" (identifier "uVar17") (+ "+") (pointer_expression "*(long *)(lVar8 + 0x30)" (* "*") (cast_expression "(long *)(lVar8 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x30)" (( "(") (binary_expression "lVar8 + 0x30" (identifier "lVar8") (+ "+") (number_literal "0x30")) () ")")))))) (; ";")) (} "}"))) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" (identifier "local_58") (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_002a9b20(&local_58,uVar17 * 2);" (call_expression "FUN_002a9b20(&local_58,uVar17 * 2)" (identifier "FUN_002a9b20") (argument_list "(&local_58,uVar17 * 2)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (binary_expression "uVar17 * 2" (identifier "uVar17") (* "*") (number_literal "2")) () ")"))) (; ";")) (expression_statement "uVar20 = *(ulong *)(param_4 + 0x10);" (assignment_expression "uVar20 = *(ulong *)(param_4 + 0x10)" (identifier "uVar20") (= "=") (pointer_expression "*(ulong *)(param_4 + 0x10)" (* "*") (cast_expression "(ulong *)(param_4 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x10)" (( "(") (binary_expression "param_4 + 0x10" (identifier "param_4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "ppuVar18 = (undefined1 **)local_7c;" (assignment_expression "ppuVar18 = (undefined1 **)local_7c" (identifier "ppuVar18") (= "=") (cast_expression "(undefined1 **)local_7c" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_7c"))) (; ";")) (expression_statement "bVar10 = uVar15 == 0x10 && uVar17 < uVar20;" (assignment_expression "bVar10 = uVar15 == 0x10 && uVar17 < uVar20" (identifier "bVar10") (= "=") (binary_expression "uVar15 == 0x10 && uVar17 < uVar20" (binary_expression "uVar15 == 0x10" (identifier "uVar15") (== "==") (number_literal "0x10")) (&& "&&") (binary_expression "uVar17 < uVar20" (identifier "uVar17") (< "<") (identifier "uVar20")))) (; ";")) (do_statement "do {\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      } while (&local_78 != ppuVar18);" (do "do") (compound_statement "{\n        uVar11 = local_50;\n        switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }\n        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);\n      }" ({ "{") (expression_statement "uVar11 = local_50;" (assignment_expression "uVar11 = local_50" (identifier "uVar11") (= "=") (identifier "local_50")) (; ";")) (switch_statement "switch(*(undefined1 *)ppuVar18) {\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }" (switch "switch") (parenthesized_expression "(*(undefined1 *)ppuVar18)" (( "(") (pointer_expression "*(undefined1 *)ppuVar18" (* "*") (cast_expression "(undefined1 *)ppuVar18" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar18"))) () ")")) (compound_statement "{\n        case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;\n        case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;\n        case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;\n        case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;\n        case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);\n        }" ({ "{") (case_statement "case 0:\n          if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          break;" (case "case") (number_literal "0") (: ":") (if_statement "if (bVar10) {\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }" (if "if") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (compound_statement "{\n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }" ({ "{") (expression_statement "FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);" (call_expression "FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5)" (identifier "FUN_002aa010") (argument_list "(&local_58,local_50,0,uVar20 - uVar17,(int)param_5)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "local_50") (, ",") (number_literal "0") (, ",") (binary_expression "uVar20 - uVar17" (identifier "uVar20") (- "-") (identifier "uVar17")) (, ",") (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) () ")"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 1:\n          if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }\n          break;" (case "case") (number_literal "1") (: ":") (if_statement "if (bVar10) {\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }\n          else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }" (if "if") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (compound_statement "{\n                    \n            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);\n          }" ({ "{") (expression_statement "FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);" (call_expression "FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5)" (identifier "FUN_002aa010") (argument_list "(&local_58,local_50,0,uVar20 - uVar17,(int)param_5)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "local_50") (, ",") (number_literal "0") (, ",") (binary_expression "uVar20 - uVar17" (identifier "uVar20") (- "-") (identifier "uVar17")) (, ",") (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }" (else "else") (compound_statement "{\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            cVar14 = param_5;\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\nLAB_0030f569:\n            local_58[uVar11] = cVar14;\n            local_50 = uVar11 + 1;\n            local_58[uVar11 + 1] = 0;\n          }" ({ "{") (if_statement "if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" (if "if") (parenthesized_expression "(local_58 == &local_48)" (( "(") (binary_expression "local_58 == &local_48" (identifier "local_58") (== "==") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) () ")")) (compound_statement "{\n              uVar13 = 0xf;\n            }" ({ "{") (expression_statement "uVar13 = 0xf;" (assignment_expression "uVar13 = 0xf" (identifier "uVar13") (= "=") (number_literal "0xf")) (; ";")) (} "}")) (else_clause "else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" (else "else") (compound_statement "{\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" ({ "{") (expression_statement "uVar13 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar13 = CONCAT71(uStack_47,local_48)" (identifier "uVar13") (= "=") (call_expression "CONCAT71(uStack_47,local_48)" (identifier "CONCAT71") (argument_list "(uStack_47,local_48)" (( "(") (identifier "uStack_47") (, ",") (identifier "local_48") () ")")))) (; ";")) (} "}")))) (expression_statement "cVar14 = param_5;" (assignment_expression "cVar14 = param_5" (identifier "cVar14") (= "=") (identifier "param_5")) (; ";")) (if_statement "if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }" (if "if") (parenthesized_expression "(uVar13 < local_50 + 1)" (( "(") (binary_expression "uVar13 < local_50 + 1" (identifier "uVar13") (< "<") (binary_expression "local_50 + 1" (identifier "local_50") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }" ({ "{") (expression_statement "FUN_002a9670(&local_58,local_50,0,0,1);" (call_expression "FUN_002a9670(&local_58,local_50,0,0,1)" (identifier "FUN_002a9670") (argument_list "(&local_58,local_50,0,0,1)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "local_50") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0030f569:\n            local_58[uVar11] = cVar14;" (statement_identifier "LAB_0030f569") (: ":") (expression_statement "local_58[uVar11] = cVar14;" (assignment_expression "local_58[uVar11] = cVar14" (subscript_expression "local_58[uVar11]" (identifier "local_58") ([ "[") (identifier "uVar11") (] "]")) (= "=") (identifier "cVar14")) (; ";"))) (expression_statement "local_50 = uVar11 + 1;" (assignment_expression "local_50 = uVar11 + 1" (identifier "local_50") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_58[uVar11 + 1] = 0;" (assignment_expression "local_58[uVar11 + 1] = 0" (subscript_expression "local_58[uVar11 + 1]" (identifier "local_58") ([ "[") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 2:\n          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }\n          break;" (case "case") (number_literal "2") (: ":") (if_statement "if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }" (if "if") (parenthesized_expression "((*(byte *)(param_4 + 0x19) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_4 + 0x19) & 2) != 0" (parenthesized_expression "(*(byte *)(param_4 + 0x19) & 2)" (( "(") (binary_expression "*(byte *)(param_4 + 0x19) & 2" (pointer_expression "*(byte *)(param_4 + 0x19)" (* "*") (cast_expression "(byte *)(param_4 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x19)" (( "(") (binary_expression "param_4 + 0x19" (identifier "param_4") (+ "+") (number_literal "0x19")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar11 = *(ulong *)(lVar8 + 0x30);\n            puVar7 = *(undefined1 **)(lVar8 + 0x28);\n            if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }\n            goto LAB_0030f5c8;\n          }" ({ "{") (expression_statement "uVar11 = *(ulong *)(lVar8 + 0x30);" (assignment_expression "uVar11 = *(ulong *)(lVar8 + 0x30)" (identifier "uVar11") (= "=") (pointer_expression "*(ulong *)(lVar8 + 0x30)" (* "*") (cast_expression "(ulong *)(lVar8 + 0x30)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x30)" (( "(") (binary_expression "lVar8 + 0x30" (identifier "lVar8") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "puVar7 = *(undefined1 **)(lVar8 + 0x28);" (assignment_expression "puVar7 = *(undefined1 **)(lVar8 + 0x28)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined1 **)(lVar8 + 0x28)" (* "*") (cast_expression "(undefined1 **)(lVar8 + 0x28)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar8 + 0x28)" (( "(") (binary_expression "lVar8 + 0x28" (identifier "lVar8") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (0x7fffffffffffffff - local_50 < uVar11) {\n                    \n              FUN_002e12b0("basic_string::append");\n            }" (if "if") (parenthesized_expression "(0x7fffffffffffffff - local_50 < uVar11)" (( "(") (binary_expression "0x7fffffffffffffff - local_50 < uVar11" (binary_expression "0x7fffffffffffffff - local_50" (number_literal "0x7fffffffffffffff") (- "-") (identifier "local_50")) (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n                    \n              FUN_002e12b0("basic_string::append");\n            }" ({ "{") (expression_statement "FUN_002e12b0("basic_string::append");" (call_expression "FUN_002e12b0("basic_string::append")" (identifier "FUN_002e12b0") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0030f5c8;" (goto "goto") (statement_identifier "LAB_0030f5c8") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 3:\n          if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }\n          break;" (case "case") (number_literal "3") (: ":") (if_statement "if (local_e8 != 0) {\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }" (if "if") (parenthesized_expression "(local_e8 != 0)" (( "(") (binary_expression "local_e8 != 0" (identifier "local_e8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            cVar14 = *local_d0;\n            if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }\n            if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }\n            goto LAB_0030f569;\n          }" ({ "{") (expression_statement "cVar14 = *local_d0;" (assignment_expression "cVar14 = *local_d0" (identifier "cVar14") (= "=") (pointer_expression "*local_d0" (* "*") (identifier "local_d0"))) (; ";")) (if_statement "if (local_58 == &local_48) {\n              uVar13 = 0xf;\n            }\n            else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" (if "if") (parenthesized_expression "(local_58 == &local_48)" (( "(") (binary_expression "local_58 == &local_48" (identifier "local_58") (== "==") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) () ")")) (compound_statement "{\n              uVar13 = 0xf;\n            }" ({ "{") (expression_statement "uVar13 = 0xf;" (assignment_expression "uVar13 = 0xf" (identifier "uVar13") (= "=") (number_literal "0xf")) (; ";")) (} "}")) (else_clause "else {\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" (else "else") (compound_statement "{\n              uVar13 = CONCAT71(uStack_47,local_48);\n            }" ({ "{") (expression_statement "uVar13 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar13 = CONCAT71(uStack_47,local_48)" (identifier "uVar13") (= "=") (call_expression "CONCAT71(uStack_47,local_48)" (identifier "CONCAT71") (argument_list "(uStack_47,local_48)" (( "(") (identifier "uStack_47") (, ",") (identifier "local_48") () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar13 < local_50 + 1) {\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }" (if "if") (parenthesized_expression "(uVar13 < local_50 + 1)" (( "(") (binary_expression "uVar13 < local_50 + 1" (identifier "uVar13") (< "<") (binary_expression "local_50 + 1" (identifier "local_50") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n                    \n              FUN_002a9670(&local_58,local_50,0,0,1);\n            }" ({ "{") (expression_statement "FUN_002a9670(&local_58,local_50,0,0,1);" (call_expression "FUN_002a9670(&local_58,local_50,0,0,1)" (identifier "FUN_002a9670") (argument_list "(&local_58,local_50,0,0,1)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "local_50") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0030f569;" (goto "goto") (statement_identifier "LAB_0030f569") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 4:\n          uVar11 = local_70;\n          puVar7 = local_78;\nLAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);" (case "case") (number_literal "4") (: ":") (expression_statement "uVar11 = local_70;" (assignment_expression "uVar11 = local_70" (identifier "uVar11") (= "=") (identifier "local_70")) (; ";")) (expression_statement "puVar7 = local_78;" (assignment_expression "puVar7 = local_78" (identifier "puVar7") (= "=") (identifier "local_78")) (; ";")) (labeled_statement "LAB_0030f5c8:\n          FUN_002aac00(&local_58,puVar7,uVar11);" (statement_identifier "LAB_0030f5c8") (: ":") (expression_statement "FUN_002aac00(&local_58,puVar7,uVar11);" (call_expression "FUN_002aac00(&local_58,puVar7,uVar11)" (identifier "FUN_002aac00") (argument_list "(&local_58,puVar7,uVar11)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "puVar7") (, ",") (identifier "uVar11") () ")"))) (; ";")))) (} "}"))) (expression_statement "ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);" (assignment_expression "ppuVar18 = (undefined1 **)((long)ppuVar18 + 1)" (identifier "ppuVar18") (= "=") (cast_expression "(undefined1 **)((long)ppuVar18 + 1)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((long)ppuVar18 + 1)" (( "(") (binary_expression "(long)ppuVar18 + 1" (cast_expression "(long)ppuVar18" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "ppuVar18")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(&local_78 != ppuVar18)" (( "(") (binary_expression "&local_78 != ppuVar18" (pointer_expression "&local_78" (& "&") (identifier "local_78")) (!= "!=") (identifier "ppuVar18")) () ")")) (; ";")) (if_statement "if (1 < local_e8) {\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }" (if "if") (parenthesized_expression "(1 < local_e8)" (( "(") (binary_expression "1 < local_e8" (number_literal "1") (< "<") (identifier "local_e8")) () ")")) (compound_statement "{\n        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }\n        FUN_002aac00(&local_58);\n      }" ({ "{") (if_statement "if (0x7fffffffffffffff - local_50 < local_e8 - 1) {\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }" (if "if") (parenthesized_expression "(0x7fffffffffffffff - local_50 < local_e8 - 1)" (( "(") (binary_expression "0x7fffffffffffffff - local_50 < local_e8 - 1" (binary_expression "0x7fffffffffffffff - local_50" (number_literal "0x7fffffffffffffff") (- "-") (identifier "local_50")) (< "<") (binary_expression "local_e8 - 1" (identifier "local_e8") (- "-") (number_literal "1"))) () ")")) (compound_statement "{\n                    \n                    \n          FUN_002e12b0("basic_string::append",local_d0 + 1);\n        }" ({ "{") (expression_statement "FUN_002e12b0("basic_string::append",local_d0 + 1);" (call_expression "FUN_002e12b0("basic_string::append",local_d0 + 1)" (identifier "FUN_002e12b0") (argument_list "("basic_string::append",local_d0 + 1)" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) (, ",") (binary_expression "local_d0 + 1" (identifier "local_d0") (+ "+") (number_literal "1")) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_002aac00(&local_58);" (call_expression "FUN_002aac00(&local_58)" (identifier "FUN_002aac00") (argument_list "(&local_58)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" (identifier "uVar17") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (local_50 < uVar20) {\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }" (if "if") (parenthesized_expression "(local_50 < uVar20)" (( "(") (binary_expression "local_50 < uVar20" (identifier "local_50") (< "<") (identifier "uVar20")) () ")")) (compound_statement "{\n        uVar17 = uVar20;\n        if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }\n      }" ({ "{") (expression_statement "uVar17 = uVar20;" (assignment_expression "uVar17 = uVar20" (identifier "uVar17") (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar15 == 0x20) {\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }\n        else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }" (if "if") (parenthesized_expression "(uVar15 == 0x20)" (( "(") (binary_expression "uVar15 == 0x20" (identifier "uVar15") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n                    \n          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);\n        }" ({ "{") (expression_statement "FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);" (call_expression "FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5)" (identifier "FUN_002aa010") (argument_list "(&local_58,local_50,0,uVar20 - local_50,(int)param_5)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "local_50") (, ",") (number_literal "0") (, ",") (binary_expression "uVar20 - local_50" (identifier "uVar20") (- "-") (identifier "local_50")) (, ",") (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }" (else "else") (compound_statement "{\n          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);\n        }" ({ "{") (expression_statement "FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);" (call_expression "FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5)" (identifier "FUN_002aa010") (argument_list "(&local_58,0,0,uVar20 - local_50,(int)param_5)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (binary_expression "uVar20 - local_50" (identifier "uVar20") (- "-") (identifier "local_50")) (, ",") (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) () ")"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (local_b7 == '\0') {\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }" (if "if") (parenthesized_expression "(local_b7 == '\0')" (( "(") (binary_expression "local_b7 == '\0'" (identifier "local_b7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);\n        local_b7 = (int)uVar17 != lVar8;\n      }" ({ "{") (expression_statement "lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);" (assignment_expression "lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17)" (identifier "lVar8") (= "=") (call_expression "(**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17)" (parenthesized_expression "(**(code **)(*param_2 + 0x60))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x60)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x60)" (* "*") (cast_expression "(code **)(*param_2 + 0x60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x60)" (( "(") (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x60")) () ")"))))) () ")")) (argument_list "(param_2,local_58,(long)(int)uVar17)" (( "(") (identifier "param_2") (, ",") (identifier "local_58") (, ",") (cast_expression "(long)(int)uVar17" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")))) (; ";")) (expression_statement "local_b7 = (int)uVar17 != lVar8;" (assignment_expression "local_b7 = (int)uVar17 != lVar8" (identifier "local_b7") (= "=") (binary_expression "(int)uVar17 != lVar8" (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17")) (!= "!=") (identifier "lVar8"))) (; ";")) (} "}"))) (expression_statement "param_3 = param_3 & 0xffffffffffffff00;" (assignment_expression "param_3 = param_3 & 0xffffffffffffff00" (identifier "param_3") (= "=") (binary_expression "param_3 & 0xffffffffffffff00" (identifier "param_3") (& "&") (number_literal "0xffffffffffffff00"))) (; ";")) (if_statement "if (local_58 != &local_48) {\n        FUN_002a2980(local_58);\n      }" (if "if") (parenthesized_expression "(local_58 != &local_48)" (( "(") (binary_expression "local_58 != &local_48" (identifier "local_58") (!= "!=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) () ")")) (compound_statement "{\n        FUN_002a2980(local_58);\n      }" ({ "{") (expression_statement "FUN_002a2980(local_58);" (call_expression "FUN_002a2980(local_58)" (identifier "FUN_002a2980") (argument_list "(local_58)" (( "(") (identifier "local_58") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_78 != &local_68) {\n        FUN_002a2980();\n      }" (if "if") (parenthesized_expression "(local_78 != &local_68)" (( "(") (binary_expression "local_78 != &local_68" (identifier "local_78") (!= "!=") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) () ")")) (compound_statement "{\n        FUN_002a2980();\n      }" ({ "{") (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" (identifier "FUN_002a2980") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (labeled_statement "LAB_0030f298:\n  auVar21._9_7_ = (int7)(param_3 >> 8);" (statement_identifier "LAB_0030f298") (: ":") (expression_statement "auVar21._9_7_ = (int7)(param_3 >> 8);" (assignment_expression "auVar21._9_7_ = (int7)(param_3 >> 8)" (field_expression "auVar21._9_7_" (identifier "auVar21") (. ".") (field_identifier "_9_7_")) (= "=") (call_expression "(int7)(param_3 >> 8)" (parenthesized_expression "(int7)" (( "(") (identifier "int7") () ")")) (argument_list "(param_3 >> 8)" (( "(") (binary_expression "param_3 >> 8" (identifier "param_3") (>> ">>") (number_literal "8")) () ")")))) (; ";"))) (expression_statement "auVar21[8] = local_b7;" (assignment_expression "auVar21[8] = local_b7" (subscript_expression "auVar21[8]" (identifier "auVar21") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "local_b7")) (; ";")) (expression_statement "*(undefined8 *)(param_4 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(param_4 + 0x10) = 0" (pointer_expression "*(undefined8 *)(param_4 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_4 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x10)" (( "(") (binary_expression "param_4 + 0x10" (identifier "param_4") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar21._0_8_ = param_2;" (assignment_expression "auVar21._0_8_ = param_2" (field_expression "auVar21._0_8_" (identifier "auVar21") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "param_2")) (; ";")) (return_statement "return auVar21;" (return "return") (identifier "auVar21") (; ";")) (ERROR "}" (} "}"))

/* std::ostreambuf_iterator<char, std::char_traits<char> > std::money_put<char,
   std::ostreambuf_iterator<char, std::char_traits<char> >
   >::_M_insert<false>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&,
   char, std::string const&) const */

type_5  [16]
std::money_put<var_2,var_10::ostreambuf_iterator<var_2,var_10::var_1<var_2>>>::var_3<false>
          (var_6 param_1,var_4 *var_5,type_2 var_46,var_4 var_11,var_2 param_5,
          var_6 *var_7)

{
  long *plVar1;
  int var_24;
  type_1 *var_21;
  type_2 var_13;
  type_3 *var_22;
  char *pcVar6;
  long var_14;
  var_8<var_2,false> *var_16;
  bool bVar8;
  type_2 var_42;
  type_2 var_33;
  type_2 var_34;
  char cVar12;
  type_4 var_39;
  type_3 *var_20;
  char **var_43;
  type_3 *var_19;
  type_2 var_27;
  type_5 auVar18 [16];
  type_2 var_38;
  char *var_44;
  char var_45;
  type_5 local_7c [4];
  char *var_31;
  type_2 var_29;
  char local_68;
  type_6 uStack_67;
  type_5 *var_40;
  type_2 var_41;
  type_5 local_48;
  type_6 uStack_47;
  
  var_45 = (char)var_46;
  var_21 = var_9<var_10::type_1<var_2>>((type_7 *)(var_11 + 0xd0));
  var_13 = type_7::id::var_12((type_8 *)&moneypunct<var_2,false>::type_8);
  plVar1 = (long *)(*(long *)(*(long *)(var_11 + 0xd0) + 0x18) + var_13 * 8);
  var_14 = *plVar1;
  if (var_14 == 0) {
                    /* try { // try from 0030f7ed to 0030f7f1 has its CatchHandler @ 0030fa03 */
    var_16 = (var_8<var_2,false> *)var_15(0x70);
    *(type_9 *)(var_16 + 8) = 0;
    *(var_6 *)(var_16 + 0x10) = 0;
    *(var_6 *)(var_16 + 0x18) = 0;
    var_16[0x22] = (var_8<var_2,false>)0x0;
    *(type_10 ***)var_16 = &PTR____moneypunct_cache_003f3258;
    *(type_11 *)(var_16 + 0x20) = 0;
    *(var_6 *)(var_16 + 0x28) = 0;
    *(var_6 *)(var_16 + 0x30) = 0;
    *(var_6 *)(var_16 + 0x38) = 0;
    *(var_6 *)(var_16 + 0x40) = 0;
    *(var_6 *)(var_16 + 0x48) = 0;
    *(var_6 *)(var_16 + 0x50) = 0;
    *(var_6 *)(var_16 + 0x58) = 0;
    *(type_9 *)(var_16 + 0x60) = 0;
    var_16[0x6f] = (var_8<var_2,false>)0x0;
                    /* try { // try from 0030f870 to 0030f874 has its CatchHandler @ 0030fa01 */
    var_8<var_2,false>::var_17(var_16,(type_7 *)(var_11 + 0xd0));
    locale::_Impl::var_18(*(type_12 **)(var_11 + 0xd0),(type_13 *)var_16,var_13);
    var_14 = *plVar1;
  }
  var_19 = (type_3 *)*var_7;
  if (*var_19 == *(type_3 *)(var_14 + 100)) {
    local_7c = *(type_5 (*) [4])(var_14 + 0x60);
    if (var_7[1] == 0) goto LAB_0030f298;
    var_44 = *(char **)(var_14 + 0x48);
    var_19 = var_19 + 1;
    var_38 = *(type_2 *)(var_14 + 0x50);
  }
  else {
    local_7c = *(type_5 (*) [4])(var_14 + 0x5c);
    var_44 = *(char **)(var_14 + 0x38);
    var_38 = *(type_2 *)(var_14 + 0x40);
  }
  var_20 = var_19 + var_7[1];
  if ((var_19 < var_20) &&
     (var_22 = var_19, (*(type_3 *)(*(long *)(var_21 + 0x30) + 1 + (type_2)*var_19 * 2) & 8) != 0)) {
    do {
      var_22 = var_22 + 1;
      if (var_20 == var_22) {
        var_13 = (long)var_20 - (long)var_19;
        goto joined_r0x0030f2c6;
      }
    } while ((*(type_3 *)(*(long *)(var_21 + 0x30) + 1 + (type_2)*var_22 * 2) & 8) != 0);
    var_13 = (long)var_22 - (long)var_19;
joined_r0x0030f2c6:
    if (var_13 != 0) {
      var_29 = 0;
      var_31 = &local_68;
      local_68 = '\0';
                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */
      std::string::var_23((type_14 *)&var_31,var_13 * 2);
      var_24 = *(int *)(var_14 + 0x58);
      var_27 = var_13 - (long)var_24;
      if (0 < (long)var_27) {
        if (var_24 < 0) {
          var_27 = var_13;
        }
        if (*(long *)(var_14 + 0x18) == 0) {
                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */
          std::string::var_25((type_14 *)&var_31,0,var_29,(char *)var_19,var_27);
          var_24 = *(int *)(var_14 + 0x58);
        }
        else {
          std::string::var_26((type_14 *)&var_31,0,var_29,var_27 * 2,'\0');
          pcVar6 = var_28<var_2>
                             (var_31,*(char *)(var_14 + 0x22),*(char **)(var_14 + 0x10),
                              *(type_2 *)(var_14 + 0x18),(char *)var_19,(char *)(var_19 + var_27));
          if (var_29 < (type_2)((long)pcVar6 - (long)var_31)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */
            var_30
                      ("%s: __pos (which is %zu) > this->size() (which is %zu)",
                       "basic_string::erase");
          }
          *pcVar6 = '\0';
          var_24 = *(int *)(var_14 + 0x58);
          var_29 = (long)pcVar6 - (long)var_31;
        }
      }
      var_42 = var_29;
      if (0 < var_24) {
        cVar12 = *(char *)(var_14 + 0x21);
        var_34 = var_29 + 1;
        if (var_31 == &local_68) {
          var_33 = 0xf;
        }
        else {
          var_33 = var_32(uStack_67,local_68);
        }
        if (var_33 < var_34) {
                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */
          std::string::var_35((type_14 *)&var_31,var_29,0,(char *)0x0,1);
        }
        var_31[var_42] = cVar12;
        var_31[var_34] = '\0';
        var_29 = var_34;
        if ((long)var_27 < 0) {
                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */
          std::string::var_26((type_14 *)&var_31,var_34,0,-var_27,*(char *)(var_14 + 0x65));
          if (0x7fffffffffffffff - var_29 < var_13) {
                    /* WARNING: Subroutine does not return */
            var_36("basic_string::append");
          }
        }
        else {
          var_13 = (type_2)*(int *)(var_14 + 0x58);
          var_19 = var_19 + var_27;
          if (0x7fffffffffffffff - var_34 < var_13) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */
            var_36("basic_string::append");
          }
        }
                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */
        std::string::var_37((type_14 *)&var_31,(char *)var_19,var_13);
      }
      var_13 = var_29 + var_38;
      var_39 = *(type_4 *)(var_11 + 0x18) & 0xb0;
      if ((*(type_4 *)(var_11 + 0x18) & 0x200) != 0) {
        var_13 = var_13 + *(long *)(var_14 + 0x30);
      }
      var_41 = 0;
      var_40 = &local_48;
      local_48 = 0;
                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */
      std::string::var_23((type_14 *)&var_40,var_13 * 2);
      var_27 = *(type_2 *)(var_11 + 0x10);
      var_43 = (char **)local_7c;
      bVar8 = var_39 == 0x10 && var_13 < var_27;
      do {
        var_42 = var_41;
        switch(*(type_5 *)var_43) {
        case 0:
          if (bVar8) {
            std::string::var_26((type_14 *)&var_40,var_41,0,var_27 - var_13,param_5);
          }
          break;
        case 1:
          if (bVar8) {
                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */
            std::string::var_26((type_14 *)&var_40,var_41,0,var_27 - var_13,param_5);
          }
          else {
            if (var_40 == &local_48) {
              var_34 = 0xf;
            }
            else {
              var_34 = var_32(uStack_47,local_48);
            }
            cVar12 = param_5;
            if (var_34 < var_41 + 1) {
                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */
              std::string::var_35((type_14 *)&var_40,var_41,0,(char *)0x0,1);
            }
LAB_0030f569:
            var_40[var_42] = cVar12;
            var_41 = var_42 + 1;
            var_40[var_42 + 1] = 0;
          }
          break;
        case 2:
          if ((*(type_3 *)(var_11 + 0x19) & 2) != 0) {
            var_42 = *(type_2 *)(var_14 + 0x30);
            pcVar6 = *(char **)(var_14 + 0x28);
            if (0x7fffffffffffffff - var_41 < var_42) {
                    /* WARNING: Subroutine does not return */
              var_36("basic_string::append");
            }
            goto LAB_0030f5c8;
          }
          break;
        case 3:
          if (var_38 != 0) {
            cVar12 = *var_44;
            if (var_40 == &local_48) {
              var_34 = 0xf;
            }
            else {
              var_34 = var_32(uStack_47,local_48);
            }
            if (var_34 < var_41 + 1) {
                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */
              std::string::var_35((type_14 *)&var_40,var_41,0,(char *)0x0,1);
            }
            goto LAB_0030f569;
          }
          break;
        case 4:
          var_42 = var_29;
          pcVar6 = var_31;
LAB_0030f5c8:
          std::string::var_37((type_14 *)&var_40,pcVar6,var_42);
        }
        var_43 = (char **)((long)var_43 + 1);
      } while (&var_31 != var_43);
      if (1 < var_38) {
        if (0x7fffffffffffffff - var_41 < var_38 - 1) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */
          var_36("basic_string::append");
        }
        std::string::var_37((type_14 *)&var_40,var_44 + 1,var_38 - 1);
      }
      var_13 = var_41;
      if (var_41 < var_27) {
        var_13 = var_27;
        if (var_39 == 0x20) {
                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */
          std::string::var_26((type_14 *)&var_40,var_41,0,var_27 - var_41,param_5);
        }
        else {
          std::string::var_26((type_14 *)&var_40,0,0,var_27 - var_41,param_5);
        }
      }
      if (var_45 == '\0') {
        var_14 = (**(type_15 **)(*var_5 + 0x60))(var_5,var_40,(long)(int)var_13);
        var_45 = (int)var_13 != var_14;
      }
      var_46 = var_46 & 0xffffffffffffff00;
      if (var_40 != &local_48) {
        var_47(var_40);
      }
      if (var_31 != &local_68) {
        var_47(var_31);
      }
    }
  }
LAB_0030f298:
  auVar18._9_7_ = (int7)(var_46 >> 8);
  auVar18[8] = var_45;
  *(var_6 *)(var_11 + 0x10) = 0;
  auVar18._0_8_ = var_5;
  return auVar18;
}


(translation_unit (expression_statement (subscript_expression argument: (identifier) index: (number_literal)) (MISSING ";")) (declaration type: (macro_type_specifier name: (identifier) type: (type_descriptor type: (type_identifier)) (MISSING ")")) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier) (pointer_declarator declarator: (identifier))) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (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: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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 (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) 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_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator)) size: (number_literal))) 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_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator)) size: (number_literal))) 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: (sized_type_specifier) 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: (compound_statement (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: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) 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: (sized_type_specifier) 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: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) 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: (sized_type_specifier) 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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content))))))) (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: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (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: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (sized_type_specifier)) 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)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (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: (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)) (identifier))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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 (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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) (number_literal) (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (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 (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: (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: (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))))))) (goto_statement label: (statement_identifier)))) (break_statement)) (case_statement value: (number_literal) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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) (number_literal) (number_literal)))))) (goto_statement label: (statement_identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (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: (sized_type_specifier)) 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: (number_literal) right: (identifier))) consequence: (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)) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (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)))))))))) (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) (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))))))) (labeled_statement label: (statement_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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (return_statement (identifier)) (ERROR))

undefined1  [16]
MASKED(undefined8 param_1,long *param_2,ulong param_3,long param_4,char param_5,
            undefined8 *param_6)

{
  long *plVar1;
  undefined1 uVar2;
  int iVar3;
  long lVar4;
  long lVar5;
  byte *pbVar6;
  undefined1 *puVar7;
  long lVar8;
  undefined8 *puVar9;
  bool bVar10;
  ulong uVar11;
  ulong uVar12;
  ulong uVar13;
  char cVar14;
  uint uVar15;
  byte *pbVar16;
  ulong uVar17;
  undefined1 **ppuVar18;
  byte *pbVar19;
  ulong uVar20;
  undefined1 auVar21 [16];
  ulong local_e8;
  char *local_d0;
  char local_b7;
  undefined1 local_7c [4];
  undefined1 *local_78;
  ulong local_70;
  undefined1 local_68;
  undefined7 uStack_67;
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  
  local_b7 = (char)param_3;
  lVar4 = FUN_002b4380(param_4 + 0xd0);
  lVar5 = FUN_002a50c0(&DAT_00405ef0);
  plVar1 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar5 * 8);
  lVar8 = *plVar1;
  if (lVar8 == 0) {
                    /* try { // try from 0030f7ed to 0030f7f1 has its CatchHandler @ 0030fa03 */
    puVar9 = (undefined8 *)FUN_002a11b0(0x70);
    *(undefined4 *)(puVar9 + 1) = 0;
    puVar9[2] = 0;
    puVar9[3] = 0;
    *(undefined1 *)((long)puVar9 + 0x22) = 0;
    *puVar9 = &PTR_FUN_003f3258;
    *(undefined2 *)(puVar9 + 4) = 0;
    puVar9[5] = 0;
    puVar9[6] = 0;
    puVar9[7] = 0;
    puVar9[8] = 0;
    puVar9[9] = 0;
    puVar9[10] = 0;
    puVar9[0xb] = 0;
    *(undefined4 *)(puVar9 + 0xc) = 0;
    *(undefined1 *)((long)puVar9 + 0x6f) = 0;
                    /* try { // try from 0030f870 to 0030f874 has its CatchHandler @ 0030fa01 */
    FUN_002b55a0(puVar9,param_4 + 0xd0);
    FUN_002a5530(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar5);
    lVar8 = *plVar1;
  }
  pbVar19 = (byte *)*param_6;
  if (*pbVar19 == *(byte *)(lVar8 + 100)) {
    local_7c = *(undefined1 (*) [4])(lVar8 + 0x60);
    if (param_6[1] == 0) goto LAB_0030f298;
    local_d0 = *(char **)(lVar8 + 0x48);
    pbVar19 = pbVar19 + 1;
    local_e8 = *(ulong *)(lVar8 + 0x50);
  }
  else {
    local_7c = *(undefined1 (*) [4])(lVar8 + 0x5c);
    local_d0 = *(char **)(lVar8 + 0x38);
    local_e8 = *(ulong *)(lVar8 + 0x40);
  }
  pbVar16 = pbVar19 + param_6[1];
  if ((pbVar19 < pbVar16) &&
     (pbVar6 = pbVar19, (*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar19 * 2) & 8) != 0)) {
    do {
      pbVar6 = pbVar6 + 1;
      if (pbVar16 == pbVar6) {
        uVar17 = (long)pbVar16 - (long)pbVar19;
        goto joined_r0x0030f2c6;
      }
    } while ((*(byte *)(*(long *)(lVar4 + 0x30) + 1 + (ulong)*pbVar6 * 2) & 8) != 0);
    uVar17 = (long)pbVar6 - (long)pbVar19;
joined_r0x0030f2c6:
    if (uVar17 != 0) {
      local_70 = 0;
      local_78 = &local_68;
      local_68 = 0;
                    /* try { // try from 0030f2fc to 0030f33c has its CatchHandler @ 0030f9c3 */
      FUN_002a9b20(&local_78,uVar17 * 2);
      iVar3 = *(int *)(lVar8 + 0x58);
      uVar20 = uVar17 - (long)iVar3;
      if (0 < (long)uVar20) {
        if (iVar3 < 0) {
          uVar20 = uVar17;
        }
        if (*(long *)(lVar8 + 0x18) == 0) {
                    /* try { // try from 0030f89d to 0030f8a1 has its CatchHandler @ 0030f9c3 */
          FUN_002aa2b0(&local_78,0,local_70,pbVar19,uVar20);
          iVar3 = *(int *)(lVar8 + 0x58);
        }
        else {
          FUN_002aa010(&local_78,0,local_70,uVar20 * 2,0);
          puVar7 = (undefined1 *)
                   FUN_002b6230(local_78,(int)*(char *)(lVar8 + 0x22),*(undefined8 *)(lVar8 + 0x10),
                                *(undefined8 *)(lVar8 + 0x18),pbVar19,pbVar19 + uVar20);
          if (local_70 < (ulong)((long)puVar7 - (long)local_78)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0030f995 to 0030f999 has its CatchHandler @ 0030f9c3 */
            FUN_002e1330("%s: __pos (which is %zu) > this->size() (which is %zu)",
                         "basic_string::erase");
          }
          *puVar7 = 0;
          iVar3 = *(int *)(lVar8 + 0x58);
          local_70 = (long)puVar7 - (long)local_78;
        }
      }
      uVar11 = local_70;
      if (0 < iVar3) {
        uVar2 = *(undefined1 *)(lVar8 + 0x21);
        uVar13 = local_70 + 1;
        if (local_78 == &local_68) {
          uVar12 = 0xf;
        }
        else {
          uVar12 = CONCAT71(uStack_67,local_68);
        }
        if (uVar12 < uVar13) {
                    /* try { // try from 0030f933 to 0030f937 has its CatchHandler @ 0030f9c3 */
          FUN_002a9670(&local_78,local_70,0,0,1);
        }
        local_78[uVar11] = uVar2;
        local_78[uVar13] = 0;
        local_70 = uVar13;
        if ((long)uVar20 < 0) {
                    /* try { // try from 0030f8d4 to 0030f8d8 has its CatchHandler @ 0030f9c3 */
          FUN_002aa010(&local_78,uVar13,0,-uVar20,(int)*(char *)(lVar8 + 0x65));
          if (0x7fffffffffffffff - local_70 < uVar17) {
                    /* WARNING: Subroutine does not return */
            FUN_002e12b0("basic_string::append");
          }
        }
        else {
          uVar17 = (ulong)*(int *)(lVar8 + 0x58);
          pbVar19 = pbVar19 + uVar20;
          if (0x7fffffffffffffff - uVar13 < uVar17) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0030f9ad to 0030f9bd has its CatchHandler @ 0030f9c3 */
            FUN_002e12b0("basic_string::append",pbVar19);
          }
        }
                    /* try { // try from 0030f7b2 to 0030f7b6 has its CatchHandler @ 0030f9c3 */
        FUN_002aac00(&local_78,pbVar19,uVar17);
      }
      uVar17 = local_70 + local_e8;
      uVar15 = *(uint *)(param_4 + 0x18) & 0xb0;
      if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {
        uVar17 = uVar17 + *(long *)(lVar8 + 0x30);
      }
      local_50 = 0;
      local_58 = &local_48;
      local_48 = 0;
                    /* try { // try from 0030f3e5 to 0030f6fd has its CatchHandler @ 0030f9be */
      FUN_002a9b20(&local_58,uVar17 * 2);
      uVar20 = *(ulong *)(param_4 + 0x10);
      ppuVar18 = (undefined1 **)local_7c;
      bVar10 = uVar15 == 0x10 && uVar17 < uVar20;
      do {
        uVar11 = local_50;
        switch(*(undefined1 *)ppuVar18) {
        case 0:
          if (bVar10) {
            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);
          }
          break;
        case 1:
          if (bVar10) {
                    /* try { // try from 0030f7da to 0030f7de has its CatchHandler @ 0030f9be */
            FUN_002aa010(&local_58,local_50,0,uVar20 - uVar17,(int)param_5);
          }
          else {
            if (local_58 == &local_48) {
              uVar13 = 0xf;
            }
            else {
              uVar13 = CONCAT71(uStack_47,local_48);
            }
            cVar14 = param_5;
            if (uVar13 < local_50 + 1) {
                    /* try { // try from 0030f955 to 0030f959 has its CatchHandler @ 0030f9be */
              FUN_002a9670(&local_58,local_50,0,0,1);
            }
LAB_0030f569:
            local_58[uVar11] = cVar14;
            local_50 = uVar11 + 1;
            local_58[uVar11 + 1] = 0;
          }
          break;
        case 2:
          if ((*(byte *)(param_4 + 0x19) & 2) != 0) {
            uVar11 = *(ulong *)(lVar8 + 0x30);
            puVar7 = *(undefined1 **)(lVar8 + 0x28);
            if (0x7fffffffffffffff - local_50 < uVar11) {
                    /* WARNING: Subroutine does not return */
              FUN_002e12b0("basic_string::append");
            }
            goto LAB_0030f5c8;
          }
          break;
        case 3:
          if (local_e8 != 0) {
            cVar14 = *local_d0;
            if (local_58 == &local_48) {
              uVar13 = 0xf;
            }
            else {
              uVar13 = CONCAT71(uStack_47,local_48);
            }
            if (uVar13 < local_50 + 1) {
                    /* try { // try from 0030f90f to 0030f913 has its CatchHandler @ 0030f9be */
              FUN_002a9670(&local_58,local_50,0,0,1);
            }
            goto LAB_0030f569;
          }
          break;
        case 4:
          uVar11 = local_70;
          puVar7 = local_78;
LAB_0030f5c8:
          FUN_002aac00(&local_58,puVar7,uVar11);
        }
        ppuVar18 = (undefined1 **)((long)ppuVar18 + 1);
      } while (&local_78 != ppuVar18);
      if (1 < local_e8) {
        if (0x7fffffffffffffff - local_50 < local_e8 - 1) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0030f9a1 to 0030f9a5 has its CatchHandler @ 0030f9be */
          FUN_002e12b0("basic_string::append",local_d0 + 1);
        }
        FUN_002aac00(&local_58);
      }
      uVar17 = local_50;
      if (local_50 < uVar20) {
        uVar17 = uVar20;
        if (uVar15 == 0x20) {
                    /* try { // try from 0030f8b0 to 0030f8b4 has its CatchHandler @ 0030f9be */
          FUN_002aa010(&local_58,local_50,0,uVar20 - local_50,(int)param_5);
        }
        else {
          FUN_002aa010(&local_58,0,0,uVar20 - local_50,(int)param_5);
        }
      }
      if (local_b7 == '\0') {
        lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)uVar17);
        local_b7 = (int)uVar17 != lVar8;
      }
      param_3 = param_3 & 0xffffffffffffff00;
      if (local_58 != &local_48) {
        FUN_002a2980(local_58);
      }
      if (local_78 != &local_68) {
        FUN_002a2980();
      }
    }
  }
LAB_0030f298:
  auVar21._9_7_ = (int7)(param_3 >> 8);
  auVar21[8] = local_b7;
  *(undefined8 *)(param_4 + 0x10) = 0;
  auVar21._0_8_ = param_2;
  return auVar21;
}

