
/* std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_put<wchar_t,
   std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >
   >::_M_insert<true>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&,
   wchar_t, std::wstring const&) const */

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

{
  ulong uVar1;
  long *plVar2;
  undefined4 uVar3;
  wchar_t wVar4;
  int iVar5;
  ctype *pcVar6;
  ulong uVar7;
  long lVar8;
  wchar_t *pwVar9;
  long lVar10;
  __moneypunct_cache<wchar_t,true> *this;
  bool bVar11;
  ulong uVar12;
  ulong uVar13;
  uint uVar14;
  wchar_t *pwVar15;
  wchar_t **ppwVar16;
  ulong uVar17;
  undefined1 auVar18 [16];
  ulong local_f8;
  char local_e5;
  undefined4 *local_d0;
  ulong local_c8;
  undefined1 local_7c [4];
  wchar_t *local_78;
  ulong local_70;
  wchar_t local_68;
  undefined4 uStack_64;
  undefined4 *local_58;
  ulong local_50;
  undefined4 local_48;
  undefined4 uStack_44;
  
  local_e5 = (char)param_3;
  pcVar6 = use_facet<std::ctype<wchar_t>>((locale *)(param_4 + 0xd0));
  uVar7 = locale::id::_M_id((id *)&moneypunct<wchar_t,true>::id);
  plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar7 * 8);
  lVar10 = *plVar2;
  if (lVar10 == 0) {
                    /* try { // try from 00338495 to 00338499 has its CatchHandler @ 003386d8 */
    this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0);
    *(undefined4 *)(this + 8) = 0;
    *(undefined8 *)(this + 0x10) = 0;
    *(undefined8 *)(this + 0x18) = 0;
    this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0;
    *(undefined ***)this = &PTR____moneypunct_cache_0043b348;
    *(undefined8 *)(this + 0x24) = 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;
    *(undefined8 *)(this + 0x60) = 0;
    *(undefined4 *)(this + 0x68) = 0;
    this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0;
                    /* try { // try from 0033851d to 00338521 has its CatchHandler @ 003386d6 */
    __moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_4 + 0xd0));
    locale::_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar7);
    lVar10 = *plVar2;
  }
  pwVar15 = (wchar_t *)*param_6;
  if (*pwVar15 == *(wchar_t *)(lVar10 + 0x6c)) {
    local_7c = *(undefined1 (*) [4])(lVar10 + 0x68);
    local_d0 = *(undefined4 **)(lVar10 + 0x50);
    local_f8 = *(ulong *)(lVar10 + 0x58);
    if (param_6[1] != 0) {
      pwVar15 = pwVar15 + 1;
    }
  }
  else {
    local_7c = *(undefined1 (*) [4])(lVar10 + 100);
    local_f8 = *(ulong *)(lVar10 + 0x48);
    local_d0 = *(undefined4 **)(lVar10 + 0x40);
  }
  lVar8 = (**(code **)(*(long *)pcVar6 + 0x28))(pcVar6,0x800,pwVar15);
  uVar7 = lVar8 - (long)pwVar15 >> 2;
  if (uVar7 == 0) goto LAB_00337f31;
  local_70 = 0;
  local_78 = &local_68;
  local_68 = L'\0';
                    /* try { // try from 00337fc4 to 0033800a has its CatchHandler @ 00338695 */
  std::wstring::reserve((wstring *)&local_78,uVar7 * 2);
  iVar5 = *(int *)(lVar10 + 0x60);
  uVar17 = uVar7 - (long)iVar5;
  if (0 < (long)uVar17) {
    if (iVar5 < 0) {
      uVar17 = uVar7;
    }
    if (*(long *)(lVar10 + 0x18) == 0) {
                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */
      std::wstring::_M_replace((wstring *)&local_78,0,local_70,pwVar15,uVar17);
      iVar5 = *(int *)(lVar10 + 0x60);
    }
    else {
      std::wstring::_M_replace_aux((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0');
      pwVar9 = __add_grouping<wchar_t>
                         (local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),
                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17);
      uVar12 = (long)pwVar9 - (long)local_78 >> 2;
      if (local_70 < uVar12) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */
        __throw_out_of_range_fmt
                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase");
      }
      *pwVar9 = L'\0';
      iVar5 = *(int *)(lVar10 + 0x60);
      local_70 = uVar12;
    }
  }
  uVar12 = local_70;
  if (0 < iVar5) {
    wVar4 = *(wchar_t *)(lVar10 + 0x24);
    uVar1 = local_70 + 1;
    if (local_78 == &local_68) {
      uVar13 = 3;
    }
    else {
      uVar13 = CONCAT44(uStack_64,local_68);
    }
    if (uVar13 < uVar1) {
                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */
      std::wstring::_M_mutate((wstring *)&local_78,local_70,0,(wchar_t *)0x0,1);
    }
    local_70 = uVar12 + 1;
    local_78[uVar12] = wVar4;
    local_78[uVar12 + 1] = L'\0';
    if ((long)uVar17 < 0) {
      std::wstring::_M_replace_aux((wstring *)&local_78,uVar1,0,-uVar17,*(wchar_t *)(lVar10 + 0x70))
      ;
      if (0x1fffffffffffffff - local_70 < uVar7) {
                    /* WARNING: Subroutine does not return */
        __throw_length_error("basic_string::append");
      }
    }
    else {
      uVar7 = (ulong)*(int *)(lVar10 + 0x60);
      pwVar15 = pwVar15 + uVar17;
      if (0x1fffffffffffffff - local_70 < uVar7) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */
        __throw_length_error("basic_string::append");
      }
    }
                    /* try { // try from 00338454 to 00338458 has its CatchHandler @ 00338695 */
    std::wstring::_M_append((wstring *)&local_78,pwVar15,uVar7);
  }
  uVar7 = local_70 + local_f8;
  uVar14 = *(uint *)(param_4 + 0x18) & 0xb0;
  if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {
    uVar7 = uVar7 + *(long *)(lVar10 + 0x38);
  }
  local_50 = 0;
  local_58 = &local_48;
  local_48 = 0;
                    /* try { // try from 003380b6 to 003383ad has its CatchHandler @ 0033869a */
  std::wstring::reserve((wstring *)&local_58,uVar7 * 2);
  local_c8 = *(ulong *)(param_4 + 0x10);
  ppwVar16 = (wchar_t **)local_7c;
  bVar11 = uVar14 == 0x10 && uVar7 < local_c8;
  do {
    uVar17 = local_50;
    switch(*(undefined1 *)ppwVar16) {
    case 0:
      if (bVar11) {
        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);
      }
      break;
    case 1:
      if (bVar11) {
                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */
        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);
      }
      else {
        if (local_58 == &local_48) {
          uVar12 = 3;
        }
        else {
          uVar12 = CONCAT44(uStack_44,local_48);
        }
        if (uVar12 < local_50 + 1) {
                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */
          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);
        }
        local_58[uVar17] = param_5;
        local_50 = uVar17 + 1;
        local_58[uVar17 + 1] = 0;
      }
      break;
    case 2:
      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {
        uVar17 = *(ulong *)(lVar10 + 0x38);
        pwVar15 = *(wchar_t **)(lVar10 + 0x30);
        if (0x1fffffffffffffff - local_50 < uVar17) {
                    /* WARNING: Subroutine does not return */
          __throw_length_error("basic_string::append");
        }
        goto LAB_00338268;
      }
      break;
    case 3:
      if (local_f8 != 0) {
        uVar3 = *local_d0;
        if (local_58 == &local_48) {
          uVar12 = 3;
        }
        else {
          uVar12 = CONCAT44(uStack_44,local_48);
        }
        if (uVar12 < local_50 + 1) {
          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);
        }
        local_58[uVar17] = uVar3;
        local_50 = uVar17 + 1;
        local_58[uVar17 + 1] = 0;
      }
      break;
    case 4:
      uVar17 = local_70;
      pwVar15 = local_78;
LAB_00338268:
      std::wstring::_M_append((wstring *)&local_58,pwVar15,uVar17);
    }
    ppwVar16 = (wchar_t **)((long)ppwVar16 + 1);
  } while (&local_78 != ppwVar16);
  if (local_f8 < 2) {
    if (local_50 < local_c8) goto LAB_00338340;
LAB_003382a4:
    local_c8 = local_50;
  }
  else {
    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */
      __throw_length_error("basic_string::append");
    }
    std::wstring::_M_append((wstring *)&local_58,local_d0 + 1,local_f8 - 1);
    if (local_c8 <= local_50) goto LAB_003382a4;
LAB_00338340:
    if (uVar14 == 0x20) {
                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */
      std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5);
    }
    else {
      std::wstring::_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);
    }
  }
  if (local_e5 == '\0') {
    lVar10 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);
    local_e5 = (int)local_c8 != lVar10;
  }
  param_3 = param_3 & 0xffffffffffffff00;
  if (local_58 != &local_48) {
    operator_delete(local_58);
  }
  if (local_78 != &local_68) {
    operator_delete(local_78);
  }
LAB_00337f31:
  auVar18._9_7_ = (int7)(param_3 >> 8);
  auVar18[8] = local_e5;
  *(undefined8 *)(param_4 + 0x10) = 0;
  auVar18._0_8_ = param_2;
  return auVar18;
}



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

{
  ulong uVar1;
  long *plVar2;
  undefined4 uVar3;
  int iVar4;
  long *plVar5;
  long lVar6;
  undefined4 *puVar7;
  long lVar8;
  undefined8 *puVar9;
  bool bVar10;
  ulong uVar11;
  ulong uVar12;
  uint uVar13;
  int *piVar14;
  ulong uVar15;
  undefined4 **ppuVar16;
  ulong uVar17;
  undefined1 auVar18 [16];
  ulong local_f8;
  char local_e5;
  undefined4 *local_d0;
  ulong local_c8;
  undefined1 local_7c [4];
  undefined4 *local_78;
  ulong local_70;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 *local_58;
  ulong local_50;
  undefined4 local_48;
  undefined4 uStack_44;
  
  local_e5 = (char)param_3;
  plVar5 = (long *)FUN_00327630(param_4 + 0xd0);
  lVar6 = FUN_002dd3b0(&DAT_0044bd28);
  plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8);
  lVar8 = *plVar2;
  if (lVar8 == 0) {
                    /* try { // try from 00338495 to 00338499 has its CatchHandler @ 003386d8 */
    puVar9 = (undefined8 *)FUN_002d94a0(0xa0);
    *(undefined4 *)(puVar9 + 1) = 0;
    puVar9[2] = 0;
    puVar9[3] = 0;
    *(undefined1 *)(puVar9 + 4) = 0;
    *puVar9 = &PTR_FUN_0043b348;
    *(undefined8 *)((long)puVar9 + 0x24) = 0;
    puVar9[6] = 0;
    puVar9[7] = 0;
    puVar9[8] = 0;
    puVar9[9] = 0;
    puVar9[10] = 0;
    puVar9[0xb] = 0;
    puVar9[0xc] = 0;
    *(undefined4 *)(puVar9 + 0xd) = 0;
    *(undefined1 *)(puVar9 + 0x13) = 0;
                    /* try { // try from 0033851d to 00338521 has its CatchHandler @ 003386d6 */
    FUN_00328110(puVar9,param_4 + 0xd0);
    FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);
    lVar8 = *plVar2;
  }
  piVar14 = (int *)*param_6;
  if (*piVar14 == *(int *)(lVar8 + 0x6c)) {
    local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);
    local_d0 = *(undefined4 **)(lVar8 + 0x50);
    local_f8 = *(ulong *)(lVar8 + 0x58);
    if (param_6[1] != 0) {
      piVar14 = piVar14 + 1;
    }
  }
  else {
    local_7c = *(undefined1 (*) [4])(lVar8 + 100);
    local_f8 = *(ulong *)(lVar8 + 0x48);
    local_d0 = *(undefined4 **)(lVar8 + 0x40);
  }
  lVar6 = (**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1]);
  uVar15 = lVar6 - (long)piVar14 >> 2;
  if (uVar15 == 0) goto LAB_00337f31;
  local_70 = 0;
  local_78 = &local_68;
  local_68 = 0;
                    /* try { // try from 00337fc4 to 0033800a has its CatchHandler @ 00338695 */
  FUN_002def60(&local_78,uVar15 * 2);
  iVar4 = *(int *)(lVar8 + 0x60);
  uVar17 = uVar15 - (long)iVar4;
  if (0 < (long)uVar17) {
    if (iVar4 < 0) {
      uVar17 = uVar15;
    }
    if (*(long *)(lVar8 + 0x18) == 0) {
                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */
      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);
      iVar4 = *(int *)(lVar8 + 0x60);
    }
    else {
      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);
      puVar7 = (undefined4 *)
               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),
                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);
      uVar11 = (long)puVar7 - (long)local_78 >> 2;
      if (local_70 < uVar11) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */
        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")
        ;
      }
      *puVar7 = 0;
      iVar4 = *(int *)(lVar8 + 0x60);
      local_70 = uVar11;
    }
  }
  uVar11 = local_70;
  if (0 < iVar4) {
    uVar3 = *(undefined4 *)(lVar8 + 0x24);
    uVar1 = local_70 + 1;
    if (local_78 == &local_68) {
      uVar12 = 3;
    }
    else {
      uVar12 = CONCAT44(uStack_64,local_68);
    }
    if (uVar12 < uVar1) {
                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */
      FUN_002dea60(&local_78,local_70,0,0,1);
    }
    local_70 = uVar11 + 1;
    local_78[uVar11] = uVar3;
    local_78[uVar11 + 1] = 0;
    if ((long)uVar17 < 0) {
      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));
      if (0x1fffffffffffffff - local_70 < uVar15) {
                    /* WARNING: Subroutine does not return */
        FUN_003195a0("basic_string::append");
      }
    }
    else {
      uVar15 = (ulong)*(int *)(lVar8 + 0x60);
      piVar14 = piVar14 + uVar17;
      if (0x1fffffffffffffff - local_70 < uVar15) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */
        FUN_003195a0("basic_string::append",piVar14);
      }
    }
                    /* try { // try from 00338454 to 00338458 has its CatchHandler @ 00338695 */
    FUN_002e0110(&local_78,piVar14,uVar15);
  }
  uVar15 = local_70 + local_f8;
  uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;
  if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {
    uVar15 = uVar15 + *(long *)(lVar8 + 0x38);
  }
  local_50 = 0;
  local_58 = &local_48;
  local_48 = 0;
                    /* try { // try from 003380b6 to 003383ad has its CatchHandler @ 0033869a */
  FUN_002def60(&local_58,uVar15 * 2);
  local_c8 = *(ulong *)(param_4 + 0x10);
  ppuVar16 = (undefined4 **)local_7c;
  bVar10 = uVar13 == 0x10 && uVar15 < local_c8;
  do {
    uVar17 = local_50;
    switch(*(undefined1 *)ppuVar16) {
    case 0:
      if (bVar10) {
        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);
      }
      break;
    case 1:
      if (bVar10) {
                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */
        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);
      }
      else {
        if (local_58 == &local_48) {
          uVar11 = 3;
        }
        else {
          uVar11 = CONCAT44(uStack_44,local_48);
        }
        if (uVar11 < local_50 + 1) {
                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */
          FUN_002dea60(&local_58,local_50,0,0,1);
        }
        local_58[uVar17] = param_5;
        local_50 = uVar17 + 1;
        local_58[uVar17 + 1] = 0;
      }
      break;
    case 2:
      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {
        uVar17 = *(ulong *)(lVar8 + 0x38);
        puVar7 = *(undefined4 **)(lVar8 + 0x30);
        if (0x1fffffffffffffff - local_50 < uVar17) {
                    /* WARNING: Subroutine does not return */
          FUN_003195a0("basic_string::append");
        }
        goto LAB_00338268;
      }
      break;
    case 3:
      if (local_f8 != 0) {
        uVar3 = *local_d0;
        if (local_58 == &local_48) {
          uVar11 = 3;
        }
        else {
          uVar11 = CONCAT44(uStack_44,local_48);
        }
        if (uVar11 < local_50 + 1) {
          FUN_002dea60(&local_58,local_50,0,0,1);
        }
        local_58[uVar17] = uVar3;
        local_50 = uVar17 + 1;
        local_58[uVar17 + 1] = 0;
      }
      break;
    case 4:
      uVar17 = local_70;
      puVar7 = local_78;
LAB_00338268:
      FUN_002e0110(&local_58,puVar7,uVar17);
    }
    ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);
  } while (&local_78 != ppuVar16);
  if (local_f8 < 2) {
    if (local_50 < local_c8) goto LAB_00338340;
LAB_003382a4:
    local_c8 = local_50;
  }
  else {
    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */
      FUN_003195a0("basic_string::append",local_d0 + 1);
    }
    FUN_002e0110(&local_58);
    if (local_c8 <= local_50) goto LAB_003382a4;
LAB_00338340:
    if (uVar13 == 0x20) {
                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */
      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);
    }
    else {
      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);
    }
  }
  if (local_e5 == '\0') {
    lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);
    local_e5 = (int)local_c8 != lVar8;
  }
  param_3 = param_3 & 0xffffffffffffff00;
  if (local_58 != &local_48) {
    FUN_002dac70(local_58);
  }
  if (local_78 != &local_68) {
    FUN_002dac70();
  }
LAB_00337f31:
  auVar18._9_7_ = (int7)(param_3 >> 8);
  auVar18[8] = local_e5;
  *(undefined8 *)(param_4 + 0x10) = 0;
  auVar18._0_8_ = param_2;
  return auVar18;
}


PUSH R15
LEA RAX,[RCX + 0xd0]
MOV R15,RCX
PUSH R14
MOV RDI,RAX
PUSH R13
MOV R13,R9
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDX
SUB RSP,0xd8
MOV qword ptr [RSP + 0x8],RSI
MOV qword ptr [RSP + 0x28],RDX
MOV dword ptr [RSP + 0x24],R8D
MOV byte ptr [RSP + 0x23],DL
MOV qword ptr [RSP + 0x10],RAX
CALL 0x00327630
LEA RDI,[0x44bd28]
MOV R12,RAX
CALL 0x002dd3b0
MOV RCX,RAX
MOV qword ptr [RSP + 0x18],RAX
MOV RAX,qword ptr [R15 + 0xd0]
MOV RAX,qword ptr [RAX + 0x18]
LEA R14,[RAX + RCX*0x8]
MOV RBP,qword ptr [R14]
TEST RBP,RBP
JZ 0x00338490
MOV R14,qword ptr [R13]
MOV RAX,qword ptr [R13 + 0x8]
MOV EDI,dword ptr [RBP + 0x6c]
CMP dword ptr [R14],EDI
JZ 0x00337f60
MOV EDX,dword ptr [RBP + 0x64]
MOV RCX,qword ptr [RBP + 0x48]
MOV dword ptr [RSP + 0x8c],EDX
MOV RDX,qword ptr [RBP + 0x40]
MOV qword ptr [RSP + 0x10],RCX
MOV qword ptr [RSP + 0x38],RDX
LEA RCX,[R14 + RAX*0x4]
MOV RAX,qword ptr [R12]
MOV RDI,R12
MOV RDX,R14
MOV ESI,0x800
CALL qword ptr [RAX + 0x28]
SUB RAX,R14
MOV R12,RAX
SAR R12,0x2
JNZ 0x00337f90
MOV BL,byte ptr [RSP + 0x23]
MOV qword ptr [R15 + 0x10],0x0
MOV RAX,qword ptr [RSP + 0x8]
ADD RSP,0xd8
MOV RDX,RBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EDX,dword ptr [RBP + 0x68]
MOV RCX,qword ptr [RBP + 0x50]
TEST RAX,RAX
MOV RSI,qword ptr [RBP + 0x58]
MOV dword ptr [RSP + 0x8c],EDX
LEA RDX,[R14 + 0x4]
MOV qword ptr [RSP + 0x38],RCX
CMOVNZ R14,RDX
MOV qword ptr [RSP + 0x10],RSI
JMP 0x00337f0f
LEA RDI,[RSP + 0x90]
LEA RSI,[R12 + R12*0x1]
MOV qword ptr [RSP + 0x98],0x0
LEA RAX,[RDI + 0x10]
MOV qword ptr [RSP + 0x30],RDI
MOV qword ptr [RSP + 0x90],RAX
MOV dword ptr [RSP + 0xa0],0x0
CALL 0x002def60
MOVSXD RDX,dword ptr [RBP + 0x60]
MOV R13,R12
MOV RBX,qword ptr [RSP + 0x98]
SUB R13,RDX
MOV RAX,RDX
TEST R13,R13
JLE 0x0033805e
TEST EDX,EDX
CMOVS R13,R12
CMP qword ptr [RBP + 0x18],0x0
JZ 0x00338540
MOV RDI,qword ptr [RSP + 0x30]
LEA RCX,[R13 + R13*0x1]
XOR R8D,R8D
MOV RDX,RBX
XOR ESI,ESI
CALL 0x002df470
MOV RCX,qword ptr [RBP + 0x18]
MOV RDX,qword ptr [RBP + 0x10]
LEA R9,[R14 + R13*0x4]
MOV R8,R14
MOV ESI,dword ptr [RBP + 0x28]
MOV RDI,qword ptr [RSP + 0x90]
CALL 0x003293d0
MOV RCX,qword ptr [RSP + 0x98]
MOV RDX,RAX
SUB RDX,qword ptr [RSP + 0x90]
SAR RDX,0x2
MOV RBX,RDX
CMP RDX,RCX
JA 0x0033865c
MOV qword ptr [RSP + 0x98],RDX
MOV dword ptr [RAX],0x0
MOV EAX,dword ptr [RBP + 0x60]
TEST EAX,EAX
JG 0x003383d0
MOV EAX,dword ptr [R15 + 0x18]
ADD RBX,qword ptr [RSP + 0x10]
MOV ESI,EAX
AND ESI,0xb0
MOV dword ptr [RSP + 0x48],ESI
TEST AH,0x2
JNZ 0x00338370
LEA R14,[RSP + 0xb0]
LEA RSI,[RBX + RBX*0x1]
MOV qword ptr [RSP + 0xb8],0x0
LEA RAX,[R14 + 0x10]
MOV RDI,R14
MOV dword ptr [RSP + 0xc0],0x0
MOV qword ptr [RSP + 0xb0],RAX
CALL 0x002def60
MOV RSI,qword ptr [R15 + 0x10]
CMP dword ptr [RSP + 0x48],0x10
LEA R12,[RSP + 0x8c]
LEA R13,[0x394788]
SETZ DL
CMP RSI,RBX
MOV qword ptr [RSP + 0x40],RSI
SETA AL
SUB RSI,RBX
AND EDX,EAX
LEA RAX,[R12 + 0x4]
MOV qword ptr [RSP + 0x50],RSI
MOV qword ptr [RSP + 0x18],RAX
LEA RAX,[R14 + 0x10]
MOV byte ptr [RSP + 0x4f],DL
MOV qword ptr [RSP + 0x58],RAX
CMP byte ptr [R12],0x4
JA 0x00338270
MOVZX EAX,byte ptr [R12]
MOVSXD RAX,dword ptr [R13 + RAX*0x4]
ADD RAX,R13
JMP RAX
CMP qword ptr [RSP + 0x10],0x0
JZ 0x00338270
MOV RAX,qword ptr [RSP + 0x38]
MOV RBX,qword ptr [RSP + 0xb8]
MOV EAX,dword ptr [RAX]
MOV dword ptr [RSP + 0x60],EAX
LEA RAX,[RBX + 0x1]
MOV qword ptr [RSP + 0x68],RAX
MOV RAX,qword ptr [RSP + 0xb0]
CMP RAX,qword ptr [RSP + 0x58]
JZ 0x00338652
MOV RDX,qword ptr [RSP + 0xc0]
CMP qword ptr [RSP + 0x68],RDX
JA 0x003385c0
MOV EDX,dword ptr [RSP + 0x60]
MOV dword ptr [RAX + RBX*0x4],EDX
LEA RDX,[RBX + 0x1]
MOV qword ptr [RSP + 0xb8],RDX
MOV dword ptr [RAX + RBX*0x4 + 0x4],0x0
JMP 0x00338270
TEST byte ptr [R15 + 0x19],0x2
JZ 0x00338270
MOV RDX,qword ptr [RBP + 0x38]
MOV RSI,qword ptr [RBP + 0x30]
MOV RAX,0x1fffffffffffffff
SUB RAX,qword ptr [RSP + 0xb8]
CMP RDX,RAX
JBE 0x00338268
LEA RDI,[0x371fa2]
CALL 0x003195a0
CMP byte ptr [RSP + 0x4f],0x0
MOV RBX,qword ptr [RSP + 0xb8]
JNZ 0x00338470
LEA RAX,[RBX + 0x1]
MOV qword ptr [RSP + 0x60],RAX
MOV RAX,qword ptr [RSP + 0xb0]
CMP RAX,qword ptr [RSP + 0x58]
JZ 0x00338648
MOV RDX,qword ptr [RSP + 0xc0]
CMP qword ptr [RSP + 0x60],RDX
JA 0x00338610
MOV EDX,dword ptr [RSP + 0x24]
MOV dword ptr [RAX + RBX*0x4],EDX
LEA RDX,[RBX + 0x1]
MOV qword ptr [RSP + 0xb8],RDX
MOV dword ptr [RAX + RBX*0x4 + 0x4],0x0
JMP 0x00338270
CMP byte ptr [RSP + 0x4f],0x0
JZ 0x00338270
MOV R8D,dword ptr [RSP + 0x24]
MOV RCX,qword ptr [RSP + 0x50]
XOR EDX,EDX
MOV RDI,R14
MOV RSI,qword ptr [RSP + 0xb8]
CALL 0x002df470
JMP 0x00338270
MOV RDX,qword ptr [RSP + 0x98]
MOV RSI,qword ptr [RSP + 0x90]
MOV RDI,R14
CALL 0x002e0110
ADD R12,0x1
CMP qword ptr [RSP + 0x18],R12
JNZ 0x00338102
MOV RDI,qword ptr [RSP + 0x10]
MOV RAX,qword ptr [RSP + 0xb8]
CMP RDI,0x1
JA 0x00338380
MOV RBX,qword ptr [RSP + 0x40]
CMP RBX,RAX
JA 0x00338340
MOV qword ptr [RSP + 0x40],RAX
CMP byte ptr [RSP + 0x23],0x0
MOV RSI,qword ptr [RSP + 0xb0]
MOVSXD RBX,dword ptr [RSP + 0x40]
JNZ 0x003382db
MOV RDI,qword ptr [RSP + 0x8]
MOV RDX,RBX
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x60]
CMP RBX,RAX
MOV RSI,qword ptr [RSP + 0xb0]
SETNZ byte ptr [RSP + 0x23]
MOV RAX,qword ptr [RSP + 0x8]
XOR EBX,EBX
MOV BL,byte ptr [RSP + 0x23]
ADD R14,0x10
MOV qword ptr [RSP + 0x70],RAX
MOVZX EAX,BL
MOV qword ptr [RSP + 0x78],RBX
MOV RBX,qword ptr [RSP + 0x28]
XOR BL,BL
OR RBX,RAX
MOV byte ptr [RSP + 0x23],BL
CMP RSI,R14
JZ 0x00338312
MOV RDI,RSI
CALL 0x002dac70
MOV RAX,qword ptr [RSP + 0x30]
MOV RDI,qword ptr [RSP + 0x90]
ADD RAX,0x10
CMP RDI,RAX
JZ 0x00337f31
CALL 0x002dac70
JMP 0x00337f31
MOV RCX,RBX
XOR EDX,EDX
MOV R8D,dword ptr [RSP + 0x24]
SUB RCX,RAX
CMP dword ptr [RSP + 0x48],0x20
JZ 0x003385b0
XOR ESI,ESI
MOV RDI,R14
CALL 0x002df470
JMP 0x003382a9
ADD RBX,qword ptr [RBP + 0x38]
JMP 0x00338084
MOV RDX,RDI
MOV RSI,qword ptr [RSP + 0x38]
MOV RCX,0x1fffffffffffffff
SUB RDX,0x1
SUB RCX,RAX
ADD RSI,0x4
CMP RDX,RCX
JA 0x00338671
MOV RDI,R14
CALL 0x002e0110
MOV RAX,qword ptr [RSP + 0xb8]
MOV RBX,qword ptr [RSP + 0x40]
CMP RBX,RAX
JBE 0x003382a4
JMP 0x00338340
MOV EAX,dword ptr [RBP + 0x24]
MOV RDX,qword ptr [RSP + 0x30]
MOV dword ptr [RSP + 0x40],EAX
LEA RAX,[RBX + 0x1]
ADD RDX,0x10
MOV qword ptr [RSP + 0x18],RAX
MOV RAX,qword ptr [RSP + 0x90]
CMP RAX,RDX
JZ 0x00338638
MOV RDX,qword ptr [RSP + 0xa0]
CMP qword ptr [RSP + 0x18],RDX
JA 0x003385e8
MOV EDX,dword ptr [RSP + 0x40]
LEA RCX,[RBX + 0x1]
MOV dword ptr [RAX + RBX*0x4],EDX
MOV qword ptr [RSP + 0x98],RCX
MOV dword ptr [RAX + RBX*0x4 + 0x4],0x0
TEST R13,R13
JS 0x00338568
MOV RAX,0x1fffffffffffffff
MOVSXD RDX,dword ptr [RBP + 0x60]
LEA RSI,[R14 + R13*0x4]
SUB RAX,RCX
CMP RDX,RAX
JA 0x0033867d
MOV RDI,qword ptr [RSP + 0x30]
CALL 0x002e0110
MOV RBX,qword ptr [RSP + 0x98]
JMP 0x00338066
MOV R8D,dword ptr [RSP + 0x24]
MOV RCX,qword ptr [RSP + 0x50]
XOR EDX,EDX
MOV RSI,RBX
MOV RDI,R14
CALL 0x002df470
JMP 0x00338270
MOV EDI,0xa0
CALL 0x002d94a0
MOV RBP,RAX
MOV dword ptr [RAX + 0x8],0x0
MOV RSI,qword ptr [RSP + 0x10]
LEA RAX,[0x43b338]
MOV qword ptr [RBP + 0x10],0x0
MOV RDI,RBP
MOV qword ptr [RBP + 0x18],0x0
ADD RAX,0x10
MOV byte ptr [RBP + 0x20],0x0
MOV qword ptr [RBP],RAX
MOV qword ptr [RBP + 0x24],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 qword ptr [RBP + 0x60],0x0
MOV dword ptr [RBP + 0x68],0x0
MOV byte ptr [RBP + 0x98],0x0
CALL 0x00328110
MOV RDI,qword ptr [R15 + 0xd0]
MOV RDX,qword ptr [RSP + 0x18]
MOV RSI,RBP
CALL 0x002dd820
MOV RBP,qword ptr [R14]
JMP 0x00337ee3
MOV RDI,qword ptr [RSP + 0x30]
MOV R8,R13
MOV RCX,R14
MOV RDX,RBX
XOR ESI,ESI
CALL 0x002df740
MOV EAX,dword ptr [RBP + 0x60]
MOV RBX,qword ptr [RSP + 0x98]
JMP 0x0033805e
MOV RCX,R13
MOV R8D,dword ptr [RBP + 0x70]
MOV RSI,qword ptr [RSP + 0x18]
XOR EDX,EDX
MOV RDI,qword ptr [RSP + 0x30]
NEG RCX
CALL 0x002df470
MOV RAX,0x1fffffffffffffff
SUB RAX,qword ptr [RSP + 0x98]
CMP R12,RAX
JA 0x00338689
MOV RDX,R12
MOV RSI,R14
JMP 0x0033844f
MOV RSI,RAX
MOV RDI,R14
CALL 0x002df470
JMP 0x003382a9
MOV R8D,0x1
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBX
MOV RDI,R14
CALL 0x002dea60
MOV RAX,qword ptr [RSP + 0xb0]
JMP 0x0033816e
MOV RDI,qword ptr [RSP + 0x30]
MOV R8D,0x1
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBX
CALL 0x002dea60
MOV RAX,qword ptr [RSP + 0x90]
JMP 0x0033840d
MOV R8D,0x1
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBX
MOV RDI,R14
CALL 0x002dea60
MOV RAX,qword ptr [RSP + 0xb0]
JMP 0x00338212
MOV EDX,0x3
JMP 0x00338402
MOV EDX,0x3
JMP 0x00338207
MOV EDX,0x3
JMP 0x00338163
LEA RSI,[0x387654]
LEA RDI,[0x376b80]
XOR EAX,EAX
CALL 0x00319620
LEA RDI,[0x371fa2]
CALL 0x003195a0
LEA RDI,[0x371fa2]
CALL 0x003195a0
LEA RDI,[0x371fa2]
CALL 0x003195a0
(translation_unit "undefined1  [16]\nFUN_00337e70(undefined8 param_1,long *param_2,ulong param_3,long param_4,undefined4 param_5,\n            undefined8 *param_6)\n\n{\n  ulong uVar1;\n  long *plVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long *plVar5;\n  long lVar6;\n  undefined4 *puVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  bool bVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  int *piVar14;\n  ulong uVar15;\n  undefined4 **ppuVar16;\n  ulong uVar17;\n  undefined1 auVar18 [16];\n  ulong local_f8;\n  char local_e5;\n  undefined4 *local_d0;\n  ulong local_c8;\n  undefined1 local_7c [4];\n  undefined4 *local_78;\n  ulong local_70;\n  undefined4 local_68;\n  undefined4 uStack_64;\n  undefined4 *local_58;\n  ulong local_50;\n  undefined4 local_48;\n  undefined4 uStack_44;\n  \n  local_e5 = (char)param_3;\n  plVar5 = (long *)FUN_00327630(param_4 + 0xd0);\n  lVar6 = FUN_002dd3b0(&DAT_0044bd28);\n  plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8);\n  lVar8 = *plVar2;\n  if (lVar8 == 0) {\n                    /* try { // try from 00338495 to 00338499 has its CatchHandler @ 003386d8 */\n    puVar9 = (undefined8 *)FUN_002d94a0(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *puVar9 = &PTR_FUN_0043b348;\n    *(undefined8 *)((long)puVar9 + 0x24) = 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    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    /* try { // try from 0033851d to 00338521 has its CatchHandler @ 003386d6 */\n    FUN_00328110(puVar9,param_4 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);\n    lVar8 = *plVar2;\n  }\n  piVar14 = (int *)*param_6;\n  if (*piVar14 == *(int *)(lVar8 + 0x6c)) {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);\n    local_d0 = *(undefined4 **)(lVar8 + 0x50);\n    local_f8 = *(ulong *)(lVar8 + 0x58);\n    if (param_6[1] != 0) {\n      piVar14 = piVar14 + 1;\n    }\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 100);\n    local_f8 = *(ulong *)(lVar8 + 0x48);\n    local_d0 = *(undefined4 **)(lVar8 + 0x40);\n  }\n  lVar6 = (**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1]);\n  uVar15 = lVar6 - (long)piVar14 >> 2;\n  if (uVar15 == 0) goto LAB_00337f31;\n  local_70 = 0;\n  local_78 = &local_68;\n  local_68 = 0;\n                    /* try { // try from 00337fc4 to 0033800a has its CatchHandler @ 00338695 */\n  FUN_002def60(&local_78,uVar15 * 2);\n  iVar4 = *(int *)(lVar8 + 0x60);\n  uVar17 = uVar15 - (long)iVar4;\n  if (0 < (long)uVar17) {\n    if (iVar4 < 0) {\n      uVar17 = uVar15;\n    }\n    if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */\n      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }\n    else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\n    }\n  }\n  uVar11 = local_70;\n  if (0 < iVar4) {\n    uVar3 = *(undefined4 *)(lVar8 + 0x24);\n    uVar1 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar12 = 3;\n    }\n    else {\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }\n    if (uVar12 < uVar1) {\n                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */\n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }\n    local_70 = uVar11 + 1;\n    local_78[uVar11] = uVar3;\n    local_78[uVar11 + 1] = 0;\n    if ((long)uVar17 < 0) {\n      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003195a0("basic_string::append");\n      }\n    }\n    else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }\n                    /* try { // try from 00338454 to 00338458 has its CatchHandler @ 00338695 */\n    FUN_002e0110(&local_78,piVar14,uVar15);\n  }\n  uVar15 = local_70 + local_f8;\n  uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;\n  if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n    uVar15 = uVar15 + *(long *)(lVar8 + 0x38);\n  }\n  local_50 = 0;\n  local_58 = &local_48;\n  local_48 = 0;\n                    /* try { // try from 003380b6 to 003383ad has its CatchHandler @ 0033869a */\n  FUN_002def60(&local_58,uVar15 * 2);\n  local_c8 = *(ulong *)(param_4 + 0x10);\n  ppuVar16 = (undefined4 **)local_7c;\n  bVar10 = uVar13 == 0x10 && uVar15 < local_c8;\n  do {\n    uVar17 = local_50;\n    switch(*(undefined1 *)ppuVar16) {\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }\n    ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);\n  } while (&local_78 != ppuVar16);\n  if (local_f8 < 2) {\n    if (local_50 < local_c8) goto LAB_00338340;\nLAB_003382a4:\n    local_c8 = local_50;\n  }\n  else {\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }\n    FUN_002e0110(&local_58);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar13 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }\n  if (local_e5 == '\0') {\n    lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);\n    local_e5 = (int)local_c8 != lVar8;\n  }\n  param_3 = param_3 & 0xffffffffffffff00;\n  if (local_58 != &local_48) {\n    FUN_002dac70(local_58);\n  }\n  if (local_78 != &local_68) {\n    FUN_002dac70();\n  }\nLAB_00337f31:\n  auVar18._9_7_ = (int7)(param_3 >> 8);\n  auVar18[8] = local_e5;\n  *(undefined8 *)(param_4 + 0x10) = 0;\n  auVar18._0_8_ = param_2;\n  return auVar18;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_00337e70(undefined8 param_1,long *param_2,ulong param_3,long param_4,undefined4 param_5,\n            undefined8 *param_6)\n\n{\n  ulong uVar1;" (macro_type_specifier "FUN_00337e70(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) identifier , identifier (ERROR "param_5" identifier) , (ERROR "undefined8 *param_6)\n\n{\n  ulong" identifier (pointer_declarator "*param_6" * identifier) ) { identifier) identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 *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 "uint uVar13;" type_identifier identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "undefined4 **ppuVar16;" type_identifier (pointer_declarator "**ppuVar16" * (pointer_declarator "*ppuVar16" * identifier)) ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "undefined1 auVar18 [16];" type_identifier (array_declarator "auVar18 [16]" identifier [ number_literal ]) ;) (declaration "ulong local_f8;" type_identifier identifier ;) (declaration "char local_e5;" primitive_type identifier ;) (declaration "undefined4 *local_d0;" type_identifier (pointer_declarator "*local_d0" * identifier) ;) (declaration "ulong local_c8;" type_identifier identifier ;) (declaration "undefined1 local_7c [4];" type_identifier (array_declarator "local_7c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_70;" type_identifier identifier ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 uStack_64;" type_identifier identifier ;) (declaration "undefined4 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 uStack_44;" type_identifier identifier ;) (expression_statement "local_e5 = (char)param_3;" (assignment_expression "local_e5 = (char)param_3" identifier = (cast_expression "(char)param_3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "plVar5 = (long *)FUN_00327630(param_4 + 0xd0);" (assignment_expression "plVar5 = (long *)FUN_00327630(param_4 + 0xd0)" identifier = (cast_expression "(long *)FUN_00327630(param_4 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00327630(param_4 + 0xd0)" identifier (argument_list "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = FUN_002dd3b0(&DAT_0044bd28);" (assignment_expression "lVar6 = FUN_002dd3b0(&DAT_0044bd28)" identifier = (call_expression "FUN_002dd3b0(&DAT_0044bd28)" identifier (argument_list "(&DAT_0044bd28)" ( (pointer_expression "&DAT_0044bd28" & identifier) )))) ;) (expression_statement "plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8);" (assignment_expression "plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8)" ( (binary_expression "*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 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 "lVar6 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar8 = *plVar2;" (assignment_expression "lVar8 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (if_statement "if (lVar8 == 0) {\n                    /* try { // try from 00338495 to 00338499 has its CatchHandler @ 003386d8 */\n    puVar9 = (undefined8 *)FUN_002d94a0(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *puVar9 = &PTR_FUN_0043b348;\n    *(undefined8 *)((long)puVar9 + 0x24) = 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    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    /* try { // try from 0033851d to 00338521 has its CatchHandler @ 003386d6 */\n    FUN_00328110(puVar9,param_4 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);\n    lVar8 = *plVar2;\n  }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 00338495 to 00338499 has its CatchHandler @ 003386d8 */\n    puVar9 = (undefined8 *)FUN_002d94a0(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *puVar9 = &PTR_FUN_0043b348;\n    *(undefined8 *)((long)puVar9 + 0x24) = 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    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    /* try { // try from 0033851d to 00338521 has its CatchHandler @ 003386d6 */\n    FUN_00328110(puVar9,param_4 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);\n    lVar8 = *plVar2;\n  }" { comment (expression_statement "puVar9 = (undefined8 *)FUN_002d94a0(0xa0);" (assignment_expression "puVar9 = (undefined8 *)FUN_002d94a0(0xa0)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(0xa0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(0xa0)" identifier (argument_list "(0xa0)" ( 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 *)(puVar9 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar9 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar9 + 4)" * (cast_expression "(undefined1 *)(puVar9 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar9 = &PTR_FUN_0043b348;" (assignment_expression "*puVar9 = &PTR_FUN_0043b348" (pointer_expression "*puVar9" * identifier) = (pointer_expression "&PTR_FUN_0043b348" & identifier)) ;) (expression_statement "*(undefined8 *)((long)puVar9 + 0x24) = 0;" (assignment_expression "*(undefined8 *)((long)puVar9 + 0x24) = 0" (pointer_expression "*(undefined8 *)((long)puVar9 + 0x24)" * (cast_expression "(undefined8 *)((long)puVar9 + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 0x24)" ( (binary_expression "(long)puVar9 + 0x24" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) 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 "puVar9[0xc] = 0;" (assignment_expression "puVar9[0xc] = 0" (subscript_expression "puVar9[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar9 + 0xd) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 0xd) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 0xd)" * (cast_expression "(undefined4 *)(puVar9 + 0xd)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0xd)" ( (binary_expression "puVar9 + 0xd" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar9 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar9 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar9 + 0x13)" * (cast_expression "(undefined1 *)(puVar9 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x13)" ( (binary_expression "puVar9 + 0x13" identifier + number_literal) )))) = number_literal) ;) comment (expression_statement "FUN_00328110(puVar9,param_4 + 0xd0);" (call_expression "FUN_00328110(puVar9,param_4 + 0xd0)" identifier (argument_list "(puVar9,param_4 + 0xd0)" ( identifier , (binary_expression "param_4 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);" (call_expression "FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6)" identifier (argument_list "(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6)" ( (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 = *plVar2;" (assignment_expression "lVar8 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) })) (expression_statement "piVar14 = (int *)*param_6;" (assignment_expression "piVar14 = (int *)*param_6" identifier = (cast_expression "(int *)*param_6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_6" * identifier))) ;) (if_statement "if (*piVar14 == *(int *)(lVar8 + 0x6c)) {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);\n    local_d0 = *(undefined4 **)(lVar8 + 0x50);\n    local_f8 = *(ulong *)(lVar8 + 0x58);\n    if (param_6[1] != 0) {\n      piVar14 = piVar14 + 1;\n    }\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 100);\n    local_f8 = *(ulong *)(lVar8 + 0x48);\n    local_d0 = *(undefined4 **)(lVar8 + 0x40);\n  }" if (parenthesized_expression "(*piVar14 == *(int *)(lVar8 + 0x6c))" ( (binary_expression "*piVar14 == *(int *)(lVar8 + 0x6c)" (pointer_expression "*piVar14" * identifier) == (pointer_expression "*(int *)(lVar8 + 0x6c)" * (cast_expression "(int *)(lVar8 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x6c)" ( (binary_expression "lVar8 + 0x6c" identifier + number_literal) ))))) )) (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);\n    local_d0 = *(undefined4 **)(lVar8 + 0x50);\n    local_f8 = *(ulong *)(lVar8 + 0x58);\n    if (param_6[1] != 0) {\n      piVar14 = piVar14 + 1;\n    }\n  }" { (expression_statement "local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar8 + 0x68)" identifier = (pointer_expression "*(undefined1 (*) [4])(lVar8 + 0x68)" * (cast_expression "(undefined1 (*) [4])(lVar8 + 0x68)" ( (type_descriptor "undefined1 (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0x68)" ( (binary_expression "lVar8 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = *(undefined4 **)(lVar8 + 0x50);" (assignment_expression "local_d0 = *(undefined4 **)(lVar8 + 0x50)" identifier = (pointer_expression "*(undefined4 **)(lVar8 + 0x50)" * (cast_expression "(undefined4 **)(lVar8 + 0x50)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x50)" ( (binary_expression "lVar8 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "local_f8 = *(ulong *)(lVar8 + 0x58);" (assignment_expression "local_f8 = *(ulong *)(lVar8 + 0x58)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x58)" * (cast_expression "(ulong *)(lVar8 + 0x58)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x58)" ( (binary_expression "lVar8 + 0x58" identifier + number_literal) ))))) ;) (if_statement "if (param_6[1] != 0) {\n      piVar14 = piVar14 + 1;\n    }" if (parenthesized_expression "(param_6[1] != 0)" ( (binary_expression "param_6[1] != 0" (subscript_expression "param_6[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      piVar14 = piVar14 + 1;\n    }" { (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) })) }) (else_clause "else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 100);\n    local_f8 = *(ulong *)(lVar8 + 0x48);\n    local_d0 = *(undefined4 **)(lVar8 + 0x40);\n  }" else (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar8 + 100);\n    local_f8 = *(ulong *)(lVar8 + 0x48);\n    local_d0 = *(undefined4 **)(lVar8 + 0x40);\n  }" { (expression_statement "local_7c = *(undefined1 (*) [4])(lVar8 + 100);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar8 + 100)" identifier = (pointer_expression "*(undefined1 (*) [4])(lVar8 + 100)" * (cast_expression "(undefined1 (*) [4])(lVar8 + 100)" ( (type_descriptor "undefined1 (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 100)" ( (binary_expression "lVar8 + 100" identifier + number_literal) ))))) ;) (expression_statement "local_f8 = *(ulong *)(lVar8 + 0x48);" (assignment_expression "local_f8 = *(ulong *)(lVar8 + 0x48)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x48)" * (cast_expression "(ulong *)(lVar8 + 0x48)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x48)" ( (binary_expression "lVar8 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = *(undefined4 **)(lVar8 + 0x40);" (assignment_expression "local_d0 = *(undefined4 **)(lVar8 + 0x40)" identifier = (pointer_expression "*(undefined4 **)(lVar8 + 0x40)" * (cast_expression "(undefined4 **)(lVar8 + 0x40)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x40)" ( (binary_expression "lVar8 + 0x40" identifier + number_literal) ))))) ;) }))) (expression_statement "lVar6 = (**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1]);" (assignment_expression "lVar6 = (**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1])" identifier = (call_expression "(**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1])" (parenthesized_expression "(**(code **)(*plVar5 + 0x28))" ( (pointer_expression "**(code **)(*plVar5 + 0x28)" * (pointer_expression "*(code **)(*plVar5 + 0x28)" * (cast_expression "(code **)(*plVar5 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar5 + 0x28)" ( (binary_expression "*plVar5 + 0x28" (pointer_expression "*plVar5" * identifier) + number_literal) ))))) )) (argument_list "(plVar5,0x800,piVar14,piVar14 + param_6[1])" ( identifier , number_literal , identifier , (binary_expression "piVar14 + param_6[1]" identifier + (subscript_expression "param_6[1]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar15 = lVar6 - (long)piVar14 >> 2;" (assignment_expression "uVar15 = lVar6 - (long)piVar14 >> 2" identifier = (binary_expression "lVar6 - (long)piVar14 >> 2" (binary_expression "lVar6 - (long)piVar14" identifier - (cast_expression "(long)piVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar15 == 0) goto LAB_00337f31;" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00337f31;" goto statement_identifier ;)) (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_002def60(&local_78,uVar15 * 2);" (call_expression "FUN_002def60(&local_78,uVar15 * 2)" identifier (argument_list "(&local_78,uVar15 * 2)" ( (pointer_expression "&local_78" & identifier) , (binary_expression "uVar15 * 2" identifier * number_literal) ))) ;) (expression_statement "iVar4 = *(int *)(lVar8 + 0x60);" (assignment_expression "iVar4 = *(int *)(lVar8 + 0x60)" identifier = (pointer_expression "*(int *)(lVar8 + 0x60)" * (cast_expression "(int *)(lVar8 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x60)" ( (binary_expression "lVar8 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = uVar15 - (long)iVar4;" (assignment_expression "uVar17 = uVar15 - (long)iVar4" identifier = (binary_expression "uVar15 - (long)iVar4" identifier - (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0 < (long)uVar17) {\n    if (iVar4 < 0) {\n      uVar17 = uVar15;\n    }\n    if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */\n      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }\n    else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\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 (iVar4 < 0) {\n      uVar17 = uVar15;\n    }\n    if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */\n      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }\n    else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\n    }\n  }" { (if_statement "if (iVar4 < 0) {\n      uVar17 = uVar15;\n    }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar17 = uVar15;\n    }" { (expression_statement "uVar17 = uVar15;" (assignment_expression "uVar17 = uVar15" identifier = identifier) ;) })) (if_statement "if (*(long *)(lVar8 + 0x18) == 0) {\n                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */\n      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }\n    else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\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 00338550 to 00338582 has its CatchHandler @ 00338695 */\n      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }" { comment (expression_statement "FUN_002df740(&local_78,0,local_70,piVar14,uVar17);" (call_expression "FUN_002df740(&local_78,0,local_70,piVar14,uVar17)" identifier (argument_list "(&local_78,0,local_70,piVar14,uVar17)" ( (pointer_expression "&local_78" & identifier) , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "iVar4 = *(int *)(lVar8 + 0x60);" (assignment_expression "iVar4 = *(int *)(lVar8 + 0x60)" identifier = (pointer_expression "*(int *)(lVar8 + 0x60)" * (cast_expression "(int *)(lVar8 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x60)" ( (binary_expression "lVar8 + 0x60" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\n    }" else (compound_statement "{\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\n    }" { (expression_statement "FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);" (call_expression "FUN_002df470(&local_78,0,local_70,uVar17 * 2,0)" identifier (argument_list "(&local_78,0,local_70,uVar17 * 2,0)" ( (pointer_expression "&local_78" & identifier) , number_literal , identifier , (binary_expression "uVar17 * 2" identifier * number_literal) , number_literal ))) ;) (expression_statement "puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);" (assignment_expression "puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17)" identifier = (cast_expression "(undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17)" identifier (argument_list "(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17)" ( identifier , (pointer_expression "*(undefined4 *)(lVar8 + 0x28)" * (cast_expression "(undefined4 *)(lVar8 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x28)" ( (binary_expression "lVar8 + 0x28" 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 "piVar14 + uVar17" identifier + identifier) ))))) ;) (expression_statement "uVar11 = (long)puVar7 - (long)local_78 >> 2;" (assignment_expression "uVar11 = (long)puVar7 - (long)local_78 >> 2" identifier = (binary_expression "(long)puVar7 - (long)local_78 >> 2" (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)) >> number_literal)) ;) (if_statement "if (local_70 < uVar11) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }" if (parenthesized_expression "(local_70 < uVar11)" ( (binary_expression "local_70 < uVar11" identifier < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }" { comment comment (expression_statement "FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;" (call_expression "FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","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 "iVar4 = *(int *)(lVar8 + 0x60);" (assignment_expression "iVar4 = *(int *)(lVar8 + 0x60)" identifier = (pointer_expression "*(int *)(lVar8 + 0x60)" * (cast_expression "(int *)(lVar8 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x60)" ( (binary_expression "lVar8 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "local_70 = uVar11;" (assignment_expression "local_70 = uVar11" identifier = identifier) ;) }))) })) (expression_statement "uVar11 = local_70;" (assignment_expression "uVar11 = local_70" identifier = identifier) ;) (if_statement "if (0 < iVar4) {\n    uVar3 = *(undefined4 *)(lVar8 + 0x24);\n    uVar1 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar12 = 3;\n    }\n    else {\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }\n    if (uVar12 < uVar1) {\n                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */\n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }\n    local_70 = uVar11 + 1;\n    local_78[uVar11] = uVar3;\n    local_78[uVar11 + 1] = 0;\n    if ((long)uVar17 < 0) {\n      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003195a0("basic_string::append");\n      }\n    }\n    else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }\n                    /* try { // try from 00338454 to 00338458 has its CatchHandler @ 00338695 */\n    FUN_002e0110(&local_78,piVar14,uVar15);\n  }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n    uVar3 = *(undefined4 *)(lVar8 + 0x24);\n    uVar1 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar12 = 3;\n    }\n    else {\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }\n    if (uVar12 < uVar1) {\n                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */\n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }\n    local_70 = uVar11 + 1;\n    local_78[uVar11] = uVar3;\n    local_78[uVar11 + 1] = 0;\n    if ((long)uVar17 < 0) {\n      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003195a0("basic_string::append");\n      }\n    }\n    else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }\n                    /* try { // try from 00338454 to 00338458 has its CatchHandler @ 00338695 */\n    FUN_002e0110(&local_78,piVar14,uVar15);\n  }" { (expression_statement "uVar3 = *(undefined4 *)(lVar8 + 0x24);" (assignment_expression "uVar3 = *(undefined4 *)(lVar8 + 0x24)" identifier = (pointer_expression "*(undefined4 *)(lVar8 + 0x24)" * (cast_expression "(undefined4 *)(lVar8 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x24)" ( (binary_expression "lVar8 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = local_70 + 1;" (assignment_expression "uVar1 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_78 == &local_68) {\n      uVar12 = 3;\n    }\n    else {\n      uVar12 = CONCAT44(uStack_64,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 = 3;\n    }" { (expression_statement "uVar12 = 3;" (assignment_expression "uVar12 = 3" identifier = number_literal) ;) }) (else_clause "else {\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }" else (compound_statement "{\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }" { (expression_statement "uVar12 = CONCAT44(uStack_64,local_68);" (assignment_expression "uVar12 = CONCAT44(uStack_64,local_68)" identifier = (call_expression "CONCAT44(uStack_64,local_68)" identifier (argument_list "(uStack_64,local_68)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar12 < uVar1) {\n                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */\n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }" if (parenthesized_expression "(uVar12 < uVar1)" ( (binary_expression "uVar12 < uVar1" identifier < identifier) )) (compound_statement "{\n                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */\n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }" { comment (expression_statement "FUN_002dea60(&local_78,local_70,0,0,1);" (call_expression "FUN_002dea60(&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_70 = uVar11 + 1;" (assignment_expression "local_70 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "local_78[uVar11] = uVar3;" (assignment_expression "local_78[uVar11] = uVar3" (subscript_expression "local_78[uVar11]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_78[uVar11 + 1] = 0;" (assignment_expression "local_78[uVar11 + 1] = 0" (subscript_expression "local_78[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ]) = number_literal) ;) (if_statement "if ((long)uVar17 < 0) {\n      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003195a0("basic_string::append");\n      }\n    }\n    else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        FUN_003195a0("basic_string::append",piVar14);\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      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003195a0("basic_string::append");\n      }\n    }" { (expression_statement "FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));" (call_expression "FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70))" identifier (argument_list "(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70))" ( (pointer_expression "&local_78" & identifier) , identifier , number_literal , (unary_expression "-uVar17" - identifier) , (pointer_expression "*(undefined4 *)(lVar8 + 0x70)" * (cast_expression "(undefined4 *)(lVar8 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x70)" ( (binary_expression "lVar8 + 0x70" identifier + number_literal) )))) ))) ;) (if_statement "if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003195a0("basic_string::append");\n      }" if (parenthesized_expression "(0x1fffffffffffffff - local_70 < uVar15)" ( (binary_expression "0x1fffffffffffffff - local_70 < uVar15" (binary_expression "0x1fffffffffffffff - local_70" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_003195a0("basic_string::append");\n      }" { comment (expression_statement "FUN_003195a0("basic_string::append");" (call_expression "FUN_003195a0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) }) (else_clause "else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }" else (compound_statement "{\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }" { (expression_statement "uVar15 = (ulong)*(int *)(lVar8 + 0x60);" (assignment_expression "uVar15 = (ulong)*(int *)(lVar8 + 0x60)" identifier = (binary_expression "(ulong)*(int *)(lVar8 + 0x60)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(int *)(lVar8 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x60)" ( (binary_expression "lVar8 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "piVar14 = piVar14 + uVar17;" (assignment_expression "piVar14 = piVar14 + uVar17" identifier = (binary_expression "piVar14 + uVar17" identifier + identifier)) ;) (if_statement "if (0x1fffffffffffffff - local_70 < uVar15) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        FUN_003195a0("basic_string::append",piVar14);\n      }" if (parenthesized_expression "(0x1fffffffffffffff - local_70 < uVar15)" ( (binary_expression "0x1fffffffffffffff - local_70 < uVar15" (binary_expression "0x1fffffffffffffff - local_70" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        FUN_003195a0("basic_string::append",piVar14);\n      }" { comment comment (expression_statement "FUN_003195a0("basic_string::append",piVar14);" (call_expression "FUN_003195a0("basic_string::append",piVar14)" identifier (argument_list "("basic_string::append",piVar14)" ( (string_literal ""basic_string::append"" " string_content ") , identifier ))) ;) })) }))) comment (expression_statement "FUN_002e0110(&local_78,piVar14,uVar15);" (call_expression "FUN_002e0110(&local_78,piVar14,uVar15)" identifier (argument_list "(&local_78,piVar14,uVar15)" ( (pointer_expression "&local_78" & identifier) , identifier , identifier ))) ;) })) (expression_statement "uVar15 = local_70 + local_f8;" (assignment_expression "uVar15 = local_70 + local_f8" identifier = (binary_expression "local_70 + local_f8" 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    uVar15 = uVar15 + *(long *)(lVar8 + 0x38);\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    uVar15 = uVar15 + *(long *)(lVar8 + 0x38);\n  }" { (expression_statement "uVar15 = uVar15 + *(long *)(lVar8 + 0x38);" (assignment_expression "uVar15 = uVar15 + *(long *)(lVar8 + 0x38)" identifier = (binary_expression "uVar15 + *(long *)(lVar8 + 0x38)" identifier + (pointer_expression "*(long *)(lVar8 + 0x38)" * (cast_expression "(long *)(lVar8 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x38)" ( (binary_expression "lVar8 + 0x38" 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_002def60(&local_58,uVar15 * 2);" (call_expression "FUN_002def60(&local_58,uVar15 * 2)" identifier (argument_list "(&local_58,uVar15 * 2)" ( (pointer_expression "&local_58" & identifier) , (binary_expression "uVar15 * 2" identifier * number_literal) ))) ;) (expression_statement "local_c8 = *(ulong *)(param_4 + 0x10);" (assignment_expression "local_c8 = *(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 "ppuVar16 = (undefined4 **)local_7c;" (assignment_expression "ppuVar16 = (undefined4 **)local_7c" identifier = (cast_expression "(undefined4 **)local_7c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "bVar10 = uVar13 == 0x10 && uVar15 < local_c8;" (assignment_expression "bVar10 = uVar13 == 0x10 && uVar15 < local_c8" identifier = (binary_expression "uVar13 == 0x10 && uVar15 < local_c8" (binary_expression "uVar13 == 0x10" identifier == number_literal) && (binary_expression "uVar15 < local_c8" identifier < identifier))) ;) (do_statement "do {\n    uVar17 = local_50;\n    switch(*(undefined1 *)ppuVar16) {\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }\n    ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);\n  } while (&local_78 != ppuVar16);" do (compound_statement "{\n    uVar17 = local_50;\n    switch(*(undefined1 *)ppuVar16) {\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }\n    ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);\n  }" { (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (switch_statement "switch(*(undefined1 *)ppuVar16) {\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }" switch (parenthesized_expression "(*(undefined1 *)ppuVar16)" ( (pointer_expression "*(undefined1 *)ppuVar16" * (cast_expression "(undefined1 *)ppuVar16" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }" { (case_statement "case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;" case number_literal : (if_statement "if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }" { (expression_statement "FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);" (call_expression "FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5)" identifier (argument_list "(&local_58,local_50,0,local_c8 - uVar15,param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "local_c8 - uVar15" identifier - identifier) , identifier ))) ;) })) (break_statement "break;" break ;)) (case_statement "case 1:\n      if (bVar10) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;" case number_literal : (if_statement "if (bVar10) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }" { comment (expression_statement "FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);" (call_expression "FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5)" identifier (argument_list "(&local_58,local_50,0,local_c8 - uVar15,param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "local_c8 - uVar15" identifier - identifier) , identifier ))) ;) }) (else_clause "else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" else (compound_statement "{\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" { (if_statement "if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,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 = 3;\n        }" { (expression_statement "uVar11 = 3;" (assignment_expression "uVar11 = 3" identifier = number_literal) ;) }) (else_clause "else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }" else (compound_statement "{\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }" { (expression_statement "uVar11 = CONCAT44(uStack_44,local_48);" (assignment_expression "uVar11 = CONCAT44(uStack_44,local_48)" identifier = (call_expression "CONCAT44(uStack_44,local_48)" identifier (argument_list "(uStack_44,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar11 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          FUN_002dea60(&local_58,local_50,0,0,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 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }" { comment (expression_statement "FUN_002dea60(&local_58,local_50,0,0,1);" (call_expression "FUN_002dea60(&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 ))) ;) })) (expression_statement "local_58[uVar17] = param_5;" (assignment_expression "local_58[uVar17] = param_5" (subscript_expression "local_58[uVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_50 = uVar17 + 1;" (assignment_expression "local_50 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "local_58[uVar17 + 1] = 0;" (assignment_expression "local_58[uVar17 + 1] = 0" (subscript_expression "local_58[uVar17 + 1]" identifier [ (binary_expression "uVar17 + 1" identifier + number_literal) ]) = number_literal) ;) }))) (break_statement "break;" break ;)) (case_statement "case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;" case number_literal : (if_statement "if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\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        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }" { (expression_statement "uVar17 = *(ulong *)(lVar8 + 0x38);" (assignment_expression "uVar17 = *(ulong *)(lVar8 + 0x38)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x38)" * (cast_expression "(ulong *)(lVar8 + 0x38)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x38)" ( (binary_expression "lVar8 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "puVar7 = *(undefined4 **)(lVar8 + 0x30);" (assignment_expression "puVar7 = *(undefined4 **)(lVar8 + 0x30)" identifier = (pointer_expression "*(undefined4 **)(lVar8 + 0x30)" * (cast_expression "(undefined4 **)(lVar8 + 0x30)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x30)" ( (binary_expression "lVar8 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          FUN_003195a0("basic_string::append");\n        }" if (parenthesized_expression "(0x1fffffffffffffff - local_50 < uVar17)" ( (binary_expression "0x1fffffffffffffff - local_50 < uVar17" (binary_expression "0x1fffffffffffffff - local_50" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_003195a0("basic_string::append");\n        }" { comment (expression_statement "FUN_003195a0("basic_string::append");" (call_expression "FUN_003195a0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (goto_statement "goto LAB_00338268;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;" case number_literal : (if_statement "if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" if (parenthesized_expression "(local_f8 != 0)" ( (binary_expression "local_f8 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" { (expression_statement "uVar3 = *local_d0;" (assignment_expression "uVar3 = *local_d0" identifier = (pointer_expression "*local_d0" * identifier)) ;) (if_statement "if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,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 = 3;\n        }" { (expression_statement "uVar11 = 3;" (assignment_expression "uVar11 = 3" identifier = number_literal) ;) }) (else_clause "else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }" else (compound_statement "{\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }" { (expression_statement "uVar11 = CONCAT44(uStack_44,local_48);" (assignment_expression "uVar11 = CONCAT44(uStack_44,local_48)" identifier = (call_expression "CONCAT44(uStack_44,local_48)" identifier (argument_list "(uStack_44,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,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          FUN_002dea60(&local_58,local_50,0,0,1);\n        }" { (expression_statement "FUN_002dea60(&local_58,local_50,0,0,1);" (call_expression "FUN_002dea60(&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 ))) ;) })) (expression_statement "local_58[uVar17] = uVar3;" (assignment_expression "local_58[uVar17] = uVar3" (subscript_expression "local_58[uVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_50 = uVar17 + 1;" (assignment_expression "local_50 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "local_58[uVar17 + 1] = 0;" (assignment_expression "local_58[uVar17 + 1] = 0" (subscript_expression "local_58[uVar17 + 1]" identifier [ (binary_expression "uVar17 + 1" identifier + number_literal) ]) = number_literal) ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);" case number_literal : (expression_statement "uVar17 = local_70;" (assignment_expression "uVar17 = local_70" identifier = identifier) ;) (expression_statement "puVar7 = local_78;" (assignment_expression "puVar7 = local_78" identifier = identifier) ;) (labeled_statement "LAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);" statement_identifier : (expression_statement "FUN_002e0110(&local_58,puVar7,uVar17);" (call_expression "FUN_002e0110(&local_58,puVar7,uVar17)" identifier (argument_list "(&local_58,puVar7,uVar17)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;))) })) (expression_statement "ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);" (assignment_expression "ppuVar16 = (undefined4 **)((long)ppuVar16 + 1)" identifier = (cast_expression "(undefined4 **)((long)ppuVar16 + 1)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)ppuVar16 + 1)" ( (binary_expression "(long)ppuVar16 + 1" (cast_expression "(long)ppuVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(&local_78 != ppuVar16)" ( (binary_expression "&local_78 != ppuVar16" (pointer_expression "&local_78" & identifier) != identifier) )) ;) (if_statement "if (local_f8 < 2) {\n    if (local_50 < local_c8) goto LAB_00338340;\nLAB_003382a4:\n    local_c8 = local_50;\n  }\n  else {\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }\n    FUN_002e0110(&local_58);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar13 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }" if (parenthesized_expression "(local_f8 < 2)" ( (binary_expression "local_f8 < 2" identifier < number_literal) )) (compound_statement "{\n    if (local_50 < local_c8) goto LAB_00338340;\nLAB_003382a4:\n    local_c8 = local_50;\n  }" { (if_statement "if (local_50 < local_c8) goto LAB_00338340;" if (parenthesized_expression "(local_50 < local_c8)" ( (binary_expression "local_50 < local_c8" identifier < identifier) )) (goto_statement "goto LAB_00338340;" goto statement_identifier ;)) (labeled_statement "LAB_003382a4:\n    local_c8 = local_50;" statement_identifier : (expression_statement "local_c8 = local_50;" (assignment_expression "local_c8 = local_50" identifier = identifier) ;)) }) (else_clause "else {\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }\n    FUN_002e0110(&local_58);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar13 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }" else (compound_statement "{\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }\n    FUN_002e0110(&local_58);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar13 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }" { (if_statement "if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }" if (parenthesized_expression "(0x1fffffffffffffff - local_50 < local_f8 - 1)" ( (binary_expression "0x1fffffffffffffff - local_50 < local_f8 - 1" (binary_expression "0x1fffffffffffffff - local_50" number_literal - identifier) < (binary_expression "local_f8 - 1" identifier - number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }" { comment comment (expression_statement "FUN_003195a0("basic_string::append",local_d0 + 1);" (call_expression "FUN_003195a0("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_002e0110(&local_58);" (call_expression "FUN_002e0110(&local_58)" identifier (argument_list "(&local_58)" ( (pointer_expression "&local_58" & identifier) ))) ;) (if_statement "if (local_c8 <= local_50) goto LAB_003382a4;" if (parenthesized_expression "(local_c8 <= local_50)" ( (binary_expression "local_c8 <= local_50" identifier <= identifier) )) (goto_statement "goto LAB_003382a4;" goto statement_identifier ;)) (labeled_statement "LAB_00338340:\n    if (uVar13 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }" statement_identifier : (if_statement "if (uVar13 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }" if (parenthesized_expression "(uVar13 == 0x20)" ( (binary_expression "uVar13 == 0x20" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }" { comment (expression_statement "FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);" (call_expression "FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5)" identifier (argument_list "(&local_58,local_50,0,local_c8 - local_50,param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "local_c8 - local_50" identifier - identifier) , identifier ))) ;) }) (else_clause "else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }" else (compound_statement "{\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }" { (expression_statement "FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);" (call_expression "FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5)" identifier (argument_list "(&local_58,0,0,local_c8 - local_50,param_5)" ( (pointer_expression "&local_58" & identifier) , number_literal , number_literal , (binary_expression "local_c8 - local_50" identifier - identifier) , identifier ))) ;) })))) }))) (if_statement "if (local_e5 == '\0') {\n    lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);\n    local_e5 = (int)local_c8 != lVar8;\n  }" if (parenthesized_expression "(local_e5 == '\0')" ( (binary_expression "local_e5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);\n    local_e5 = (int)local_c8 != lVar8;\n  }" { (expression_statement "lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);" (assignment_expression "lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8)" identifier = (call_expression "(**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8)" (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)local_c8)" ( identifier , identifier , (cast_expression "(long)(int)local_c8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_c8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_e5 = (int)local_c8 != lVar8;" (assignment_expression "local_e5 = (int)local_c8 != lVar8" identifier = (binary_expression "(int)local_c8 != lVar8" (cast_expression "(int)local_c8" ( (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_002dac70(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_002dac70(local_58);\n  }" { (expression_statement "FUN_002dac70(local_58);" (call_expression "FUN_002dac70(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) })) (if_statement "if (local_78 != &local_68) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_00337f31:\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_e5;" (assignment_expression "auVar18[8] = local_e5" (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 ;) (ERROR "}" }))
(translation_unit "/* std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_put<wchar_t,\n   std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >\n   >::_M_insert<true>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&,\n   wchar_t, std::wstring const&) const */\n\nundefined1  [16]\nstd::money_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::_M_insert<true>\n          (undefined8 param_1,long *param_2,ulong param_3,long param_4,wchar_t param_5,\n          undefined8 *param_6)\n\n{\n  ulong uVar1;\n  long *plVar2;\n  undefined4 uVar3;\n  wchar_t wVar4;\n  int iVar5;\n  ctype *pcVar6;\n  ulong uVar7;\n  long lVar8;\n  wchar_t *pwVar9;\n  long lVar10;\n  __moneypunct_cache<wchar_t,true> *this;\n  bool bVar11;\n  ulong uVar12;\n  ulong uVar13;\n  uint uVar14;\n  wchar_t *pwVar15;\n  wchar_t **ppwVar16;\n  ulong uVar17;\n  undefined1 auVar18 [16];\n  ulong local_f8;\n  char local_e5;\n  undefined4 *local_d0;\n  ulong local_c8;\n  undefined1 local_7c [4];\n  wchar_t *local_78;\n  ulong local_70;\n  wchar_t local_68;\n  undefined4 uStack_64;\n  undefined4 *local_58;\n  ulong local_50;\n  undefined4 local_48;\n  undefined4 uStack_44;\n  \n  local_e5 = (char)param_3;\n  pcVar6 = use_facet<std::ctype<wchar_t>>((locale *)(param_4 + 0xd0));\n  uVar7 = locale::id::_M_id((id *)&moneypunct<wchar_t,true>::id);\n  plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar7 * 8);\n  lVar10 = *plVar2;\n  if (lVar10 == 0) {\n                    /* try { // try from 00338495 to 00338499 has its CatchHandler @ 003386d8 */\n    this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_0043b348;\n    *(undefined8 *)(this + 0x24) = 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    *(undefined8 *)(this + 0x60) = 0;\n    *(undefined4 *)(this + 0x68) = 0;\n    this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0;\n                    /* try { // try from 0033851d to 00338521 has its CatchHandler @ 003386d6 */\n    __moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_4 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar7);\n    lVar10 = *plVar2;\n  }\n  pwVar15 = (wchar_t *)*param_6;\n  if (*pwVar15 == *(wchar_t *)(lVar10 + 0x6c)) {\n    local_7c = *(undefined1 (*) [4])(lVar10 + 0x68);\n    local_d0 = *(undefined4 **)(lVar10 + 0x50);\n    local_f8 = *(ulong *)(lVar10 + 0x58);\n    if (param_6[1] != 0) {\n      pwVar15 = pwVar15 + 1;\n    }\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar10 + 100);\n    local_f8 = *(ulong *)(lVar10 + 0x48);\n    local_d0 = *(undefined4 **)(lVar10 + 0x40);\n  }\n  lVar8 = (**(code **)(*(long *)pcVar6 + 0x28))(pcVar6,0x800,pwVar15);\n  uVar7 = lVar8 - (long)pwVar15 >> 2;\n  if (uVar7 == 0) goto LAB_00337f31;\n  local_70 = 0;\n  local_78 = &local_68;\n  local_68 = L'\0';\n                    /* try { // try from 00337fc4 to 0033800a has its CatchHandler @ 00338695 */\n  std::wstring::reserve((wstring *)&local_78,uVar7 * 2);\n  iVar5 = *(int *)(lVar10 + 0x60);\n  uVar17 = uVar7 - (long)iVar5;\n  if (0 < (long)uVar17) {\n    if (iVar5 < 0) {\n      uVar17 = uVar7;\n    }\n    if (*(long *)(lVar10 + 0x18) == 0) {\n                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */\n      std::wstring::_M_replace((wstring *)&local_78,0,local_70,pwVar15,uVar17);\n      iVar5 = *(int *)(lVar10 + 0x60);\n    }\n    else {\n      std::wstring::_M_replace_aux((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0');\n      pwVar9 = __add_grouping<wchar_t>\n                         (local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17);\n      uVar12 = (long)pwVar9 - (long)local_78 >> 2;\n      if (local_70 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase");\n      }\n      *pwVar9 = L'\0';\n      iVar5 = *(int *)(lVar10 + 0x60);\n      local_70 = uVar12;\n    }\n  }\n  uVar12 = local_70;\n  if (0 < iVar5) {\n    wVar4 = *(wchar_t *)(lVar10 + 0x24);\n    uVar1 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar13 = 3;\n    }\n    else {\n      uVar13 = CONCAT44(uStack_64,local_68);\n    }\n    if (uVar13 < uVar1) {\n                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */\n      std::wstring::_M_mutate((wstring *)&local_78,local_70,0,(wchar_t *)0x0,1);\n    }\n    local_70 = uVar12 + 1;\n    local_78[uVar12] = wVar4;\n    local_78[uVar12 + 1] = L'\0';\n    if ((long)uVar17 < 0) {\n      std::wstring::_M_replace_aux((wstring *)&local_78,uVar1,0,-uVar17,*(wchar_t *)(lVar10 + 0x70))\n      ;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n        __throw_length_error("basic_string::append");\n      }\n    }\n    else {\n      uVar7 = (ulong)*(int *)(lVar10 + 0x60);\n      pwVar15 = pwVar15 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        __throw_length_error("basic_string::append");\n      }\n    }\n                    /* try { // try from 00338454 to 00338458 has its CatchHandler @ 00338695 */\n    std::wstring::_M_append((wstring *)&local_78,pwVar15,uVar7);\n  }\n  uVar7 = local_70 + local_f8;\n  uVar14 = *(uint *)(param_4 + 0x18) & 0xb0;\n  if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n    uVar7 = uVar7 + *(long *)(lVar10 + 0x38);\n  }\n  local_50 = 0;\n  local_58 = &local_48;\n  local_48 = 0;\n                    /* try { // try from 003380b6 to 003383ad has its CatchHandler @ 0033869a */\n  std::wstring::reserve((wstring *)&local_58,uVar7 * 2);\n  local_c8 = *(ulong *)(param_4 + 0x10);\n  ppwVar16 = (wchar_t **)local_7c;\n  bVar11 = uVar14 == 0x10 && uVar7 < local_c8;\n  do {\n    uVar17 = local_50;\n    switch(*(undefined1 *)ppwVar16) {\n    case 0:\n      if (bVar11) {\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      break;\n    case 1:\n      if (bVar11) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar10 + 0x38);\n        pwVar15 = *(wchar_t **)(lVar10 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          __throw_length_error("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      pwVar15 = local_78;\nLAB_00338268:\n      std::wstring::_M_append((wstring *)&local_58,pwVar15,uVar17);\n    }\n    ppwVar16 = (wchar_t **)((long)ppwVar16 + 1);\n  } while (&local_78 != ppwVar16);\n  if (local_f8 < 2) {\n    if (local_50 < local_c8) goto LAB_00338340;\nLAB_003382a4:\n    local_c8 = local_50;\n  }\n  else {\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\n      __throw_length_error("basic_string::append");\n    }\n    std::wstring::_M_append((wstring *)&local_58,local_d0 + 1,local_f8 - 1);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar14 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      std::wstring::_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }\n  if (local_e5 == '\0') {\n    lVar10 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);\n    local_e5 = (int)local_c8 != lVar10;\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  }\nLAB_00337f31:\n  auVar18._9_7_ = (int7)(param_3 >> 8);\n  auVar18[8] = local_e5;\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<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::_M_insert<true>\n          (undefined8 param_1,long *param_2,ulong param_3,long param_4,wchar_t param_5,\n          undefined8 *param_6)" statement_identifier (ERROR "::money_put<wchar_t,std::ostreambuf_iterator<wchar_t,std:" : : (comma_expression "money_put<wchar_t,std" (binary_expression "money_put<wchar_t" identifier < identifier) , identifier) : : (comma_expression "ostreambuf_iterator<wchar_t,std" (binary_expression "ostreambuf_iterator<wchar_t" identifier < identifier) , identifier) :) : (expression_statement "char_traits<wchar_t>>>::_M_insert<true>\n          (undefined8 param_1,long *param_2,ulong param_3,long param_4,wchar_t param_5,\n          undefined8 *param_6)" (binary_expression "char_traits<wchar_t>>>::_M_insert<true>\n          (undefined8 param_1,long *param_2,ulong param_3,long param_4,wchar_t param_5,\n          undefined8 *param_6)" (binary_expression "char_traits<wchar_t>>>::_M_insert<true" (binary_expression "char_traits<wchar_t>>>::_M_insert" identifier < (binary_expression "wchar_t>>>::_M_insert" identifier >> (ERROR ">::" > : :) identifier)) < true) > (parenthesized_expression "(undefined8 param_1,long *param_2,ulong param_3,long param_4,wchar_t param_5,\n          undefined8 *param_6)" ( (comma_expression "undefined8 param_1,long *param_2,ulong param_3,long param_4,wchar_t param_5,\n          undefined8 *param_6" identifier (ERROR "param_1" identifier) , (comma_expression "long *param_2,ulong param_3,long param_4,wchar_t param_5,\n          undefined8 *param_6" (binary_expression "long *param_2" identifier * identifier) , (ERROR "ulong" identifier) (comma_expression "param_3,long param_4,wchar_t param_5,\n          undefined8 *param_6" identifier , (ERROR "long" identifier) (comma_expression "param_4,wchar_t param_5,\n          undefined8 *param_6" identifier , (ERROR "wchar_t" identifier) (comma_expression "param_5,\n          undefined8 *param_6" identifier , (binary_expression "undefined8 *param_6" identifier * identifier)))))) ))) ;)) (compound_statement "{\n  ulong uVar1;\n  long *plVar2;\n  undefined4 uVar3;\n  wchar_t wVar4;\n  int iVar5;\n  ctype *pcVar6;\n  ulong uVar7;\n  long lVar8;\n  wchar_t *pwVar9;\n  long lVar10;\n  __moneypunct_cache<wchar_t,true> *this;\n  bool bVar11;\n  ulong uVar12;\n  ulong uVar13;\n  uint uVar14;\n  wchar_t *pwVar15;\n  wchar_t **ppwVar16;\n  ulong uVar17;\n  undefined1 auVar18 [16];\n  ulong local_f8;\n  char local_e5;\n  undefined4 *local_d0;\n  ulong local_c8;\n  undefined1 local_7c [4];\n  wchar_t *local_78;\n  ulong local_70;\n  wchar_t local_68;\n  undefined4 uStack_64;\n  undefined4 *local_58;\n  ulong local_50;\n  undefined4 local_48;\n  undefined4 uStack_44;\n  \n  local_e5 = (char)param_3;\n  pcVar6 = use_facet<std::ctype<wchar_t>>((locale *)(param_4 + 0xd0));\n  uVar7 = locale::id::_M_id((id *)&moneypunct<wchar_t,true>::id);\n  plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar7 * 8);\n  lVar10 = *plVar2;\n  if (lVar10 == 0) {\n                    /* try { // try from 00338495 to 00338499 has its CatchHandler @ 003386d8 */\n    this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_0043b348;\n    *(undefined8 *)(this + 0x24) = 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    *(undefined8 *)(this + 0x60) = 0;\n    *(undefined4 *)(this + 0x68) = 0;\n    this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0;\n                    /* try { // try from 0033851d to 00338521 has its CatchHandler @ 003386d6 */\n    __moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_4 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar7);\n    lVar10 = *plVar2;\n  }\n  pwVar15 = (wchar_t *)*param_6;\n  if (*pwVar15 == *(wchar_t *)(lVar10 + 0x6c)) {\n    local_7c = *(undefined1 (*) [4])(lVar10 + 0x68);\n    local_d0 = *(undefined4 **)(lVar10 + 0x50);\n    local_f8 = *(ulong *)(lVar10 + 0x58);\n    if (param_6[1] != 0) {\n      pwVar15 = pwVar15 + 1;\n    }\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar10 + 100);\n    local_f8 = *(ulong *)(lVar10 + 0x48);\n    local_d0 = *(undefined4 **)(lVar10 + 0x40);\n  }\n  lVar8 = (**(code **)(*(long *)pcVar6 + 0x28))(pcVar6,0x800,pwVar15);\n  uVar7 = lVar8 - (long)pwVar15 >> 2;\n  if (uVar7 == 0) goto LAB_00337f31;\n  local_70 = 0;\n  local_78 = &local_68;\n  local_68 = L'\0';\n                    /* try { // try from 00337fc4 to 0033800a has its CatchHandler @ 00338695 */\n  std::wstring::reserve((wstring *)&local_78,uVar7 * 2);\n  iVar5 = *(int *)(lVar10 + 0x60);\n  uVar17 = uVar7 - (long)iVar5;\n  if (0 < (long)uVar17) {\n    if (iVar5 < 0) {\n      uVar17 = uVar7;\n    }\n    if (*(long *)(lVar10 + 0x18) == 0) {\n                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */\n      std::wstring::_M_replace((wstring *)&local_78,0,local_70,pwVar15,uVar17);\n      iVar5 = *(int *)(lVar10 + 0x60);\n    }\n    else {\n      std::wstring::_M_replace_aux((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0');\n      pwVar9 = __add_grouping<wchar_t>\n                         (local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17);\n      uVar12 = (long)pwVar9 - (long)local_78 >> 2;\n      if (local_70 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase");\n      }\n      *pwVar9 = L'\0';\n      iVar5 = *(int *)(lVar10 + 0x60);\n      local_70 = uVar12;\n    }\n  }\n  uVar12 = local_70;\n  if (0 < iVar5) {\n    wVar4 = *(wchar_t *)(lVar10 + 0x24);\n    uVar1 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar13 = 3;\n    }\n    else {\n      uVar13 = CONCAT44(uStack_64,local_68);\n    }\n    if (uVar13 < uVar1) {\n                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */\n      std::wstring::_M_mutate((wstring *)&local_78,local_70,0,(wchar_t *)0x0,1);\n    }\n    local_70 = uVar12 + 1;\n    local_78[uVar12] = wVar4;\n    local_78[uVar12 + 1] = L'\0';\n    if ((long)uVar17 < 0) {\n      std::wstring::_M_replace_aux((wstring *)&local_78,uVar1,0,-uVar17,*(wchar_t *)(lVar10 + 0x70))\n      ;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n        __throw_length_error("basic_string::append");\n      }\n    }\n    else {\n      uVar7 = (ulong)*(int *)(lVar10 + 0x60);\n      pwVar15 = pwVar15 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        __throw_length_error("basic_string::append");\n      }\n    }\n                    /* try { // try from 00338454 to 00338458 has its CatchHandler @ 00338695 */\n    std::wstring::_M_append((wstring *)&local_78,pwVar15,uVar7);\n  }\n  uVar7 = local_70 + local_f8;\n  uVar14 = *(uint *)(param_4 + 0x18) & 0xb0;\n  if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n    uVar7 = uVar7 + *(long *)(lVar10 + 0x38);\n  }\n  local_50 = 0;\n  local_58 = &local_48;\n  local_48 = 0;\n                    /* try { // try from 003380b6 to 003383ad has its CatchHandler @ 0033869a */\n  std::wstring::reserve((wstring *)&local_58,uVar7 * 2);\n  local_c8 = *(ulong *)(param_4 + 0x10);\n  ppwVar16 = (wchar_t **)local_7c;\n  bVar11 = uVar14 == 0x10 && uVar7 < local_c8;\n  do {\n    uVar17 = local_50;\n    switch(*(undefined1 *)ppwVar16) {\n    case 0:\n      if (bVar11) {\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      break;\n    case 1:\n      if (bVar11) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar10 + 0x38);\n        pwVar15 = *(wchar_t **)(lVar10 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          __throw_length_error("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      pwVar15 = local_78;\nLAB_00338268:\n      std::wstring::_M_append((wstring *)&local_58,pwVar15,uVar17);\n    }\n    ppwVar16 = (wchar_t **)((long)ppwVar16 + 1);\n  } while (&local_78 != ppwVar16);\n  if (local_f8 < 2) {\n    if (local_50 < local_c8) goto LAB_00338340;\nLAB_003382a4:\n    local_c8 = local_50;\n  }\n  else {\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\n      __throw_length_error("basic_string::append");\n    }\n    std::wstring::_M_append((wstring *)&local_58,local_d0 + 1,local_f8 - 1);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar14 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      std::wstring::_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }\n  if (local_e5 == '\0') {\n    lVar10 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);\n    local_e5 = (int)local_c8 != lVar10;\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  }\nLAB_00337f31:\n  auVar18._9_7_ = (int7)(param_3 >> 8);\n  auVar18[8] = local_e5;\n  *(undefined8 *)(param_4 + 0x10) = 0;\n  auVar18._0_8_ = param_2;\n  return auVar18;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "wchar_t wVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "ctype *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "wchar_t *pwVar9;" type_identifier (pointer_declarator "*pwVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (expression_statement "__moneypunct_cache<wchar_t,true> *this;" (comma_expression "__moneypunct_cache<wchar_t,true> *this" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "true> *this" true > (pointer_expression "*this" * identifier))) ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "wchar_t *pwVar15;" type_identifier (pointer_declarator "*pwVar15" * identifier) ;) (declaration "wchar_t **ppwVar16;" type_identifier (pointer_declarator "**ppwVar16" * (pointer_declarator "*ppwVar16" * identifier)) ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "undefined1 auVar18 [16];" type_identifier (array_declarator "auVar18 [16]" identifier [ number_literal ]) ;) (declaration "ulong local_f8;" type_identifier identifier ;) (declaration "char local_e5;" primitive_type identifier ;) (declaration "undefined4 *local_d0;" type_identifier (pointer_declarator "*local_d0" * identifier) ;) (declaration "ulong local_c8;" type_identifier identifier ;) (declaration "undefined1 local_7c [4];" type_identifier (array_declarator "local_7c [4]" identifier [ number_literal ]) ;) (declaration "wchar_t *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_70;" type_identifier identifier ;) (declaration "wchar_t local_68;" type_identifier identifier ;) (declaration "undefined4 uStack_64;" type_identifier identifier ;) (declaration "undefined4 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 uStack_44;" type_identifier identifier ;) (expression_statement "local_e5 = (char)param_3;" (assignment_expression "local_e5 = (char)param_3" identifier = (cast_expression "(char)param_3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar6 = use_facet<std::ctype<wchar_t>>((locale *)(param_4 + 0xd0));" (binary_expression "pcVar6 = use_facet<std::ctype<wchar_t>>((locale *)(param_4 + 0xd0))" (assignment_expression "pcVar6 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "wchar_t>>((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 "uVar7 = locale::" (assignment_expression "uVar7 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&moneypunct<wchar_t,true>::id);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)&moneypunct<wchar_t,true>::id);" (call_expression "_M_id((id *)&moneypunct<wchar_t,true>::id)" identifier (argument_list "((id *)&moneypunct<wchar_t,true>::id)" ( (binary_expression "(id *)&moneypunct<wchar_t" (cast_expression "(id *)&moneypunct" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&moneypunct" & identifier)) < identifier) , (binary_expression "true>::id" true > (ERROR "::" : :) identifier) ))) ;)) (expression_statement "plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar7 * 8);" (assignment_expression "plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar7 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar7 * 8)" ( (binary_expression "*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + uVar7 * 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 "uVar7 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar10 = *plVar2;" (assignment_expression "lVar10 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (if_statement "if (lVar10 == 0) {\n                    /* try { // try from 00338495 to 00338499 has its CatchHandler @ 003386d8 */\n    this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_0043b348;\n    *(undefined8 *)(this + 0x24) = 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    *(undefined8 *)(this + 0x60) = 0;\n    *(undefined4 *)(this + 0x68) = 0;\n    this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0;\n                    /* try { // try from 0033851d to 00338521 has its CatchHandler @ 003386d6 */\n    __moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_4 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar7);\n    lVar10 = *plVar2;\n  }" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 00338495 to 00338499 has its CatchHandler @ 003386d8 */\n    this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_0043b348;\n    *(undefined8 *)(this + 0x24) = 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    *(undefined8 *)(this + 0x60) = 0;\n    *(undefined4 *)(this + 0x68) = 0;\n    this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0;\n                    /* try { // try from 0033851d to 00338521 has its CatchHandler @ 003386d6 */\n    __moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_4 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar7);\n    lVar10 = *plVar2;\n  }" { comment (expression_statement "this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0);" (assignment_expression "this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0)" identifier = (parenthesized_expression "(__moneypunct_cache<wchar_t,true> *)operator_new(0xa0)" ( (comma_expression "__moneypunct_cache<wchar_t,true> *)operator_new(0xa0)" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "true> *)operator_new(0xa0)" true > (pointer_expression "*)operator_new(0xa0)" * (ERROR ")" )) (call_expression "operator_new(0xa0)" identifier (argument_list "(0xa0)" ( 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[0x20] = (__moneypunct_cache<wchar_t,true>)0x0;" (assignment_expression "this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0" (subscript_expression "this[0x20]" identifier [ number_literal ]) = (parenthesized_expression "(__moneypunct_cache<wchar_t,true>)0x0" ( (comma_expression "__moneypunct_cache<wchar_t,true>)0x0" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "true>)0x0" true > (ERROR ")" )) number_literal)) ))) ;) (expression_statement "*(undefined ***)this = &PTR____moneypunct_cache_0043b348;" (assignment_expression "*(undefined ***)this = &PTR____moneypunct_cache_0043b348" (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_0043b348" & identifier)) ;) (expression_statement "*(undefined8 *)(this + 0x24) = 0;" (assignment_expression "*(undefined8 *)(this + 0x24) = 0" (pointer_expression "*(undefined8 *)(this + 0x24)" * (cast_expression "(undefined8 *)(this + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x24)" ( (binary_expression "this + 0x24" 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 "*(undefined8 *)(this + 0x60) = 0;" (assignment_expression "*(undefined8 *)(this + 0x60) = 0" (pointer_expression "*(undefined8 *)(this + 0x60)" * (cast_expression "(undefined8 *)(this + 0x60)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x60)" ( (binary_expression "this + 0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x68) = 0;" (assignment_expression "*(undefined4 *)(this + 0x68) = 0" (pointer_expression "*(undefined4 *)(this + 0x68)" * (cast_expression "(undefined4 *)(this + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x68)" ( (binary_expression "this + 0x68" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0;" (assignment_expression "this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0" (subscript_expression "this[0x98]" identifier [ number_literal ]) = (parenthesized_expression "(__moneypunct_cache<wchar_t,true>)0x0" ( (comma_expression "__moneypunct_cache<wchar_t,true>)0x0" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "true>)0x0" true > (ERROR ")" )) number_literal)) ))) ;) comment (expression_statement "__moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_4 + 0xd0));" (comma_expression "__moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_4 + 0xd0))" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "true>::_M_cache(this,(locale *)(param_4 + 0xd0))" true > (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,uVar7);" statement_identifier : (ERROR ":" :) (labeled_statement "_Impl::_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar7);" (call_expression "_M_install_cache(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar7)" identifier (argument_list "(*(_Impl **)(param_4 + 0xd0),(facet *)this,uVar7)" ( (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 "lVar10 = *plVar2;" (assignment_expression "lVar10 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) })) (expression_statement "pwVar15 = (wchar_t *)*param_6;" (assignment_expression "pwVar15 = (wchar_t *)*param_6" identifier = (cast_expression "(wchar_t *)*param_6" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_6" * identifier))) ;) (if_statement "if (*pwVar15 == *(wchar_t *)(lVar10 + 0x6c)) {\n    local_7c = *(undefined1 (*) [4])(lVar10 + 0x68);\n    local_d0 = *(undefined4 **)(lVar10 + 0x50);\n    local_f8 = *(ulong *)(lVar10 + 0x58);\n    if (param_6[1] != 0) {\n      pwVar15 = pwVar15 + 1;\n    }\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar10 + 100);\n    local_f8 = *(ulong *)(lVar10 + 0x48);\n    local_d0 = *(undefined4 **)(lVar10 + 0x40);\n  }" if (parenthesized_expression "(*pwVar15 == *(wchar_t *)(lVar10 + 0x6c))" ( (binary_expression "*pwVar15 == *(wchar_t *)(lVar10 + 0x6c)" (pointer_expression "*pwVar15" * identifier) == (pointer_expression "*(wchar_t *)(lVar10 + 0x6c)" * (cast_expression "(wchar_t *)(lVar10 + 0x6c)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x6c)" ( (binary_expression "lVar10 + 0x6c" identifier + number_literal) ))))) )) (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar10 + 0x68);\n    local_d0 = *(undefined4 **)(lVar10 + 0x50);\n    local_f8 = *(ulong *)(lVar10 + 0x58);\n    if (param_6[1] != 0) {\n      pwVar15 = pwVar15 + 1;\n    }\n  }" { (expression_statement "local_7c = *(undefined1 (*) [4])(lVar10 + 0x68);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar10 + 0x68)" identifier = (pointer_expression "*(undefined1 (*) [4])(lVar10 + 0x68)" * (cast_expression "(undefined1 (*) [4])(lVar10 + 0x68)" ( (type_descriptor "undefined1 (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar10 + 0x68)" ( (binary_expression "lVar10 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = *(undefined4 **)(lVar10 + 0x50);" (assignment_expression "local_d0 = *(undefined4 **)(lVar10 + 0x50)" identifier = (pointer_expression "*(undefined4 **)(lVar10 + 0x50)" * (cast_expression "(undefined4 **)(lVar10 + 0x50)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar10 + 0x50)" ( (binary_expression "lVar10 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "local_f8 = *(ulong *)(lVar10 + 0x58);" (assignment_expression "local_f8 = *(ulong *)(lVar10 + 0x58)" identifier = (pointer_expression "*(ulong *)(lVar10 + 0x58)" * (cast_expression "(ulong *)(lVar10 + 0x58)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x58)" ( (binary_expression "lVar10 + 0x58" identifier + number_literal) ))))) ;) (if_statement "if (param_6[1] != 0) {\n      pwVar15 = pwVar15 + 1;\n    }" if (parenthesized_expression "(param_6[1] != 0)" ( (binary_expression "param_6[1] != 0" (subscript_expression "param_6[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      pwVar15 = pwVar15 + 1;\n    }" { (expression_statement "pwVar15 = pwVar15 + 1;" (assignment_expression "pwVar15 = pwVar15 + 1" identifier = (binary_expression "pwVar15 + 1" identifier + number_literal)) ;) })) }) (else_clause "else {\n    local_7c = *(undefined1 (*) [4])(lVar10 + 100);\n    local_f8 = *(ulong *)(lVar10 + 0x48);\n    local_d0 = *(undefined4 **)(lVar10 + 0x40);\n  }" else (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar10 + 100);\n    local_f8 = *(ulong *)(lVar10 + 0x48);\n    local_d0 = *(undefined4 **)(lVar10 + 0x40);\n  }" { (expression_statement "local_7c = *(undefined1 (*) [4])(lVar10 + 100);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar10 + 100)" identifier = (pointer_expression "*(undefined1 (*) [4])(lVar10 + 100)" * (cast_expression "(undefined1 (*) [4])(lVar10 + 100)" ( (type_descriptor "undefined1 (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar10 + 100)" ( (binary_expression "lVar10 + 100" identifier + number_literal) ))))) ;) (expression_statement "local_f8 = *(ulong *)(lVar10 + 0x48);" (assignment_expression "local_f8 = *(ulong *)(lVar10 + 0x48)" identifier = (pointer_expression "*(ulong *)(lVar10 + 0x48)" * (cast_expression "(ulong *)(lVar10 + 0x48)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x48)" ( (binary_expression "lVar10 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = *(undefined4 **)(lVar10 + 0x40);" (assignment_expression "local_d0 = *(undefined4 **)(lVar10 + 0x40)" identifier = (pointer_expression "*(undefined4 **)(lVar10 + 0x40)" * (cast_expression "(undefined4 **)(lVar10 + 0x40)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar10 + 0x40)" ( (binary_expression "lVar10 + 0x40" identifier + number_literal) ))))) ;) }))) (expression_statement "lVar8 = (**(code **)(*(long *)pcVar6 + 0x28))(pcVar6,0x800,pwVar15);" (assignment_expression "lVar8 = (**(code **)(*(long *)pcVar6 + 0x28))(pcVar6,0x800,pwVar15)" identifier = (call_expression "(**(code **)(*(long *)pcVar6 + 0x28))(pcVar6,0x800,pwVar15)" (parenthesized_expression "(**(code **)(*(long *)pcVar6 + 0x28))" ( (pointer_expression "**(code **)(*(long *)pcVar6 + 0x28)" * (pointer_expression "*(code **)(*(long *)pcVar6 + 0x28)" * (cast_expression "(code **)(*(long *)pcVar6 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar6 + 0x28)" ( (binary_expression "*(long *)pcVar6 + 0x28" (pointer_expression "*(long *)pcVar6" * (cast_expression "(long *)pcVar6" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pcVar6,0x800,pwVar15)" ( identifier , number_literal , identifier )))) ;) (expression_statement "uVar7 = lVar8 - (long)pwVar15 >> 2;" (assignment_expression "uVar7 = lVar8 - (long)pwVar15 >> 2" identifier = (binary_expression "lVar8 - (long)pwVar15 >> 2" (binary_expression "lVar8 - (long)pwVar15" identifier - (cast_expression "(long)pwVar15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar7 == 0) goto LAB_00337f31;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00337f31;" goto statement_identifier ;)) (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 = L'\0';" (assignment_expression "local_68 = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) comment (labeled_statement "std::wstring::reserve((wstring *)&local_78,uVar7 * 2);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::reserve((wstring *)&local_78,uVar7 * 2);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((wstring *)&local_78,uVar7 * 2);" (call_expression "reserve((wstring *)&local_78,uVar7 * 2)" identifier (argument_list "((wstring *)&local_78,uVar7 * 2)" ( (cast_expression "(wstring *)&local_78" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , (binary_expression "uVar7 * 2" identifier * number_literal) ))) ;))) (expression_statement "iVar5 = *(int *)(lVar10 + 0x60);" (assignment_expression "iVar5 = *(int *)(lVar10 + 0x60)" identifier = (pointer_expression "*(int *)(lVar10 + 0x60)" * (cast_expression "(int *)(lVar10 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x60)" ( (binary_expression "lVar10 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = uVar7 - (long)iVar5;" (assignment_expression "uVar17 = uVar7 - (long)iVar5" identifier = (binary_expression "uVar7 - (long)iVar5" identifier - (cast_expression "(long)iVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0 < (long)uVar17) {\n    if (iVar5 < 0) {\n      uVar17 = uVar7;\n    }\n    if (*(long *)(lVar10 + 0x18) == 0) {\n                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */\n      std::wstring::_M_replace((wstring *)&local_78,0,local_70,pwVar15,uVar17);\n      iVar5 = *(int *)(lVar10 + 0x60);\n    }\n    else {\n      std::wstring::_M_replace_aux((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0');\n      pwVar9 = __add_grouping<wchar_t>\n                         (local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17);\n      uVar12 = (long)pwVar9 - (long)local_78 >> 2;\n      if (local_70 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase");\n      }\n      *pwVar9 = L'\0';\n      iVar5 = *(int *)(lVar10 + 0x60);\n      local_70 = uVar12;\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 (iVar5 < 0) {\n      uVar17 = uVar7;\n    }\n    if (*(long *)(lVar10 + 0x18) == 0) {\n                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */\n      std::wstring::_M_replace((wstring *)&local_78,0,local_70,pwVar15,uVar17);\n      iVar5 = *(int *)(lVar10 + 0x60);\n    }\n    else {\n      std::wstring::_M_replace_aux((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0');\n      pwVar9 = __add_grouping<wchar_t>\n                         (local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17);\n      uVar12 = (long)pwVar9 - (long)local_78 >> 2;\n      if (local_70 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase");\n      }\n      *pwVar9 = L'\0';\n      iVar5 = *(int *)(lVar10 + 0x60);\n      local_70 = uVar12;\n    }\n  }" { (if_statement "if (iVar5 < 0) {\n      uVar17 = uVar7;\n    }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar17 = uVar7;\n    }" { (expression_statement "uVar17 = uVar7;" (assignment_expression "uVar17 = uVar7" identifier = identifier) ;) })) (if_statement "if (*(long *)(lVar10 + 0x18) == 0) {\n                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */\n      std::wstring::_M_replace((wstring *)&local_78,0,local_70,pwVar15,uVar17);\n      iVar5 = *(int *)(lVar10 + 0x60);\n    }\n    else {\n      std::wstring::_M_replace_aux((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0');\n      pwVar9 = __add_grouping<wchar_t>\n                         (local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17);\n      uVar12 = (long)pwVar9 - (long)local_78 >> 2;\n      if (local_70 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase");\n      }\n      *pwVar9 = L'\0';\n      iVar5 = *(int *)(lVar10 + 0x60);\n      local_70 = uVar12;\n    }" if (parenthesized_expression "(*(long *)(lVar10 + 0x18) == 0)" ( (binary_expression "*(long *)(lVar10 + 0x18) == 0" (pointer_expression "*(long *)(lVar10 + 0x18)" * (cast_expression "(long *)(lVar10 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x18)" ( (binary_expression "lVar10 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */\n      std::wstring::_M_replace((wstring *)&local_78,0,local_70,pwVar15,uVar17);\n      iVar5 = *(int *)(lVar10 + 0x60);\n    }" { comment (labeled_statement "std::wstring::_M_replace((wstring *)&local_78,0,local_70,pwVar15,uVar17);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace((wstring *)&local_78,0,local_70,pwVar15,uVar17);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((wstring *)&local_78,0,local_70,pwVar15,uVar17);" (call_expression "_M_replace((wstring *)&local_78,0,local_70,pwVar15,uVar17)" identifier (argument_list "((wstring *)&local_78,0,local_70,pwVar15,uVar17)" ( (cast_expression "(wstring *)&local_78" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , number_literal , identifier , identifier , identifier ))) ;))) (expression_statement "iVar5 = *(int *)(lVar10 + 0x60);" (assignment_expression "iVar5 = *(int *)(lVar10 + 0x60)" identifier = (pointer_expression "*(int *)(lVar10 + 0x60)" * (cast_expression "(int *)(lVar10 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x60)" ( (binary_expression "lVar10 + 0x60" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      std::wstring::_M_replace_aux((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0');\n      pwVar9 = __add_grouping<wchar_t>\n                         (local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17);\n      uVar12 = (long)pwVar9 - (long)local_78 >> 2;\n      if (local_70 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase");\n      }\n      *pwVar9 = L'\0';\n      iVar5 = *(int *)(lVar10 + 0x60);\n      local_70 = uVar12;\n    }" else (compound_statement "{\n      std::wstring::_M_replace_aux((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0');\n      pwVar9 = __add_grouping<wchar_t>\n                         (local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17);\n      uVar12 = (long)pwVar9 - (long)local_78 >> 2;\n      if (local_70 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase");\n      }\n      *pwVar9 = L'\0';\n      iVar5 = *(int *)(lVar10 + 0x60);\n      local_70 = uVar12;\n    }" { (labeled_statement "std::wstring::_M_replace_aux((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0');" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace_aux((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0');" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0');" (call_expression "_M_replace_aux((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0')" identifier (argument_list "((wstring *)&local_78,0,local_70,uVar17 * 2,L'\0')" ( (cast_expression "(wstring *)&local_78" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , number_literal , identifier , (binary_expression "uVar17 * 2" identifier * number_literal) , (char_literal "L'\0'" L' escape_sequence ') ))) ;))) (expression_statement "pwVar9 = __add_grouping<wchar_t>\n                         (local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17);" (assignment_expression "pwVar9 = __add_grouping<wchar_t>\n                         (local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17)" identifier = (binary_expression "__add_grouping<wchar_t>\n                         (local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17)" (binary_expression "__add_grouping<wchar_t" identifier < identifier) > (parenthesized_expression "(local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17)" ( (comma_expression "local_78,*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17" identifier , (comma_expression "*(wchar_t *)(lVar10 + 0x28),*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17" (pointer_expression "*(wchar_t *)(lVar10 + 0x28)" * (cast_expression "(wchar_t *)(lVar10 + 0x28)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x28)" ( (binary_expression "lVar10 + 0x28" identifier + number_literal) )))) , (comma_expression "*(char **)(lVar10 + 0x10),\n                          *(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17" (pointer_expression "*(char **)(lVar10 + 0x10)" * (cast_expression "(char **)(lVar10 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) )))) , (comma_expression "*(ulong *)(lVar10 + 0x18),pwVar15,pwVar15 + uVar17" (pointer_expression "*(ulong *)(lVar10 + 0x18)" * (cast_expression "(ulong *)(lVar10 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x18)" ( (binary_expression "lVar10 + 0x18" identifier + number_literal) )))) , (comma_expression "pwVar15,pwVar15 + uVar17" identifier , (binary_expression "pwVar15 + uVar17" identifier + identifier)))))) )))) ;) (expression_statement "uVar12 = (long)pwVar9 - (long)local_78 >> 2;" (assignment_expression "uVar12 = (long)pwVar9 - (long)local_78 >> 2" identifier = (binary_expression "(long)pwVar9 - (long)local_78 >> 2" (binary_expression "(long)pwVar9 - (long)local_78" (cast_expression "(long)pwVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_78" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (local_70 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase");\n      }" if (parenthesized_expression "(local_70 < uVar12)" ( (binary_expression "local_70 < uVar12" identifier < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */\n        __throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase");\n      }" { comment comment (expression_statement "__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase");" (call_expression "__throw_out_of_range_fmt\n                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","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 "*pwVar9 = L'\0';" (assignment_expression "*pwVar9 = L'\0'" (pointer_expression "*pwVar9" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "iVar5 = *(int *)(lVar10 + 0x60);" (assignment_expression "iVar5 = *(int *)(lVar10 + 0x60)" identifier = (pointer_expression "*(int *)(lVar10 + 0x60)" * (cast_expression "(int *)(lVar10 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x60)" ( (binary_expression "lVar10 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "local_70 = uVar12;" (assignment_expression "local_70 = uVar12" identifier = identifier) ;) }))) })) (expression_statement "uVar12 = local_70;" (assignment_expression "uVar12 = local_70" identifier = identifier) ;) (if_statement "if (0 < iVar5) {\n    wVar4 = *(wchar_t *)(lVar10 + 0x24);\n    uVar1 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar13 = 3;\n    }\n    else {\n      uVar13 = CONCAT44(uStack_64,local_68);\n    }\n    if (uVar13 < uVar1) {\n                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */\n      std::wstring::_M_mutate((wstring *)&local_78,local_70,0,(wchar_t *)0x0,1);\n    }\n    local_70 = uVar12 + 1;\n    local_78[uVar12] = wVar4;\n    local_78[uVar12 + 1] = L'\0';\n    if ((long)uVar17 < 0) {\n      std::wstring::_M_replace_aux((wstring *)&local_78,uVar1,0,-uVar17,*(wchar_t *)(lVar10 + 0x70))\n      ;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n        __throw_length_error("basic_string::append");\n      }\n    }\n    else {\n      uVar7 = (ulong)*(int *)(lVar10 + 0x60);\n      pwVar15 = pwVar15 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        __throw_length_error("basic_string::append");\n      }\n    }\n                    /* try { // try from 00338454 to 00338458 has its CatchHandler @ 00338695 */\n    std::wstring::_M_append((wstring *)&local_78,pwVar15,uVar7);\n  }" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (compound_statement "{\n    wVar4 = *(wchar_t *)(lVar10 + 0x24);\n    uVar1 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar13 = 3;\n    }\n    else {\n      uVar13 = CONCAT44(uStack_64,local_68);\n    }\n    if (uVar13 < uVar1) {\n                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */\n      std::wstring::_M_mutate((wstring *)&local_78,local_70,0,(wchar_t *)0x0,1);\n    }\n    local_70 = uVar12 + 1;\n    local_78[uVar12] = wVar4;\n    local_78[uVar12 + 1] = L'\0';\n    if ((long)uVar17 < 0) {\n      std::wstring::_M_replace_aux((wstring *)&local_78,uVar1,0,-uVar17,*(wchar_t *)(lVar10 + 0x70))\n      ;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n        __throw_length_error("basic_string::append");\n      }\n    }\n    else {\n      uVar7 = (ulong)*(int *)(lVar10 + 0x60);\n      pwVar15 = pwVar15 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        __throw_length_error("basic_string::append");\n      }\n    }\n                    /* try { // try from 00338454 to 00338458 has its CatchHandler @ 00338695 */\n    std::wstring::_M_append((wstring *)&local_78,pwVar15,uVar7);\n  }" { (expression_statement "wVar4 = *(wchar_t *)(lVar10 + 0x24);" (assignment_expression "wVar4 = *(wchar_t *)(lVar10 + 0x24)" identifier = (pointer_expression "*(wchar_t *)(lVar10 + 0x24)" * (cast_expression "(wchar_t *)(lVar10 + 0x24)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x24)" ( (binary_expression "lVar10 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = local_70 + 1;" (assignment_expression "uVar1 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_78 == &local_68) {\n      uVar13 = 3;\n    }\n    else {\n      uVar13 = CONCAT44(uStack_64,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      uVar13 = 3;\n    }" { (expression_statement "uVar13 = 3;" (assignment_expression "uVar13 = 3" identifier = number_literal) ;) }) (else_clause "else {\n      uVar13 = CONCAT44(uStack_64,local_68);\n    }" else (compound_statement "{\n      uVar13 = CONCAT44(uStack_64,local_68);\n    }" { (expression_statement "uVar13 = CONCAT44(uStack_64,local_68);" (assignment_expression "uVar13 = CONCAT44(uStack_64,local_68)" identifier = (call_expression "CONCAT44(uStack_64,local_68)" identifier (argument_list "(uStack_64,local_68)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar13 < uVar1) {\n                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */\n      std::wstring::_M_mutate((wstring *)&local_78,local_70,0,(wchar_t *)0x0,1);\n    }" if (parenthesized_expression "(uVar13 < uVar1)" ( (binary_expression "uVar13 < uVar1" identifier < identifier) )) (compound_statement "{\n                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */\n      std::wstring::_M_mutate((wstring *)&local_78,local_70,0,(wchar_t *)0x0,1);\n    }" { comment (labeled_statement "std::wstring::_M_mutate((wstring *)&local_78,local_70,0,(wchar_t *)0x0,1);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_mutate((wstring *)&local_78,local_70,0,(wchar_t *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((wstring *)&local_78,local_70,0,(wchar_t *)0x0,1);" (call_expression "_M_mutate((wstring *)&local_78,local_70,0,(wchar_t *)0x0,1)" identifier (argument_list "((wstring *)&local_78,local_70,0,(wchar_t *)0x0,1)" ( (cast_expression "(wstring *)&local_78" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , identifier , number_literal , (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "local_70 = uVar12 + 1;" (assignment_expression "local_70 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "local_78[uVar12] = wVar4;" (assignment_expression "local_78[uVar12] = wVar4" (subscript_expression "local_78[uVar12]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_78[uVar12 + 1] = L'\0';" (assignment_expression "local_78[uVar12 + 1] = L'\0'" (subscript_expression "local_78[uVar12 + 1]" identifier [ (binary_expression "uVar12 + 1" identifier + number_literal) ]) = (char_literal "L'\0'" L' escape_sequence ')) ;) (if_statement "if ((long)uVar17 < 0) {\n      std::wstring::_M_replace_aux((wstring *)&local_78,uVar1,0,-uVar17,*(wchar_t *)(lVar10 + 0x70))\n      ;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n        __throw_length_error("basic_string::append");\n      }\n    }\n    else {\n      uVar7 = (ulong)*(int *)(lVar10 + 0x60);\n      pwVar15 = pwVar15 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\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      std::wstring::_M_replace_aux((wstring *)&local_78,uVar1,0,-uVar17,*(wchar_t *)(lVar10 + 0x70))\n      ;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n        __throw_length_error("basic_string::append");\n      }\n    }" { (labeled_statement "std::wstring::_M_replace_aux((wstring *)&local_78,uVar1,0,-uVar17,*(wchar_t *)(lVar10 + 0x70))\n      ;" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace_aux((wstring *)&local_78,uVar1,0,-uVar17,*(wchar_t *)(lVar10 + 0x70))\n      ;" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((wstring *)&local_78,uVar1,0,-uVar17,*(wchar_t *)(lVar10 + 0x70))\n      ;" (call_expression "_M_replace_aux((wstring *)&local_78,uVar1,0,-uVar17,*(wchar_t *)(lVar10 + 0x70))" identifier (argument_list "((wstring *)&local_78,uVar1,0,-uVar17,*(wchar_t *)(lVar10 + 0x70))" ( (cast_expression "(wstring *)&local_78" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , identifier , number_literal , (unary_expression "-uVar17" - identifier) , (pointer_expression "*(wchar_t *)(lVar10 + 0x70)" * (cast_expression "(wchar_t *)(lVar10 + 0x70)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x70)" ( (binary_expression "lVar10 + 0x70" identifier + number_literal) )))) ))) ;))) (if_statement "if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n        __throw_length_error("basic_string::append");\n      }" if (parenthesized_expression "(0x1fffffffffffffff - local_70 < uVar7)" ( (binary_expression "0x1fffffffffffffff - local_70 < uVar7" (binary_expression "0x1fffffffffffffff - 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      uVar7 = (ulong)*(int *)(lVar10 + 0x60);\n      pwVar15 = pwVar15 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        __throw_length_error("basic_string::append");\n      }\n    }" else (compound_statement "{\n      uVar7 = (ulong)*(int *)(lVar10 + 0x60);\n      pwVar15 = pwVar15 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        __throw_length_error("basic_string::append");\n      }\n    }" { (expression_statement "uVar7 = (ulong)*(int *)(lVar10 + 0x60);" (assignment_expression "uVar7 = (ulong)*(int *)(lVar10 + 0x60)" identifier = (binary_expression "(ulong)*(int *)(lVar10 + 0x60)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(int *)(lVar10 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x60)" ( (binary_expression "lVar10 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "pwVar15 = pwVar15 + uVar17;" (assignment_expression "pwVar15 = pwVar15 + uVar17" identifier = (binary_expression "pwVar15 + uVar17" identifier + identifier)) ;) (if_statement "if (0x1fffffffffffffff - local_70 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\n        __throw_length_error("basic_string::append");\n      }" if (parenthesized_expression "(0x1fffffffffffffff - local_70 < uVar7)" ( (binary_expression "0x1fffffffffffffff - local_70 < uVar7" (binary_expression "0x1fffffffffffffff - local_70" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */\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::wstring::_M_append((wstring *)&local_78,pwVar15,uVar7);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_append((wstring *)&local_78,pwVar15,uVar7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((wstring *)&local_78,pwVar15,uVar7);" (call_expression "_M_append((wstring *)&local_78,pwVar15,uVar7)" identifier (argument_list "((wstring *)&local_78,pwVar15,uVar7)" ( (cast_expression "(wstring *)&local_78" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , identifier , identifier ))) ;))) })) (expression_statement "uVar7 = local_70 + local_f8;" (assignment_expression "uVar7 = local_70 + local_f8" identifier = (binary_expression "local_70 + local_f8" identifier + identifier)) ;) (expression_statement "uVar14 = *(uint *)(param_4 + 0x18) & 0xb0;" (assignment_expression "uVar14 = *(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    uVar7 = uVar7 + *(long *)(lVar10 + 0x38);\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    uVar7 = uVar7 + *(long *)(lVar10 + 0x38);\n  }" { (expression_statement "uVar7 = uVar7 + *(long *)(lVar10 + 0x38);" (assignment_expression "uVar7 = uVar7 + *(long *)(lVar10 + 0x38)" identifier = (binary_expression "uVar7 + *(long *)(lVar10 + 0x38)" identifier + (pointer_expression "*(long *)(lVar10 + 0x38)" * (cast_expression "(long *)(lVar10 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x38)" ( (binary_expression "lVar10 + 0x38" 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::wstring::reserve((wstring *)&local_58,uVar7 * 2);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::reserve((wstring *)&local_58,uVar7 * 2);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((wstring *)&local_58,uVar7 * 2);" (call_expression "reserve((wstring *)&local_58,uVar7 * 2)" identifier (argument_list "((wstring *)&local_58,uVar7 * 2)" ( (cast_expression "(wstring *)&local_58" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , (binary_expression "uVar7 * 2" identifier * number_literal) ))) ;))) (expression_statement "local_c8 = *(ulong *)(param_4 + 0x10);" (assignment_expression "local_c8 = *(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 "ppwVar16 = (wchar_t **)local_7c;" (assignment_expression "ppwVar16 = (wchar_t **)local_7c" identifier = (cast_expression "(wchar_t **)local_7c" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "bVar11 = uVar14 == 0x10 && uVar7 < local_c8;" (assignment_expression "bVar11 = uVar14 == 0x10 && uVar7 < local_c8" identifier = (binary_expression "uVar14 == 0x10 && uVar7 < local_c8" (binary_expression "uVar14 == 0x10" identifier == number_literal) && (binary_expression "uVar7 < local_c8" identifier < identifier))) ;) (do_statement "do {\n    uVar17 = local_50;\n    switch(*(undefined1 *)ppwVar16) {\n    case 0:\n      if (bVar11) {\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      break;\n    case 1:\n      if (bVar11) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar10 + 0x38);\n        pwVar15 = *(wchar_t **)(lVar10 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          __throw_length_error("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      pwVar15 = local_78;\nLAB_00338268:\n      std::wstring::_M_append((wstring *)&local_58,pwVar15,uVar17);\n    }\n    ppwVar16 = (wchar_t **)((long)ppwVar16 + 1);\n  } while (&local_78 != ppwVar16);" do (compound_statement "{\n    uVar17 = local_50;\n    switch(*(undefined1 *)ppwVar16) {\n    case 0:\n      if (bVar11) {\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      break;\n    case 1:\n      if (bVar11) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar10 + 0x38);\n        pwVar15 = *(wchar_t **)(lVar10 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          __throw_length_error("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      pwVar15 = local_78;\nLAB_00338268:\n      std::wstring::_M_append((wstring *)&local_58,pwVar15,uVar17);\n    }\n    ppwVar16 = (wchar_t **)((long)ppwVar16 + 1);\n  }" { (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (switch_statement "switch(*(undefined1 *)ppwVar16) {\n    case 0:\n      if (bVar11) {\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      break;\n    case 1:\n      if (bVar11) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar10 + 0x38);\n        pwVar15 = *(wchar_t **)(lVar10 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          __throw_length_error("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      pwVar15 = local_78;\nLAB_00338268:\n      std::wstring::_M_append((wstring *)&local_58,pwVar15,uVar17);\n    }" switch (parenthesized_expression "(*(undefined1 *)ppwVar16)" ( (pointer_expression "*(undefined1 *)ppwVar16" * (cast_expression "(undefined1 *)ppwVar16" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    case 0:\n      if (bVar11) {\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      break;\n    case 1:\n      if (bVar11) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar10 + 0x38);\n        pwVar15 = *(wchar_t **)(lVar10 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          __throw_length_error("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      pwVar15 = local_78;\nLAB_00338268:\n      std::wstring::_M_append((wstring *)&local_58,pwVar15,uVar17);\n    }" { (case_statement "case 0:\n      if (bVar11) {\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      break;" case number_literal : (if_statement "if (bVar11) {\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }" { (labeled_statement "std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);" (call_expression "_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5)" identifier (argument_list "((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5)" ( (cast_expression "(wstring *)&local_58" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , number_literal , (binary_expression "local_c8 - uVar7" identifier - identifier) , identifier ))) ;))) })) (break_statement "break;" break ;)) (case_statement "case 1:\n      if (bVar11) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;" case number_literal : (if_statement "if (bVar11) {\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */\n        std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);\n      }" { comment (labeled_statement "std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5);" (call_expression "_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5)" identifier (argument_list "((wstring *)&local_58,local_50,0,local_c8 - uVar7,param_5)" ( (cast_expression "(wstring *)&local_58" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , number_literal , (binary_expression "local_c8 - uVar7" identifier - identifier) , identifier ))) ;))) }) (else_clause "else {\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" else (compound_statement "{\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" { (if_statement "if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,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          uVar12 = 3;\n        }" { (expression_statement "uVar12 = 3;" (assignment_expression "uVar12 = 3" identifier = number_literal) ;) }) (else_clause "else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }" else (compound_statement "{\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }" { (expression_statement "uVar12 = CONCAT44(uStack_44,local_48);" (assignment_expression "uVar12 = CONCAT44(uStack_44,local_48)" identifier = (call_expression "CONCAT44(uStack_44,local_48)" identifier (argument_list "(uStack_44,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar12 < local_50 + 1) {\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }" if (parenthesized_expression "(uVar12 < local_50 + 1)" ( (binary_expression "uVar12 < local_50 + 1" identifier < (binary_expression "local_50 + 1" identifier + number_literal)) )) (compound_statement "{\n                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }" { comment (labeled_statement "std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);" (call_expression "_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1)" identifier (argument_list "((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1)" ( (cast_expression "(wstring *)&local_58" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , number_literal , (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "local_58[uVar17] = param_5;" (assignment_expression "local_58[uVar17] = param_5" (subscript_expression "local_58[uVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_50 = uVar17 + 1;" (assignment_expression "local_50 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "local_58[uVar17 + 1] = 0;" (assignment_expression "local_58[uVar17 + 1] = 0" (subscript_expression "local_58[uVar17 + 1]" identifier [ (binary_expression "uVar17 + 1" identifier + number_literal) ]) = number_literal) ;) }))) (break_statement "break;" break ;)) (case_statement "case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar10 + 0x38);\n        pwVar15 = *(wchar_t **)(lVar10 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          __throw_length_error("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;" case number_literal : (if_statement "if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar10 + 0x38);\n        pwVar15 = *(wchar_t **)(lVar10 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          __throw_length_error("basic_string::append");\n        }\n        goto LAB_00338268;\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        uVar17 = *(ulong *)(lVar10 + 0x38);\n        pwVar15 = *(wchar_t **)(lVar10 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          __throw_length_error("basic_string::append");\n        }\n        goto LAB_00338268;\n      }" { (expression_statement "uVar17 = *(ulong *)(lVar10 + 0x38);" (assignment_expression "uVar17 = *(ulong *)(lVar10 + 0x38)" identifier = (pointer_expression "*(ulong *)(lVar10 + 0x38)" * (cast_expression "(ulong *)(lVar10 + 0x38)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x38)" ( (binary_expression "lVar10 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "pwVar15 = *(wchar_t **)(lVar10 + 0x30);" (assignment_expression "pwVar15 = *(wchar_t **)(lVar10 + 0x30)" identifier = (pointer_expression "*(wchar_t **)(lVar10 + 0x30)" * (cast_expression "(wchar_t **)(lVar10 + 0x30)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar10 + 0x30)" ( (binary_expression "lVar10 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (0x1fffffffffffffff - local_50 < uVar17) {\n                    /* WARNING: Subroutine does not return */\n          __throw_length_error("basic_string::append");\n        }" if (parenthesized_expression "(0x1fffffffffffffff - local_50 < uVar17)" ( (binary_expression "0x1fffffffffffffff - local_50 < uVar17" (binary_expression "0x1fffffffffffffff - 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_00338268;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;" case number_literal : (if_statement "if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" if (parenthesized_expression "(local_f8 != 0)" ( (binary_expression "local_f8 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar12 < local_50 + 1) {\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" { (expression_statement "uVar3 = *local_d0;" (assignment_expression "uVar3 = *local_d0" identifier = (pointer_expression "*local_d0" * identifier)) ;) (if_statement "if (local_58 == &local_48) {\n          uVar12 = 3;\n        }\n        else {\n          uVar12 = CONCAT44(uStack_44,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          uVar12 = 3;\n        }" { (expression_statement "uVar12 = 3;" (assignment_expression "uVar12 = 3" identifier = number_literal) ;) }) (else_clause "else {\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }" else (compound_statement "{\n          uVar12 = CONCAT44(uStack_44,local_48);\n        }" { (expression_statement "uVar12 = CONCAT44(uStack_44,local_48);" (assignment_expression "uVar12 = CONCAT44(uStack_44,local_48)" identifier = (call_expression "CONCAT44(uStack_44,local_48)" identifier (argument_list "(uStack_44,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar12 < local_50 + 1) {\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }" if (parenthesized_expression "(uVar12 < local_50 + 1)" ( (binary_expression "uVar12 < local_50 + 1" identifier < (binary_expression "local_50 + 1" identifier + number_literal)) )) (compound_statement "{\n          std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);\n        }" { (labeled_statement "std::wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1);" (call_expression "_M_mutate((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1)" identifier (argument_list "((wstring *)&local_58,local_50,0,(wchar_t *)0x0,1)" ( (cast_expression "(wstring *)&local_58" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , number_literal , (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "local_58[uVar17] = uVar3;" (assignment_expression "local_58[uVar17] = uVar3" (subscript_expression "local_58[uVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_50 = uVar17 + 1;" (assignment_expression "local_50 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "local_58[uVar17 + 1] = 0;" (assignment_expression "local_58[uVar17 + 1] = 0" (subscript_expression "local_58[uVar17 + 1]" identifier [ (binary_expression "uVar17 + 1" identifier + number_literal) ]) = number_literal) ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n      uVar17 = local_70;\n      pwVar15 = local_78;\nLAB_00338268:\n      std::wstring::_M_append((wstring *)&local_58,pwVar15,uVar17);" case number_literal : (expression_statement "uVar17 = local_70;" (assignment_expression "uVar17 = local_70" identifier = identifier) ;) (expression_statement "pwVar15 = local_78;" (assignment_expression "pwVar15 = local_78" identifier = identifier) ;) (labeled_statement "LAB_00338268:\n      std::wstring::_M_append((wstring *)&local_58,pwVar15,uVar17);" statement_identifier : (labeled_statement "std::wstring::_M_append((wstring *)&local_58,pwVar15,uVar17);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_append((wstring *)&local_58,pwVar15,uVar17);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((wstring *)&local_58,pwVar15,uVar17);" (call_expression "_M_append((wstring *)&local_58,pwVar15,uVar17)" identifier (argument_list "((wstring *)&local_58,pwVar15,uVar17)" ( (cast_expression "(wstring *)&local_58" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , identifier ))) ;))))) })) (expression_statement "ppwVar16 = (wchar_t **)((long)ppwVar16 + 1);" (assignment_expression "ppwVar16 = (wchar_t **)((long)ppwVar16 + 1)" identifier = (cast_expression "(wchar_t **)((long)ppwVar16 + 1)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)ppwVar16 + 1)" ( (binary_expression "(long)ppwVar16 + 1" (cast_expression "(long)ppwVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(&local_78 != ppwVar16)" ( (binary_expression "&local_78 != ppwVar16" (pointer_expression "&local_78" & identifier) != identifier) )) ;) (if_statement "if (local_f8 < 2) {\n    if (local_50 < local_c8) goto LAB_00338340;\nLAB_003382a4:\n    local_c8 = local_50;\n  }\n  else {\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\n      __throw_length_error("basic_string::append");\n    }\n    std::wstring::_M_append((wstring *)&local_58,local_d0 + 1,local_f8 - 1);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar14 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      std::wstring::_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }" if (parenthesized_expression "(local_f8 < 2)" ( (binary_expression "local_f8 < 2" identifier < number_literal) )) (compound_statement "{\n    if (local_50 < local_c8) goto LAB_00338340;\nLAB_003382a4:\n    local_c8 = local_50;\n  }" { (if_statement "if (local_50 < local_c8) goto LAB_00338340;" if (parenthesized_expression "(local_50 < local_c8)" ( (binary_expression "local_50 < local_c8" identifier < identifier) )) (goto_statement "goto LAB_00338340;" goto statement_identifier ;)) (labeled_statement "LAB_003382a4:\n    local_c8 = local_50;" statement_identifier : (expression_statement "local_c8 = local_50;" (assignment_expression "local_c8 = local_50" identifier = identifier) ;)) }) (else_clause "else {\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\n      __throw_length_error("basic_string::append");\n    }\n    std::wstring::_M_append((wstring *)&local_58,local_d0 + 1,local_f8 - 1);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar14 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      std::wstring::_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }" else (compound_statement "{\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\n      __throw_length_error("basic_string::append");\n    }\n    std::wstring::_M_append((wstring *)&local_58,local_d0 + 1,local_f8 - 1);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar14 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      std::wstring::_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }" { (if_statement "if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\n      __throw_length_error("basic_string::append");\n    }" if (parenthesized_expression "(0x1fffffffffffffff - local_50 < local_f8 - 1)" ( (binary_expression "0x1fffffffffffffff - local_50 < local_f8 - 1" (binary_expression "0x1fffffffffffffff - local_50" number_literal - identifier) < (binary_expression "local_f8 - 1" identifier - number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */\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::wstring::_M_append((wstring *)&local_58,local_d0 + 1,local_f8 - 1);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_append((wstring *)&local_58,local_d0 + 1,local_f8 - 1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((wstring *)&local_58,local_d0 + 1,local_f8 - 1);" (call_expression "_M_append((wstring *)&local_58,local_d0 + 1,local_f8 - 1)" identifier (argument_list "((wstring *)&local_58,local_d0 + 1,local_f8 - 1)" ( (cast_expression "(wstring *)&local_58" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , (binary_expression "local_d0 + 1" identifier + number_literal) , (binary_expression "local_f8 - 1" identifier - number_literal) ))) ;))) (if_statement "if (local_c8 <= local_50) goto LAB_003382a4;" if (parenthesized_expression "(local_c8 <= local_50)" ( (binary_expression "local_c8 <= local_50" identifier <= identifier) )) (goto_statement "goto LAB_003382a4;" goto statement_identifier ;)) (labeled_statement "LAB_00338340:\n    if (uVar14 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      std::wstring::_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);\n    }" statement_identifier : (if_statement "if (uVar14 == 0x20) {\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      std::wstring::_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);\n    }" if (parenthesized_expression "(uVar14 == 0x20)" ( (binary_expression "uVar14 == 0x20" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */\n      std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5);\n    }" { comment (labeled_statement "std::wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5);" (call_expression "_M_replace_aux((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5)" identifier (argument_list "((wstring *)&local_58,local_50,0,local_c8 - local_50,param_5)" ( (cast_expression "(wstring *)&local_58" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , number_literal , (binary_expression "local_c8 - local_50" identifier - identifier) , identifier ))) ;))) }) (else_clause "else {\n      std::wstring::_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);\n    }" else (compound_statement "{\n      std::wstring::_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);\n    }" { (labeled_statement "std::wstring::_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5);" (call_expression "_M_replace_aux((wstring *)&local_58,0,0,local_c8 - local_50,param_5)" identifier (argument_list "((wstring *)&local_58,0,0,local_c8 - local_50,param_5)" ( (cast_expression "(wstring *)&local_58" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , number_literal , number_literal , (binary_expression "local_c8 - local_50" identifier - identifier) , identifier ))) ;))) })))) }))) (if_statement "if (local_e5 == '\0') {\n    lVar10 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);\n    local_e5 = (int)local_c8 != lVar10;\n  }" if (parenthesized_expression "(local_e5 == '\0')" ( (binary_expression "local_e5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    lVar10 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);\n    local_e5 = (int)local_c8 != lVar10;\n  }" { (expression_statement "lVar10 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);" (assignment_expression "lVar10 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8)" identifier = (call_expression "(**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8)" (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)local_c8)" ( identifier , identifier , (cast_expression "(long)(int)local_c8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_c8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_e5 = (int)local_c8 != lVar10;" (assignment_expression "local_e5 = (int)local_c8 != lVar10" identifier = (binary_expression "(int)local_c8 != lVar10" (cast_expression "(int)local_c8" ( (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_00337f31:\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_e5;" (assignment_expression "auVar18[8] = local_e5" (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_00337e70(undefined8 param_1,long *param_2,ulong param_3,long param_4,undefined4 param_5,\n            undefined8 *param_6)\n\n{\n  ulong uVar1;\n  long *plVar2;\n  undefined4 uVar3;\n  int iVar4;\n  long *plVar5;\n  long lVar6;\n  undefined4 *puVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  bool bVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  int *piVar14;\n  ulong uVar15;\n  undefined4 **ppuVar16;\n  ulong uVar17;\n  undefined1 auVar18 [16];\n  ulong local_f8;\n  char local_e5;\n  undefined4 *local_d0;\n  ulong local_c8;\n  undefined1 local_7c [4];\n  undefined4 *local_78;\n  ulong local_70;\n  undefined4 local_68;\n  undefined4 uStack_64;\n  undefined4 *local_58;\n  ulong local_50;\n  undefined4 local_48;\n  undefined4 uStack_44;\n  \n  local_e5 = (char)param_3;\n  plVar5 = (long *)FUN_00327630(param_4 + 0xd0);\n  lVar6 = FUN_002dd3b0(&DAT_0044bd28);\n  plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8);\n  lVar8 = *plVar2;\n  if (lVar8 == 0) {\n                    \n    puVar9 = (undefined8 *)FUN_002d94a0(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *puVar9 = &PTR_FUN_0043b348;\n    *(undefined8 *)((long)puVar9 + 0x24) = 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    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    \n    FUN_00328110(puVar9,param_4 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);\n    lVar8 = *plVar2;\n  }\n  piVar14 = (int *)*param_6;\n  if (*piVar14 == *(int *)(lVar8 + 0x6c)) {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);\n    local_d0 = *(undefined4 **)(lVar8 + 0x50);\n    local_f8 = *(ulong *)(lVar8 + 0x58);\n    if (param_6[1] != 0) {\n      piVar14 = piVar14 + 1;\n    }\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 100);\n    local_f8 = *(ulong *)(lVar8 + 0x48);\n    local_d0 = *(undefined4 **)(lVar8 + 0x40);\n  }\n  lVar6 = (**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1]);\n  uVar15 = lVar6 - (long)piVar14 >> 2;\n  if (uVar15 == 0) goto LAB_00337f31;\n  local_70 = 0;\n  local_78 = &local_68;\n  local_68 = 0;\n                    \n  FUN_002def60(&local_78,uVar15 * 2);\n  iVar4 = *(int *)(lVar8 + 0x60);\n  uVar17 = uVar15 - (long)iVar4;\n  if (0 < (long)uVar17) {\n    if (iVar4 < 0) {\n      uVar17 = uVar15;\n    }\n    if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }\n    else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\n    }\n  }\n  uVar11 = local_70;\n  if (0 < iVar4) {\n    uVar3 = *(undefined4 *)(lVar8 + 0x24);\n    uVar1 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar12 = 3;\n    }\n    else {\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }\n    if (uVar12 < uVar1) {\n                    \n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }\n    local_70 = uVar11 + 1;\n    local_78[uVar11] = uVar3;\n    local_78[uVar11 + 1] = 0;\n    if ((long)uVar17 < 0) {\n      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n        FUN_003195a0("basic_string::append");\n      }\n    }\n    else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }\n                    \n    FUN_002e0110(&local_78,piVar14,uVar15);\n  }\n  uVar15 = local_70 + local_f8;\n  uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;\n  if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {\n    uVar15 = uVar15 + *(long *)(lVar8 + 0x38);\n  }\n  local_50 = 0;\n  local_58 = &local_48;\n  local_48 = 0;\n                    \n  FUN_002def60(&local_58,uVar15 * 2);\n  local_c8 = *(ulong *)(param_4 + 0x10);\n  ppuVar16 = (undefined4 **)local_7c;\n  bVar10 = uVar13 == 0x10 && uVar15 < local_c8;\n  do {\n    uVar17 = local_50;\n    switch(*(undefined1 *)ppuVar16) {\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }\n    ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);\n  } while (&local_78 != ppuVar16);\n  if (local_f8 < 2) {\n    if (local_50 < local_c8) goto LAB_00338340;\nLAB_003382a4:\n    local_c8 = local_50;\n  }\n  else {\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    \n                    \n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }\n    FUN_002e0110(&local_58);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar13 == 0x20) {\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }\n  if (local_e5 == '\0') {\n    lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);\n    local_e5 = (int)local_c8 != lVar8;\n  }\n  param_3 = param_3 & 0xffffffffffffff00;\n  if (local_58 != &local_48) {\n    FUN_002dac70(local_58);\n  }\n  if (local_78 != &local_68) {\n    FUN_002dac70();\n  }\nLAB_00337f31:\n  auVar18._9_7_ = (int7)(param_3 >> 8);\n  auVar18[8] = local_e5;\n  *(undefined8 *)(param_4 + 0x10) = 0;\n  auVar18._0_8_ = param_2;\n  return auVar18;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_00337e70(undefined8 param_1,long *param_2,ulong param_3,long param_4,undefined4 param_5,\n            undefined8 *param_6)\n\n{\n  ulong uVar1;" (macro_type_specifier "FUN_00337e70(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) identifier , identifier (ERROR "param_5" identifier) , (ERROR "undefined8 *param_6)\n\n{\n  ulong" identifier (pointer_declarator "*param_6" * identifier) ) { identifier) identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 *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 "uint uVar13;" type_identifier identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "undefined4 **ppuVar16;" type_identifier (pointer_declarator "**ppuVar16" * (pointer_declarator "*ppuVar16" * identifier)) ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "undefined1 auVar18 [16];" type_identifier (array_declarator "auVar18 [16]" identifier [ number_literal ]) ;) (declaration "ulong local_f8;" type_identifier identifier ;) (declaration "char local_e5;" primitive_type identifier ;) (declaration "undefined4 *local_d0;" type_identifier (pointer_declarator "*local_d0" * identifier) ;) (declaration "ulong local_c8;" type_identifier identifier ;) (declaration "undefined1 local_7c [4];" type_identifier (array_declarator "local_7c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_70;" type_identifier identifier ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 uStack_64;" type_identifier identifier ;) (declaration "undefined4 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 uStack_44;" type_identifier identifier ;) (expression_statement "local_e5 = (char)param_3;" (assignment_expression "local_e5 = (char)param_3" identifier = (cast_expression "(char)param_3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "plVar5 = (long *)FUN_00327630(param_4 + 0xd0);" (assignment_expression "plVar5 = (long *)FUN_00327630(param_4 + 0xd0)" identifier = (cast_expression "(long *)FUN_00327630(param_4 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00327630(param_4 + 0xd0)" identifier (argument_list "(param_4 + 0xd0)" ( (binary_expression "param_4 + 0xd0" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = FUN_002dd3b0(&DAT_0044bd28);" (assignment_expression "lVar6 = FUN_002dd3b0(&DAT_0044bd28)" identifier = (call_expression "FUN_002dd3b0(&DAT_0044bd28)" identifier (argument_list "(&DAT_0044bd28)" ( (pointer_expression "&DAT_0044bd28" & identifier) )))) ;) (expression_statement "plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8);" (assignment_expression "plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8)" ( (binary_expression "*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 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 "lVar6 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar8 = *plVar2;" (assignment_expression "lVar8 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (if_statement "if (lVar8 == 0) {\n                    \n    puVar9 = (undefined8 *)FUN_002d94a0(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *puVar9 = &PTR_FUN_0043b348;\n    *(undefined8 *)((long)puVar9 + 0x24) = 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    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    \n    FUN_00328110(puVar9,param_4 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);\n    lVar8 = *plVar2;\n  }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    puVar9 = (undefined8 *)FUN_002d94a0(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *puVar9 = &PTR_FUN_0043b348;\n    *(undefined8 *)((long)puVar9 + 0x24) = 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    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    \n    FUN_00328110(puVar9,param_4 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);\n    lVar8 = *plVar2;\n  }" { (expression_statement "puVar9 = (undefined8 *)FUN_002d94a0(0xa0);" (assignment_expression "puVar9 = (undefined8 *)FUN_002d94a0(0xa0)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(0xa0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(0xa0)" identifier (argument_list "(0xa0)" ( 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 *)(puVar9 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar9 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar9 + 4)" * (cast_expression "(undefined1 *)(puVar9 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar9 = &PTR_FUN_0043b348;" (assignment_expression "*puVar9 = &PTR_FUN_0043b348" (pointer_expression "*puVar9" * identifier) = (pointer_expression "&PTR_FUN_0043b348" & identifier)) ;) (expression_statement "*(undefined8 *)((long)puVar9 + 0x24) = 0;" (assignment_expression "*(undefined8 *)((long)puVar9 + 0x24) = 0" (pointer_expression "*(undefined8 *)((long)puVar9 + 0x24)" * (cast_expression "(undefined8 *)((long)puVar9 + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 0x24)" ( (binary_expression "(long)puVar9 + 0x24" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) 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 "puVar9[0xc] = 0;" (assignment_expression "puVar9[0xc] = 0" (subscript_expression "puVar9[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar9 + 0xd) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 0xd) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 0xd)" * (cast_expression "(undefined4 *)(puVar9 + 0xd)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0xd)" ( (binary_expression "puVar9 + 0xd" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar9 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar9 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar9 + 0x13)" * (cast_expression "(undefined1 *)(puVar9 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x13)" ( (binary_expression "puVar9 + 0x13" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00328110(puVar9,param_4 + 0xd0);" (call_expression "FUN_00328110(puVar9,param_4 + 0xd0)" identifier (argument_list "(puVar9,param_4 + 0xd0)" ( identifier , (binary_expression "param_4 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);" (call_expression "FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6)" identifier (argument_list "(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6)" ( (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 = *plVar2;" (assignment_expression "lVar8 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) })) (expression_statement "piVar14 = (int *)*param_6;" (assignment_expression "piVar14 = (int *)*param_6" identifier = (cast_expression "(int *)*param_6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_6" * identifier))) ;) (if_statement "if (*piVar14 == *(int *)(lVar8 + 0x6c)) {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);\n    local_d0 = *(undefined4 **)(lVar8 + 0x50);\n    local_f8 = *(ulong *)(lVar8 + 0x58);\n    if (param_6[1] != 0) {\n      piVar14 = piVar14 + 1;\n    }\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 100);\n    local_f8 = *(ulong *)(lVar8 + 0x48);\n    local_d0 = *(undefined4 **)(lVar8 + 0x40);\n  }" if (parenthesized_expression "(*piVar14 == *(int *)(lVar8 + 0x6c))" ( (binary_expression "*piVar14 == *(int *)(lVar8 + 0x6c)" (pointer_expression "*piVar14" * identifier) == (pointer_expression "*(int *)(lVar8 + 0x6c)" * (cast_expression "(int *)(lVar8 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x6c)" ( (binary_expression "lVar8 + 0x6c" identifier + number_literal) ))))) )) (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);\n    local_d0 = *(undefined4 **)(lVar8 + 0x50);\n    local_f8 = *(ulong *)(lVar8 + 0x58);\n    if (param_6[1] != 0) {\n      piVar14 = piVar14 + 1;\n    }\n  }" { (expression_statement "local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar8 + 0x68)" identifier = (pointer_expression "*(undefined1 (*) [4])(lVar8 + 0x68)" * (cast_expression "(undefined1 (*) [4])(lVar8 + 0x68)" ( (type_descriptor "undefined1 (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0x68)" ( (binary_expression "lVar8 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = *(undefined4 **)(lVar8 + 0x50);" (assignment_expression "local_d0 = *(undefined4 **)(lVar8 + 0x50)" identifier = (pointer_expression "*(undefined4 **)(lVar8 + 0x50)" * (cast_expression "(undefined4 **)(lVar8 + 0x50)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x50)" ( (binary_expression "lVar8 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "local_f8 = *(ulong *)(lVar8 + 0x58);" (assignment_expression "local_f8 = *(ulong *)(lVar8 + 0x58)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x58)" * (cast_expression "(ulong *)(lVar8 + 0x58)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x58)" ( (binary_expression "lVar8 + 0x58" identifier + number_literal) ))))) ;) (if_statement "if (param_6[1] != 0) {\n      piVar14 = piVar14 + 1;\n    }" if (parenthesized_expression "(param_6[1] != 0)" ( (binary_expression "param_6[1] != 0" (subscript_expression "param_6[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      piVar14 = piVar14 + 1;\n    }" { (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) })) }) (else_clause "else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 100);\n    local_f8 = *(ulong *)(lVar8 + 0x48);\n    local_d0 = *(undefined4 **)(lVar8 + 0x40);\n  }" else (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar8 + 100);\n    local_f8 = *(ulong *)(lVar8 + 0x48);\n    local_d0 = *(undefined4 **)(lVar8 + 0x40);\n  }" { (expression_statement "local_7c = *(undefined1 (*) [4])(lVar8 + 100);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar8 + 100)" identifier = (pointer_expression "*(undefined1 (*) [4])(lVar8 + 100)" * (cast_expression "(undefined1 (*) [4])(lVar8 + 100)" ( (type_descriptor "undefined1 (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 100)" ( (binary_expression "lVar8 + 100" identifier + number_literal) ))))) ;) (expression_statement "local_f8 = *(ulong *)(lVar8 + 0x48);" (assignment_expression "local_f8 = *(ulong *)(lVar8 + 0x48)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x48)" * (cast_expression "(ulong *)(lVar8 + 0x48)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x48)" ( (binary_expression "lVar8 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = *(undefined4 **)(lVar8 + 0x40);" (assignment_expression "local_d0 = *(undefined4 **)(lVar8 + 0x40)" identifier = (pointer_expression "*(undefined4 **)(lVar8 + 0x40)" * (cast_expression "(undefined4 **)(lVar8 + 0x40)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x40)" ( (binary_expression "lVar8 + 0x40" identifier + number_literal) ))))) ;) }))) (expression_statement "lVar6 = (**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1]);" (assignment_expression "lVar6 = (**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1])" identifier = (call_expression "(**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1])" (parenthesized_expression "(**(code **)(*plVar5 + 0x28))" ( (pointer_expression "**(code **)(*plVar5 + 0x28)" * (pointer_expression "*(code **)(*plVar5 + 0x28)" * (cast_expression "(code **)(*plVar5 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar5 + 0x28)" ( (binary_expression "*plVar5 + 0x28" (pointer_expression "*plVar5" * identifier) + number_literal) ))))) )) (argument_list "(plVar5,0x800,piVar14,piVar14 + param_6[1])" ( identifier , number_literal , identifier , (binary_expression "piVar14 + param_6[1]" identifier + (subscript_expression "param_6[1]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar15 = lVar6 - (long)piVar14 >> 2;" (assignment_expression "uVar15 = lVar6 - (long)piVar14 >> 2" identifier = (binary_expression "lVar6 - (long)piVar14 >> 2" (binary_expression "lVar6 - (long)piVar14" identifier - (cast_expression "(long)piVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar15 == 0) goto LAB_00337f31;" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00337f31;" goto statement_identifier ;)) (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_002def60(&local_78,uVar15 * 2);" (call_expression "FUN_002def60(&local_78,uVar15 * 2)" identifier (argument_list "(&local_78,uVar15 * 2)" ( (pointer_expression "&local_78" & identifier) , (binary_expression "uVar15 * 2" identifier * number_literal) ))) ;) (expression_statement "iVar4 = *(int *)(lVar8 + 0x60);" (assignment_expression "iVar4 = *(int *)(lVar8 + 0x60)" identifier = (pointer_expression "*(int *)(lVar8 + 0x60)" * (cast_expression "(int *)(lVar8 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x60)" ( (binary_expression "lVar8 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = uVar15 - (long)iVar4;" (assignment_expression "uVar17 = uVar15 - (long)iVar4" identifier = (binary_expression "uVar15 - (long)iVar4" identifier - (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0 < (long)uVar17) {\n    if (iVar4 < 0) {\n      uVar17 = uVar15;\n    }\n    if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }\n    else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\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 (iVar4 < 0) {\n      uVar17 = uVar15;\n    }\n    if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }\n    else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\n    }\n  }" { (if_statement "if (iVar4 < 0) {\n      uVar17 = uVar15;\n    }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar17 = uVar15;\n    }" { (expression_statement "uVar17 = uVar15;" (assignment_expression "uVar17 = uVar15" identifier = identifier) ;) })) (if_statement "if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }\n    else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\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_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }" { (expression_statement "FUN_002df740(&local_78,0,local_70,piVar14,uVar17);" (call_expression "FUN_002df740(&local_78,0,local_70,piVar14,uVar17)" identifier (argument_list "(&local_78,0,local_70,piVar14,uVar17)" ( (pointer_expression "&local_78" & identifier) , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "iVar4 = *(int *)(lVar8 + 0x60);" (assignment_expression "iVar4 = *(int *)(lVar8 + 0x60)" identifier = (pointer_expression "*(int *)(lVar8 + 0x60)" * (cast_expression "(int *)(lVar8 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x60)" ( (binary_expression "lVar8 + 0x60" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\n    }" else (compound_statement "{\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\n    }" { (expression_statement "FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);" (call_expression "FUN_002df470(&local_78,0,local_70,uVar17 * 2,0)" identifier (argument_list "(&local_78,0,local_70,uVar17 * 2,0)" ( (pointer_expression "&local_78" & identifier) , number_literal , identifier , (binary_expression "uVar17 * 2" identifier * number_literal) , number_literal ))) ;) (expression_statement "puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);" (assignment_expression "puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17)" identifier = (cast_expression "(undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17)" identifier (argument_list "(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17)" ( identifier , (pointer_expression "*(undefined4 *)(lVar8 + 0x28)" * (cast_expression "(undefined4 *)(lVar8 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x28)" ( (binary_expression "lVar8 + 0x28" 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 "piVar14 + uVar17" identifier + identifier) ))))) ;) (expression_statement "uVar11 = (long)puVar7 - (long)local_78 >> 2;" (assignment_expression "uVar11 = (long)puVar7 - (long)local_78 >> 2" identifier = (binary_expression "(long)puVar7 - (long)local_78 >> 2" (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)) >> number_literal)) ;) (if_statement "if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }" if (parenthesized_expression "(local_70 < uVar11)" ( (binary_expression "local_70 < uVar11" identifier < identifier) )) (compound_statement "{\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }" { (expression_statement "FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;" (call_expression "FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","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 "iVar4 = *(int *)(lVar8 + 0x60);" (assignment_expression "iVar4 = *(int *)(lVar8 + 0x60)" identifier = (pointer_expression "*(int *)(lVar8 + 0x60)" * (cast_expression "(int *)(lVar8 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x60)" ( (binary_expression "lVar8 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "local_70 = uVar11;" (assignment_expression "local_70 = uVar11" identifier = identifier) ;) }))) })) (expression_statement "uVar11 = local_70;" (assignment_expression "uVar11 = local_70" identifier = identifier) ;) (if_statement "if (0 < iVar4) {\n    uVar3 = *(undefined4 *)(lVar8 + 0x24);\n    uVar1 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar12 = 3;\n    }\n    else {\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }\n    if (uVar12 < uVar1) {\n                    \n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }\n    local_70 = uVar11 + 1;\n    local_78[uVar11] = uVar3;\n    local_78[uVar11 + 1] = 0;\n    if ((long)uVar17 < 0) {\n      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n        FUN_003195a0("basic_string::append");\n      }\n    }\n    else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }\n                    \n    FUN_002e0110(&local_78,piVar14,uVar15);\n  }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n    uVar3 = *(undefined4 *)(lVar8 + 0x24);\n    uVar1 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar12 = 3;\n    }\n    else {\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }\n    if (uVar12 < uVar1) {\n                    \n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }\n    local_70 = uVar11 + 1;\n    local_78[uVar11] = uVar3;\n    local_78[uVar11 + 1] = 0;\n    if ((long)uVar17 < 0) {\n      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n        FUN_003195a0("basic_string::append");\n      }\n    }\n    else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }\n                    \n    FUN_002e0110(&local_78,piVar14,uVar15);\n  }" { (expression_statement "uVar3 = *(undefined4 *)(lVar8 + 0x24);" (assignment_expression "uVar3 = *(undefined4 *)(lVar8 + 0x24)" identifier = (pointer_expression "*(undefined4 *)(lVar8 + 0x24)" * (cast_expression "(undefined4 *)(lVar8 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x24)" ( (binary_expression "lVar8 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = local_70 + 1;" (assignment_expression "uVar1 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_78 == &local_68) {\n      uVar12 = 3;\n    }\n    else {\n      uVar12 = CONCAT44(uStack_64,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 = 3;\n    }" { (expression_statement "uVar12 = 3;" (assignment_expression "uVar12 = 3" identifier = number_literal) ;) }) (else_clause "else {\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }" else (compound_statement "{\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }" { (expression_statement "uVar12 = CONCAT44(uStack_64,local_68);" (assignment_expression "uVar12 = CONCAT44(uStack_64,local_68)" identifier = (call_expression "CONCAT44(uStack_64,local_68)" identifier (argument_list "(uStack_64,local_68)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar12 < uVar1) {\n                    \n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }" if (parenthesized_expression "(uVar12 < uVar1)" ( (binary_expression "uVar12 < uVar1" identifier < identifier) )) (compound_statement "{\n                    \n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }" { (expression_statement "FUN_002dea60(&local_78,local_70,0,0,1);" (call_expression "FUN_002dea60(&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_70 = uVar11 + 1;" (assignment_expression "local_70 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "local_78[uVar11] = uVar3;" (assignment_expression "local_78[uVar11] = uVar3" (subscript_expression "local_78[uVar11]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_78[uVar11 + 1] = 0;" (assignment_expression "local_78[uVar11 + 1] = 0" (subscript_expression "local_78[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ]) = number_literal) ;) (if_statement "if ((long)uVar17 < 0) {\n      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n        FUN_003195a0("basic_string::append");\n      }\n    }\n    else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\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      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n        FUN_003195a0("basic_string::append");\n      }\n    }" { (expression_statement "FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));" (call_expression "FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70))" identifier (argument_list "(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70))" ( (pointer_expression "&local_78" & identifier) , identifier , number_literal , (unary_expression "-uVar17" - identifier) , (pointer_expression "*(undefined4 *)(lVar8 + 0x70)" * (cast_expression "(undefined4 *)(lVar8 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x70)" ( (binary_expression "lVar8 + 0x70" identifier + number_literal) )))) ))) ;) (if_statement "if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n        FUN_003195a0("basic_string::append");\n      }" if (parenthesized_expression "(0x1fffffffffffffff - local_70 < uVar15)" ( (binary_expression "0x1fffffffffffffff - local_70 < uVar15" (binary_expression "0x1fffffffffffffff - local_70" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n        FUN_003195a0("basic_string::append");\n      }" { (expression_statement "FUN_003195a0("basic_string::append");" (call_expression "FUN_003195a0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) }) (else_clause "else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }" else (compound_statement "{\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }" { (expression_statement "uVar15 = (ulong)*(int *)(lVar8 + 0x60);" (assignment_expression "uVar15 = (ulong)*(int *)(lVar8 + 0x60)" identifier = (binary_expression "(ulong)*(int *)(lVar8 + 0x60)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(int *)(lVar8 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x60)" ( (binary_expression "lVar8 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "piVar14 = piVar14 + uVar17;" (assignment_expression "piVar14 = piVar14 + uVar17" identifier = (binary_expression "piVar14 + uVar17" identifier + identifier)) ;) (if_statement "if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }" if (parenthesized_expression "(0x1fffffffffffffff - local_70 < uVar15)" ( (binary_expression "0x1fffffffffffffff - local_70 < uVar15" (binary_expression "0x1fffffffffffffff - local_70" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }" { (expression_statement "FUN_003195a0("basic_string::append",piVar14);" (call_expression "FUN_003195a0("basic_string::append",piVar14)" identifier (argument_list "("basic_string::append",piVar14)" ( (string_literal ""basic_string::append"" " string_content ") , identifier ))) ;) })) }))) (expression_statement "FUN_002e0110(&local_78,piVar14,uVar15);" (call_expression "FUN_002e0110(&local_78,piVar14,uVar15)" identifier (argument_list "(&local_78,piVar14,uVar15)" ( (pointer_expression "&local_78" & identifier) , identifier , identifier ))) ;) })) (expression_statement "uVar15 = local_70 + local_f8;" (assignment_expression "uVar15 = local_70 + local_f8" identifier = (binary_expression "local_70 + local_f8" 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    uVar15 = uVar15 + *(long *)(lVar8 + 0x38);\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    uVar15 = uVar15 + *(long *)(lVar8 + 0x38);\n  }" { (expression_statement "uVar15 = uVar15 + *(long *)(lVar8 + 0x38);" (assignment_expression "uVar15 = uVar15 + *(long *)(lVar8 + 0x38)" identifier = (binary_expression "uVar15 + *(long *)(lVar8 + 0x38)" identifier + (pointer_expression "*(long *)(lVar8 + 0x38)" * (cast_expression "(long *)(lVar8 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x38)" ( (binary_expression "lVar8 + 0x38" 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_002def60(&local_58,uVar15 * 2);" (call_expression "FUN_002def60(&local_58,uVar15 * 2)" identifier (argument_list "(&local_58,uVar15 * 2)" ( (pointer_expression "&local_58" & identifier) , (binary_expression "uVar15 * 2" identifier * number_literal) ))) ;) (expression_statement "local_c8 = *(ulong *)(param_4 + 0x10);" (assignment_expression "local_c8 = *(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 "ppuVar16 = (undefined4 **)local_7c;" (assignment_expression "ppuVar16 = (undefined4 **)local_7c" identifier = (cast_expression "(undefined4 **)local_7c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "bVar10 = uVar13 == 0x10 && uVar15 < local_c8;" (assignment_expression "bVar10 = uVar13 == 0x10 && uVar15 < local_c8" identifier = (binary_expression "uVar13 == 0x10 && uVar15 < local_c8" (binary_expression "uVar13 == 0x10" identifier == number_literal) && (binary_expression "uVar15 < local_c8" identifier < identifier))) ;) (do_statement "do {\n    uVar17 = local_50;\n    switch(*(undefined1 *)ppuVar16) {\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }\n    ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);\n  } while (&local_78 != ppuVar16);" do (compound_statement "{\n    uVar17 = local_50;\n    switch(*(undefined1 *)ppuVar16) {\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }\n    ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);\n  }" { (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (switch_statement "switch(*(undefined1 *)ppuVar16) {\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }" switch (parenthesized_expression "(*(undefined1 *)ppuVar16)" ( (pointer_expression "*(undefined1 *)ppuVar16" * (cast_expression "(undefined1 *)ppuVar16" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }" { (case_statement "case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;" case number_literal : (if_statement "if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }" { (expression_statement "FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);" (call_expression "FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5)" identifier (argument_list "(&local_58,local_50,0,local_c8 - uVar15,param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "local_c8 - uVar15" identifier - identifier) , identifier ))) ;) })) (break_statement "break;" break ;)) (case_statement "case 1:\n      if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;" case number_literal : (if_statement "if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }" { (expression_statement "FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);" (call_expression "FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5)" identifier (argument_list "(&local_58,local_50,0,local_c8 - uVar15,param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "local_c8 - uVar15" identifier - identifier) , identifier ))) ;) }) (else_clause "else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" else (compound_statement "{\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" { (if_statement "if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,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 = 3;\n        }" { (expression_statement "uVar11 = 3;" (assignment_expression "uVar11 = 3" identifier = number_literal) ;) }) (else_clause "else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }" else (compound_statement "{\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }" { (expression_statement "uVar11 = CONCAT44(uStack_44,local_48);" (assignment_expression "uVar11 = CONCAT44(uStack_44,local_48)" identifier = (call_expression "CONCAT44(uStack_44,local_48)" identifier (argument_list "(uStack_44,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,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                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }" { (expression_statement "FUN_002dea60(&local_58,local_50,0,0,1);" (call_expression "FUN_002dea60(&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 ))) ;) })) (expression_statement "local_58[uVar17] = param_5;" (assignment_expression "local_58[uVar17] = param_5" (subscript_expression "local_58[uVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_50 = uVar17 + 1;" (assignment_expression "local_50 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "local_58[uVar17 + 1] = 0;" (assignment_expression "local_58[uVar17 + 1] = 0" (subscript_expression "local_58[uVar17 + 1]" identifier [ (binary_expression "uVar17 + 1" identifier + number_literal) ]) = number_literal) ;) }))) (break_statement "break;" break ;)) (case_statement "case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;" case number_literal : (if_statement "if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\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        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }" { (expression_statement "uVar17 = *(ulong *)(lVar8 + 0x38);" (assignment_expression "uVar17 = *(ulong *)(lVar8 + 0x38)" identifier = (pointer_expression "*(ulong *)(lVar8 + 0x38)" * (cast_expression "(ulong *)(lVar8 + 0x38)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x38)" ( (binary_expression "lVar8 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "puVar7 = *(undefined4 **)(lVar8 + 0x30);" (assignment_expression "puVar7 = *(undefined4 **)(lVar8 + 0x30)" identifier = (pointer_expression "*(undefined4 **)(lVar8 + 0x30)" * (cast_expression "(undefined4 **)(lVar8 + 0x30)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0x30)" ( (binary_expression "lVar8 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }" if (parenthesized_expression "(0x1fffffffffffffff - local_50 < uVar17)" ( (binary_expression "0x1fffffffffffffff - local_50 < uVar17" (binary_expression "0x1fffffffffffffff - local_50" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n          FUN_003195a0("basic_string::append");\n        }" { (expression_statement "FUN_003195a0("basic_string::append");" (call_expression "FUN_003195a0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (goto_statement "goto LAB_00338268;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;" case number_literal : (if_statement "if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" if (parenthesized_expression "(local_f8 != 0)" ( (binary_expression "local_f8 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" { (expression_statement "uVar3 = *local_d0;" (assignment_expression "uVar3 = *local_d0" identifier = (pointer_expression "*local_d0" * identifier)) ;) (if_statement "if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,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 = 3;\n        }" { (expression_statement "uVar11 = 3;" (assignment_expression "uVar11 = 3" identifier = number_literal) ;) }) (else_clause "else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }" else (compound_statement "{\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }" { (expression_statement "uVar11 = CONCAT44(uStack_44,local_48);" (assignment_expression "uVar11 = CONCAT44(uStack_44,local_48)" identifier = (call_expression "CONCAT44(uStack_44,local_48)" identifier (argument_list "(uStack_44,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,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          FUN_002dea60(&local_58,local_50,0,0,1);\n        }" { (expression_statement "FUN_002dea60(&local_58,local_50,0,0,1);" (call_expression "FUN_002dea60(&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 ))) ;) })) (expression_statement "local_58[uVar17] = uVar3;" (assignment_expression "local_58[uVar17] = uVar3" (subscript_expression "local_58[uVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_50 = uVar17 + 1;" (assignment_expression "local_50 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "local_58[uVar17 + 1] = 0;" (assignment_expression "local_58[uVar17 + 1] = 0" (subscript_expression "local_58[uVar17 + 1]" identifier [ (binary_expression "uVar17 + 1" identifier + number_literal) ]) = number_literal) ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);" case number_literal : (expression_statement "uVar17 = local_70;" (assignment_expression "uVar17 = local_70" identifier = identifier) ;) (expression_statement "puVar7 = local_78;" (assignment_expression "puVar7 = local_78" identifier = identifier) ;) (labeled_statement "LAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);" statement_identifier : (expression_statement "FUN_002e0110(&local_58,puVar7,uVar17);" (call_expression "FUN_002e0110(&local_58,puVar7,uVar17)" identifier (argument_list "(&local_58,puVar7,uVar17)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;))) })) (expression_statement "ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);" (assignment_expression "ppuVar16 = (undefined4 **)((long)ppuVar16 + 1)" identifier = (cast_expression "(undefined4 **)((long)ppuVar16 + 1)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)ppuVar16 + 1)" ( (binary_expression "(long)ppuVar16 + 1" (cast_expression "(long)ppuVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(&local_78 != ppuVar16)" ( (binary_expression "&local_78 != ppuVar16" (pointer_expression "&local_78" & identifier) != identifier) )) ;) (if_statement "if (local_f8 < 2) {\n    if (local_50 < local_c8) goto LAB_00338340;\nLAB_003382a4:\n    local_c8 = local_50;\n  }\n  else {\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    \n                    \n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }\n    FUN_002e0110(&local_58);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar13 == 0x20) {\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }" if (parenthesized_expression "(local_f8 < 2)" ( (binary_expression "local_f8 < 2" identifier < number_literal) )) (compound_statement "{\n    if (local_50 < local_c8) goto LAB_00338340;\nLAB_003382a4:\n    local_c8 = local_50;\n  }" { (if_statement "if (local_50 < local_c8) goto LAB_00338340;" if (parenthesized_expression "(local_50 < local_c8)" ( (binary_expression "local_50 < local_c8" identifier < identifier) )) (goto_statement "goto LAB_00338340;" goto statement_identifier ;)) (labeled_statement "LAB_003382a4:\n    local_c8 = local_50;" statement_identifier : (expression_statement "local_c8 = local_50;" (assignment_expression "local_c8 = local_50" identifier = identifier) ;)) }) (else_clause "else {\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    \n                    \n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }\n    FUN_002e0110(&local_58);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar13 == 0x20) {\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }" else (compound_statement "{\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    \n                    \n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }\n    FUN_002e0110(&local_58);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar13 == 0x20) {\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }" { (if_statement "if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    \n                    \n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }" if (parenthesized_expression "(0x1fffffffffffffff - local_50 < local_f8 - 1)" ( (binary_expression "0x1fffffffffffffff - local_50 < local_f8 - 1" (binary_expression "0x1fffffffffffffff - local_50" number_literal - identifier) < (binary_expression "local_f8 - 1" identifier - number_literal)) )) (compound_statement "{\n                    \n                    \n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }" { (expression_statement "FUN_003195a0("basic_string::append",local_d0 + 1);" (call_expression "FUN_003195a0("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_002e0110(&local_58);" (call_expression "FUN_002e0110(&local_58)" identifier (argument_list "(&local_58)" ( (pointer_expression "&local_58" & identifier) ))) ;) (if_statement "if (local_c8 <= local_50) goto LAB_003382a4;" if (parenthesized_expression "(local_c8 <= local_50)" ( (binary_expression "local_c8 <= local_50" identifier <= identifier) )) (goto_statement "goto LAB_003382a4;" goto statement_identifier ;)) (labeled_statement "LAB_00338340:\n    if (uVar13 == 0x20) {\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }" statement_identifier : (if_statement "if (uVar13 == 0x20) {\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }" if (parenthesized_expression "(uVar13 == 0x20)" ( (binary_expression "uVar13 == 0x20" identifier == number_literal) )) (compound_statement "{\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }" { (expression_statement "FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);" (call_expression "FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5)" identifier (argument_list "(&local_58,local_50,0,local_c8 - local_50,param_5)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , (binary_expression "local_c8 - local_50" identifier - identifier) , identifier ))) ;) }) (else_clause "else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }" else (compound_statement "{\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }" { (expression_statement "FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);" (call_expression "FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5)" identifier (argument_list "(&local_58,0,0,local_c8 - local_50,param_5)" ( (pointer_expression "&local_58" & identifier) , number_literal , number_literal , (binary_expression "local_c8 - local_50" identifier - identifier) , identifier ))) ;) })))) }))) (if_statement "if (local_e5 == '\0') {\n    lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);\n    local_e5 = (int)local_c8 != lVar8;\n  }" if (parenthesized_expression "(local_e5 == '\0')" ( (binary_expression "local_e5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);\n    local_e5 = (int)local_c8 != lVar8;\n  }" { (expression_statement "lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);" (assignment_expression "lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8)" identifier = (call_expression "(**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8)" (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)local_c8)" ( identifier , identifier , (cast_expression "(long)(int)local_c8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_c8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_e5 = (int)local_c8 != lVar8;" (assignment_expression "local_e5 = (int)local_c8 != lVar8" identifier = (binary_expression "(int)local_c8 != lVar8" (cast_expression "(int)local_c8" ( (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_002dac70(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_002dac70(local_58);\n  }" { (expression_statement "FUN_002dac70(local_58);" (call_expression "FUN_002dac70(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) })) (if_statement "if (local_78 != &local_68) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_00337f31:\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_e5;" (assignment_expression "auVar18[8] = local_e5" (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 ;) (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 , IDENT (ERROR IDENT) , (ERROR IDENT (pointer_declarator * IDENT) ) { IDENT) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (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 = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (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 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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 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) ))))) ;) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 *)) ) (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 = (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 , LIT , IDENT , (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (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 , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (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) , (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) , 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) , 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 )))) ;) }))) (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 ))) ;) })) (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 ))) ;) })) (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 : (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 IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) < (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , (binary_expression IDENT - IDENT) , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , (binary_expression IDENT - IDENT) , IDENT ))) ;) })))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , (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_00337e70(undefined8 param_1,long *param_2,ulong param_3,long param_4,undefined4 param_5,\n            undefined8 *param_6)\n\n{\n  ulong uVar1;" (macro_type_specifier "FUN_00337e70(undefined8" (identifier "FUN_00337e70") (( "(") (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") (, ",") (identifier "undefined4") (ERROR "param_5" (identifier "param_5")) (, ",") (ERROR "undefined8 *param_6)\n\n{\n  ulong" (identifier "undefined8") (pointer_declarator "*param_6" (* "*") (identifier "param_6")) () ")") ({ "{") (identifier "ulong")) (identifier "uVar1") (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "long *plVar5;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar5" (* "*") (identifier "plVar5")) (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (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 "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "ulong uVar15;" (type_identifier "ulong") (identifier "uVar15") (; ";")) (declaration "undefined4 **ppuVar16;" (type_identifier "undefined4") (pointer_declarator "**ppuVar16" (* "*") (pointer_declarator "*ppuVar16" (* "*") (identifier "ppuVar16"))) (; ";")) (declaration "ulong uVar17;" (type_identifier "ulong") (identifier "uVar17") (; ";")) (declaration "undefined1 auVar18 [16];" (type_identifier "undefined1") (array_declarator "auVar18 [16]" (identifier "auVar18") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "ulong local_f8;" (type_identifier "ulong") (identifier "local_f8") (; ";")) (declaration "char local_e5;" (primitive_type "char") (identifier "local_e5") (; ";")) (declaration "undefined4 *local_d0;" (type_identifier "undefined4") (pointer_declarator "*local_d0" (* "*") (identifier "local_d0")) (; ";")) (declaration "ulong local_c8;" (type_identifier "ulong") (identifier "local_c8") (; ";")) (declaration "undefined1 local_7c [4];" (type_identifier "undefined1") (array_declarator "local_7c [4]" (identifier "local_7c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 *local_78;" (type_identifier "undefined4") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "ulong local_70;" (type_identifier "ulong") (identifier "local_70") (; ";")) (declaration "undefined4 local_68;" (type_identifier "undefined4") (identifier "local_68") (; ";")) (declaration "undefined4 uStack_64;" (type_identifier "undefined4") (identifier "uStack_64") (; ";")) (declaration "undefined4 *local_58;" (type_identifier "undefined4") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "ulong local_50;" (type_identifier "ulong") (identifier "local_50") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "undefined4 uStack_44;" (type_identifier "undefined4") (identifier "uStack_44") (; ";")) (expression_statement "local_e5 = (char)param_3;" (assignment_expression "local_e5 = (char)param_3" (identifier "local_e5") (= "=") (cast_expression "(char)param_3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_3"))) (; ";")) (expression_statement "plVar5 = (long *)FUN_00327630(param_4 + 0xd0);" (assignment_expression "plVar5 = (long *)FUN_00327630(param_4 + 0xd0)" (identifier "plVar5") (= "=") (cast_expression "(long *)FUN_00327630(param_4 + 0xd0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00327630(param_4 + 0xd0)" (identifier "FUN_00327630") (argument_list "(param_4 + 0xd0)" (( "(") (binary_expression "param_4 + 0xd0" (identifier "param_4") (+ "+") (number_literal "0xd0")) () ")"))))) (; ";")) (expression_statement "lVar6 = FUN_002dd3b0(&DAT_0044bd28);" (assignment_expression "lVar6 = FUN_002dd3b0(&DAT_0044bd28)" (identifier "lVar6") (= "=") (call_expression "FUN_002dd3b0(&DAT_0044bd28)" (identifier "FUN_002dd3b0") (argument_list "(&DAT_0044bd28)" (( "(") (pointer_expression "&DAT_0044bd28" (& "&") (identifier "DAT_0044bd28")) () ")")))) (; ";")) (expression_statement "plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8);" (assignment_expression "plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8)" (identifier "plVar2") (= "=") (cast_expression "(long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8)" (( "(") (binary_expression "*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 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 "lVar6 * 8" (identifier "lVar6") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "lVar8 = *plVar2;" (assignment_expression "lVar8 = *plVar2" (identifier "lVar8") (= "=") (pointer_expression "*plVar2" (* "*") (identifier "plVar2"))) (; ";")) (if_statement "if (lVar8 == 0) {\n                    \n    puVar9 = (undefined8 *)FUN_002d94a0(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *puVar9 = &PTR_FUN_0043b348;\n    *(undefined8 *)((long)puVar9 + 0x24) = 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    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    \n    FUN_00328110(puVar9,param_4 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);\n    lVar8 = *plVar2;\n  }" (if "if") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    puVar9 = (undefined8 *)FUN_002d94a0(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *puVar9 = &PTR_FUN_0043b348;\n    *(undefined8 *)((long)puVar9 + 0x24) = 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    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    \n    FUN_00328110(puVar9,param_4 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);\n    lVar8 = *plVar2;\n  }" ({ "{") (expression_statement "puVar9 = (undefined8 *)FUN_002d94a0(0xa0);" (assignment_expression "puVar9 = (undefined8 *)FUN_002d94a0(0xa0)" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)FUN_002d94a0(0xa0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d94a0(0xa0)" (identifier "FUN_002d94a0") (argument_list "(0xa0)" (( "(") (number_literal "0xa0") () ")"))))) (; ";")) (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 *)(puVar9 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar9 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar9 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar9 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar9 = &PTR_FUN_0043b348;" (assignment_expression "*puVar9 = &PTR_FUN_0043b348" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (pointer_expression "&PTR_FUN_0043b348" (& "&") (identifier "PTR_FUN_0043b348"))) (; ";")) (expression_statement "*(undefined8 *)((long)puVar9 + 0x24) = 0;" (assignment_expression "*(undefined8 *)((long)puVar9 + 0x24) = 0" (pointer_expression "*(undefined8 *)((long)puVar9 + 0x24)" (* "*") (cast_expression "(undefined8 *)((long)puVar9 + 0x24)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 0x24)" (( "(") (binary_expression "(long)puVar9 + 0x24" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "0x24")) () ")")))) (= "=") (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 "puVar9[0xc] = 0;" (assignment_expression "puVar9[0xc] = 0" (subscript_expression "puVar9[0xc]" (identifier "puVar9") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + 0xd) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 0xd) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 0xd)" (* "*") (cast_expression "(undefined4 *)(puVar9 + 0xd)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0xd)" (( "(") (binary_expression "puVar9 + 0xd" (identifier "puVar9") (+ "+") (number_literal "0xd")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar9 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar9 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar9 + 0x13)" (* "*") (cast_expression "(undefined1 *)(puVar9 + 0x13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x13)" (( "(") (binary_expression "puVar9 + 0x13" (identifier "puVar9") (+ "+") (number_literal "0x13")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00328110(puVar9,param_4 + 0xd0);" (call_expression "FUN_00328110(puVar9,param_4 + 0xd0)" (identifier "FUN_00328110") (argument_list "(puVar9,param_4 + 0xd0)" (( "(") (identifier "puVar9") (, ",") (binary_expression "param_4 + 0xd0" (identifier "param_4") (+ "+") (number_literal "0xd0")) () ")"))) (; ";")) (expression_statement "FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);" (call_expression "FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6)" (identifier "FUN_002dd820") (argument_list "(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6)" (( "(") (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 "lVar6") () ")"))) (; ";")) (expression_statement "lVar8 = *plVar2;" (assignment_expression "lVar8 = *plVar2" (identifier "lVar8") (= "=") (pointer_expression "*plVar2" (* "*") (identifier "plVar2"))) (; ";")) (} "}"))) (expression_statement "piVar14 = (int *)*param_6;" (assignment_expression "piVar14 = (int *)*param_6" (identifier "piVar14") (= "=") (cast_expression "(int *)*param_6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_6" (* "*") (identifier "param_6")))) (; ";")) (if_statement "if (*piVar14 == *(int *)(lVar8 + 0x6c)) {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);\n    local_d0 = *(undefined4 **)(lVar8 + 0x50);\n    local_f8 = *(ulong *)(lVar8 + 0x58);\n    if (param_6[1] != 0) {\n      piVar14 = piVar14 + 1;\n    }\n  }\n  else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 100);\n    local_f8 = *(ulong *)(lVar8 + 0x48);\n    local_d0 = *(undefined4 **)(lVar8 + 0x40);\n  }" (if "if") (parenthesized_expression "(*piVar14 == *(int *)(lVar8 + 0x6c))" (( "(") (binary_expression "*piVar14 == *(int *)(lVar8 + 0x6c)" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (== "==") (pointer_expression "*(int *)(lVar8 + 0x6c)" (* "*") (cast_expression "(int *)(lVar8 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x6c)" (( "(") (binary_expression "lVar8 + 0x6c" (identifier "lVar8") (+ "+") (number_literal "0x6c")) () ")"))))) () ")")) (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);\n    local_d0 = *(undefined4 **)(lVar8 + 0x50);\n    local_f8 = *(ulong *)(lVar8 + 0x58);\n    if (param_6[1] != 0) {\n      piVar14 = piVar14 + 1;\n    }\n  }" ({ "{") (expression_statement "local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar8 + 0x68)" (identifier "local_7c") (= "=") (pointer_expression "*(undefined1 (*) [4])(lVar8 + 0x68)" (* "*") (cast_expression "(undefined1 (*) [4])(lVar8 + 0x68)" (( "(") (type_descriptor "undefined1 (*) [4]" (type_identifier "undefined1") (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "4") (] "]"))) () ")") (parenthesized_expression "(lVar8 + 0x68)" (( "(") (binary_expression "lVar8 + 0x68" (identifier "lVar8") (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (expression_statement "local_d0 = *(undefined4 **)(lVar8 + 0x50);" (assignment_expression "local_d0 = *(undefined4 **)(lVar8 + 0x50)" (identifier "local_d0") (= "=") (pointer_expression "*(undefined4 **)(lVar8 + 0x50)" (* "*") (cast_expression "(undefined4 **)(lVar8 + 0x50)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar8 + 0x50)" (( "(") (binary_expression "lVar8 + 0x50" (identifier "lVar8") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "local_f8 = *(ulong *)(lVar8 + 0x58);" (assignment_expression "local_f8 = *(ulong *)(lVar8 + 0x58)" (identifier "local_f8") (= "=") (pointer_expression "*(ulong *)(lVar8 + 0x58)" (* "*") (cast_expression "(ulong *)(lVar8 + 0x58)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x58)" (( "(") (binary_expression "lVar8 + 0x58" (identifier "lVar8") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (if_statement "if (param_6[1] != 0) {\n      piVar14 = piVar14 + 1;\n    }" (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")) () ")")) (compound_statement "{\n      piVar14 = piVar14 + 1;\n    }" ({ "{") (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" (identifier "piVar14") (= "=") (binary_expression "piVar14 + 1" (identifier "piVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    local_7c = *(undefined1 (*) [4])(lVar8 + 100);\n    local_f8 = *(ulong *)(lVar8 + 0x48);\n    local_d0 = *(undefined4 **)(lVar8 + 0x40);\n  }" (else "else") (compound_statement "{\n    local_7c = *(undefined1 (*) [4])(lVar8 + 100);\n    local_f8 = *(ulong *)(lVar8 + 0x48);\n    local_d0 = *(undefined4 **)(lVar8 + 0x40);\n  }" ({ "{") (expression_statement "local_7c = *(undefined1 (*) [4])(lVar8 + 100);" (assignment_expression "local_7c = *(undefined1 (*) [4])(lVar8 + 100)" (identifier "local_7c") (= "=") (pointer_expression "*(undefined1 (*) [4])(lVar8 + 100)" (* "*") (cast_expression "(undefined1 (*) [4])(lVar8 + 100)" (( "(") (type_descriptor "undefined1 (*) [4]" (type_identifier "undefined1") (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "4") (] "]"))) () ")") (parenthesized_expression "(lVar8 + 100)" (( "(") (binary_expression "lVar8 + 100" (identifier "lVar8") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (expression_statement "local_f8 = *(ulong *)(lVar8 + 0x48);" (assignment_expression "local_f8 = *(ulong *)(lVar8 + 0x48)" (identifier "local_f8") (= "=") (pointer_expression "*(ulong *)(lVar8 + 0x48)" (* "*") (cast_expression "(ulong *)(lVar8 + 0x48)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x48)" (( "(") (binary_expression "lVar8 + 0x48" (identifier "lVar8") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "local_d0 = *(undefined4 **)(lVar8 + 0x40);" (assignment_expression "local_d0 = *(undefined4 **)(lVar8 + 0x40)" (identifier "local_d0") (= "=") (pointer_expression "*(undefined4 **)(lVar8 + 0x40)" (* "*") (cast_expression "(undefined4 **)(lVar8 + 0x40)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar8 + 0x40)" (( "(") (binary_expression "lVar8 + 0x40" (identifier "lVar8") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (} "}")))) (expression_statement "lVar6 = (**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1]);" (assignment_expression "lVar6 = (**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1])" (identifier "lVar6") (= "=") (call_expression "(**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1])" (parenthesized_expression "(**(code **)(*plVar5 + 0x28))" (( "(") (pointer_expression "**(code **)(*plVar5 + 0x28)" (* "*") (pointer_expression "*(code **)(*plVar5 + 0x28)" (* "*") (cast_expression "(code **)(*plVar5 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar5 + 0x28)" (( "(") (binary_expression "*plVar5 + 0x28" (pointer_expression "*plVar5" (* "*") (identifier "plVar5")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(plVar5,0x800,piVar14,piVar14 + param_6[1])" (( "(") (identifier "plVar5") (, ",") (number_literal "0x800") (, ",") (identifier "piVar14") (, ",") (binary_expression "piVar14 + param_6[1]" (identifier "piVar14") (+ "+") (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]"))) () ")")))) (; ";")) (expression_statement "uVar15 = lVar6 - (long)piVar14 >> 2;" (assignment_expression "uVar15 = lVar6 - (long)piVar14 >> 2" (identifier "uVar15") (= "=") (binary_expression "lVar6 - (long)piVar14 >> 2" (binary_expression "lVar6 - (long)piVar14" (identifier "lVar6") (- "-") (cast_expression "(long)piVar14" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "piVar14"))) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if (uVar15 == 0) goto LAB_00337f31;" (if "if") (parenthesized_expression "(uVar15 == 0)" (( "(") (binary_expression "uVar15 == 0" (identifier "uVar15") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00337f31;" (goto "goto") (statement_identifier "LAB_00337f31") (; ";"))) (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_002def60(&local_78,uVar15 * 2);" (call_expression "FUN_002def60(&local_78,uVar15 * 2)" (identifier "FUN_002def60") (argument_list "(&local_78,uVar15 * 2)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (binary_expression "uVar15 * 2" (identifier "uVar15") (* "*") (number_literal "2")) () ")"))) (; ";")) (expression_statement "iVar4 = *(int *)(lVar8 + 0x60);" (assignment_expression "iVar4 = *(int *)(lVar8 + 0x60)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(lVar8 + 0x60)" (* "*") (cast_expression "(int *)(lVar8 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x60)" (( "(") (binary_expression "lVar8 + 0x60" (identifier "lVar8") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "uVar17 = uVar15 - (long)iVar4;" (assignment_expression "uVar17 = uVar15 - (long)iVar4" (identifier "uVar17") (= "=") (binary_expression "uVar15 - (long)iVar4" (identifier "uVar15") (- "-") (cast_expression "(long)iVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar4")))) (; ";")) (if_statement "if (0 < (long)uVar17) {\n    if (iVar4 < 0) {\n      uVar17 = uVar15;\n    }\n    if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }\n    else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\n    }\n  }" (if "if") (parenthesized_expression "(0 < (long)uVar17)" (( "(") (binary_expression "0 < (long)uVar17" (number_literal "0") (< "<") (cast_expression "(long)uVar17" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar17"))) () ")")) (compound_statement "{\n    if (iVar4 < 0) {\n      uVar17 = uVar15;\n    }\n    if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }\n    else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\n    }\n  }" ({ "{") (if_statement "if (iVar4 < 0) {\n      uVar17 = uVar15;\n    }" (if "if") (parenthesized_expression "(iVar4 < 0)" (( "(") (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      uVar17 = uVar15;\n    }" ({ "{") (expression_statement "uVar17 = uVar15;" (assignment_expression "uVar17 = uVar15" (identifier "uVar17") (= "=") (identifier "uVar15")) (; ";")) (} "}"))) (if_statement "if (*(long *)(lVar8 + 0x18) == 0) {\n                    \n      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }\n    else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\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_002df740(&local_78,0,local_70,piVar14,uVar17);\n      iVar4 = *(int *)(lVar8 + 0x60);\n    }" ({ "{") (expression_statement "FUN_002df740(&local_78,0,local_70,piVar14,uVar17);" (call_expression "FUN_002df740(&local_78,0,local_70,piVar14,uVar17)" (identifier "FUN_002df740") (argument_list "(&local_78,0,local_70,piVar14,uVar17)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (number_literal "0") (, ",") (identifier "local_70") (, ",") (identifier "piVar14") (, ",") (identifier "uVar17") () ")"))) (; ";")) (expression_statement "iVar4 = *(int *)(lVar8 + 0x60);" (assignment_expression "iVar4 = *(int *)(lVar8 + 0x60)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(lVar8 + 0x60)" (* "*") (cast_expression "(int *)(lVar8 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x60)" (( "(") (binary_expression "lVar8 + 0x60" (identifier "lVar8") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\n    }" (else "else") (compound_statement "{\n      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);\n      puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);\n      uVar11 = (long)puVar7 - (long)local_78 >> 2;\n      if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }\n      *puVar7 = 0;\n      iVar4 = *(int *)(lVar8 + 0x60);\n      local_70 = uVar11;\n    }" ({ "{") (expression_statement "FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);" (call_expression "FUN_002df470(&local_78,0,local_70,uVar17 * 2,0)" (identifier "FUN_002df470") (argument_list "(&local_78,0,local_70,uVar17 * 2,0)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (number_literal "0") (, ",") (identifier "local_70") (, ",") (binary_expression "uVar17 * 2" (identifier "uVar17") (* "*") (number_literal "2")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);" (assignment_expression "puVar7 = (undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17)" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)\n               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17)" (identifier "FUN_003293d0") (argument_list "(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),\n                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17)" (( "(") (identifier "local_78") (, ",") (pointer_expression "*(undefined4 *)(lVar8 + 0x28)" (* "*") (cast_expression "(undefined4 *)(lVar8 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x28)" (( "(") (binary_expression "lVar8 + 0x28" (identifier "lVar8") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (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 "piVar14") (, ",") (binary_expression "piVar14 + uVar17" (identifier "piVar14") (+ "+") (identifier "uVar17")) () ")"))))) (; ";")) (expression_statement "uVar11 = (long)puVar7 - (long)local_78 >> 2;" (assignment_expression "uVar11 = (long)puVar7 - (long)local_78 >> 2" (identifier "uVar11") (= "=") (binary_expression "(long)puVar7 - (long)local_78 >> 2" (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"))) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if (local_70 < uVar11) {\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }" (if "if") (parenthesized_expression "(local_70 < uVar11)" (( "(") (binary_expression "local_70 < uVar11" (identifier "local_70") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n                    \n                    \n        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;\n      }" ({ "{") (expression_statement "FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")\n        ;" (call_expression "FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")" (identifier "FUN_00319620") (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","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 "iVar4 = *(int *)(lVar8 + 0x60);" (assignment_expression "iVar4 = *(int *)(lVar8 + 0x60)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(lVar8 + 0x60)" (* "*") (cast_expression "(int *)(lVar8 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x60)" (( "(") (binary_expression "lVar8 + 0x60" (identifier "lVar8") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "local_70 = uVar11;" (assignment_expression "local_70 = uVar11" (identifier "local_70") (= "=") (identifier "uVar11")) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar11 = local_70;" (assignment_expression "uVar11 = local_70" (identifier "uVar11") (= "=") (identifier "local_70")) (; ";")) (if_statement "if (0 < iVar4) {\n    uVar3 = *(undefined4 *)(lVar8 + 0x24);\n    uVar1 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar12 = 3;\n    }\n    else {\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }\n    if (uVar12 < uVar1) {\n                    \n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }\n    local_70 = uVar11 + 1;\n    local_78[uVar11] = uVar3;\n    local_78[uVar11 + 1] = 0;\n    if ((long)uVar17 < 0) {\n      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n        FUN_003195a0("basic_string::append");\n      }\n    }\n    else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }\n                    \n    FUN_002e0110(&local_78,piVar14,uVar15);\n  }" (if "if") (parenthesized_expression "(0 < iVar4)" (( "(") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n    uVar3 = *(undefined4 *)(lVar8 + 0x24);\n    uVar1 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar12 = 3;\n    }\n    else {\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }\n    if (uVar12 < uVar1) {\n                    \n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }\n    local_70 = uVar11 + 1;\n    local_78[uVar11] = uVar3;\n    local_78[uVar11 + 1] = 0;\n    if ((long)uVar17 < 0) {\n      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n        FUN_003195a0("basic_string::append");\n      }\n    }\n    else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }\n                    \n    FUN_002e0110(&local_78,piVar14,uVar15);\n  }" ({ "{") (expression_statement "uVar3 = *(undefined4 *)(lVar8 + 0x24);" (assignment_expression "uVar3 = *(undefined4 *)(lVar8 + 0x24)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined4 *)(lVar8 + 0x24)" (* "*") (cast_expression "(undefined4 *)(lVar8 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x24)" (( "(") (binary_expression "lVar8 + 0x24" (identifier "lVar8") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "uVar1 = local_70 + 1;" (assignment_expression "uVar1 = local_70 + 1" (identifier "uVar1") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_78 == &local_68) {\n      uVar12 = 3;\n    }\n    else {\n      uVar12 = CONCAT44(uStack_64,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 = 3;\n    }" ({ "{") (expression_statement "uVar12 = 3;" (assignment_expression "uVar12 = 3" (identifier "uVar12") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else {\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }" (else "else") (compound_statement "{\n      uVar12 = CONCAT44(uStack_64,local_68);\n    }" ({ "{") (expression_statement "uVar12 = CONCAT44(uStack_64,local_68);" (assignment_expression "uVar12 = CONCAT44(uStack_64,local_68)" (identifier "uVar12") (= "=") (call_expression "CONCAT44(uStack_64,local_68)" (identifier "CONCAT44") (argument_list "(uStack_64,local_68)" (( "(") (identifier "uStack_64") (, ",") (identifier "local_68") () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar12 < uVar1) {\n                    \n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }" (if "if") (parenthesized_expression "(uVar12 < uVar1)" (( "(") (binary_expression "uVar12 < uVar1" (identifier "uVar12") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n                    \n      FUN_002dea60(&local_78,local_70,0,0,1);\n    }" ({ "{") (expression_statement "FUN_002dea60(&local_78,local_70,0,0,1);" (call_expression "FUN_002dea60(&local_78,local_70,0,0,1)" (identifier "FUN_002dea60") (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_70 = uVar11 + 1;" (assignment_expression "local_70 = uVar11 + 1" (identifier "local_70") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_78[uVar11] = uVar3;" (assignment_expression "local_78[uVar11] = uVar3" (subscript_expression "local_78[uVar11]" (identifier "local_78") ([ "[") (identifier "uVar11") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "local_78[uVar11 + 1] = 0;" (assignment_expression "local_78[uVar11 + 1] = 0" (subscript_expression "local_78[uVar11 + 1]" (identifier "local_78") ([ "[") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((long)uVar17 < 0) {\n      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n        FUN_003195a0("basic_string::append");\n      }\n    }\n    else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }" (if "if") (parenthesized_expression "((long)uVar17 < 0)" (( "(") (binary_expression "(long)uVar17 < 0" (cast_expression "(long)uVar17" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar17")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n        FUN_003195a0("basic_string::append");\n      }\n    }" ({ "{") (expression_statement "FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));" (call_expression "FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70))" (identifier "FUN_002df470") (argument_list "(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70))" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (identifier "uVar1") (, ",") (number_literal "0") (, ",") (unary_expression "-uVar17" (- "-") (identifier "uVar17")) (, ",") (pointer_expression "*(undefined4 *)(lVar8 + 0x70)" (* "*") (cast_expression "(undefined4 *)(lVar8 + 0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x70)" (( "(") (binary_expression "lVar8 + 0x70" (identifier "lVar8") (+ "+") (number_literal "0x70")) () ")")))) () ")"))) (; ";")) (if_statement "if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n        FUN_003195a0("basic_string::append");\n      }" (if "if") (parenthesized_expression "(0x1fffffffffffffff - local_70 < uVar15)" (( "(") (binary_expression "0x1fffffffffffffff - local_70 < uVar15" (binary_expression "0x1fffffffffffffff - local_70" (number_literal "0x1fffffffffffffff") (- "-") (identifier "local_70")) (< "<") (identifier "uVar15")) () ")")) (compound_statement "{\n                    \n        FUN_003195a0("basic_string::append");\n      }" ({ "{") (expression_statement "FUN_003195a0("basic_string::append");" (call_expression "FUN_003195a0("basic_string::append")" (identifier "FUN_003195a0") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }" (else "else") (compound_statement "{\n      uVar15 = (ulong)*(int *)(lVar8 + 0x60);\n      piVar14 = piVar14 + uVar17;\n      if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }\n    }" ({ "{") (expression_statement "uVar15 = (ulong)*(int *)(lVar8 + 0x60);" (assignment_expression "uVar15 = (ulong)*(int *)(lVar8 + 0x60)" (identifier "uVar15") (= "=") (binary_expression "(ulong)*(int *)(lVar8 + 0x60)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(int *)(lVar8 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x60)" (( "(") (binary_expression "lVar8 + 0x60" (identifier "lVar8") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "piVar14 = piVar14 + uVar17;" (assignment_expression "piVar14 = piVar14 + uVar17" (identifier "piVar14") (= "=") (binary_expression "piVar14 + uVar17" (identifier "piVar14") (+ "+") (identifier "uVar17"))) (; ";")) (if_statement "if (0x1fffffffffffffff - local_70 < uVar15) {\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }" (if "if") (parenthesized_expression "(0x1fffffffffffffff - local_70 < uVar15)" (( "(") (binary_expression "0x1fffffffffffffff - local_70 < uVar15" (binary_expression "0x1fffffffffffffff - local_70" (number_literal "0x1fffffffffffffff") (- "-") (identifier "local_70")) (< "<") (identifier "uVar15")) () ")")) (compound_statement "{\n                    \n                    \n        FUN_003195a0("basic_string::append",piVar14);\n      }" ({ "{") (expression_statement "FUN_003195a0("basic_string::append",piVar14);" (call_expression "FUN_003195a0("basic_string::append",piVar14)" (identifier "FUN_003195a0") (argument_list "("basic_string::append",piVar14)" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) (, ",") (identifier "piVar14") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_002e0110(&local_78,piVar14,uVar15);" (call_expression "FUN_002e0110(&local_78,piVar14,uVar15)" (identifier "FUN_002e0110") (argument_list "(&local_78,piVar14,uVar15)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (identifier "piVar14") (, ",") (identifier "uVar15") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar15 = local_70 + local_f8;" (assignment_expression "uVar15 = local_70 + local_f8" (identifier "uVar15") (= "=") (binary_expression "local_70 + local_f8" (identifier "local_70") (+ "+") (identifier "local_f8"))) (; ";")) (expression_statement "uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;" (assignment_expression "uVar13 = *(uint *)(param_4 + 0x18) & 0xb0" (identifier "uVar13") (= "=") (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    uVar15 = uVar15 + *(long *)(lVar8 + 0x38);\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    uVar15 = uVar15 + *(long *)(lVar8 + 0x38);\n  }" ({ "{") (expression_statement "uVar15 = uVar15 + *(long *)(lVar8 + 0x38);" (assignment_expression "uVar15 = uVar15 + *(long *)(lVar8 + 0x38)" (identifier "uVar15") (= "=") (binary_expression "uVar15 + *(long *)(lVar8 + 0x38)" (identifier "uVar15") (+ "+") (pointer_expression "*(long *)(lVar8 + 0x38)" (* "*") (cast_expression "(long *)(lVar8 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x38)" (( "(") (binary_expression "lVar8 + 0x38" (identifier "lVar8") (+ "+") (number_literal "0x38")) () ")")))))) (; ";")) (} "}"))) (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_002def60(&local_58,uVar15 * 2);" (call_expression "FUN_002def60(&local_58,uVar15 * 2)" (identifier "FUN_002def60") (argument_list "(&local_58,uVar15 * 2)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (binary_expression "uVar15 * 2" (identifier "uVar15") (* "*") (number_literal "2")) () ")"))) (; ";")) (expression_statement "local_c8 = *(ulong *)(param_4 + 0x10);" (assignment_expression "local_c8 = *(ulong *)(param_4 + 0x10)" (identifier "local_c8") (= "=") (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 "ppuVar16 = (undefined4 **)local_7c;" (assignment_expression "ppuVar16 = (undefined4 **)local_7c" (identifier "ppuVar16") (= "=") (cast_expression "(undefined4 **)local_7c" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_7c"))) (; ";")) (expression_statement "bVar10 = uVar13 == 0x10 && uVar15 < local_c8;" (assignment_expression "bVar10 = uVar13 == 0x10 && uVar15 < local_c8" (identifier "bVar10") (= "=") (binary_expression "uVar13 == 0x10 && uVar15 < local_c8" (binary_expression "uVar13 == 0x10" (identifier "uVar13") (== "==") (number_literal "0x10")) (&& "&&") (binary_expression "uVar15 < local_c8" (identifier "uVar15") (< "<") (identifier "local_c8")))) (; ";")) (do_statement "do {\n    uVar17 = local_50;\n    switch(*(undefined1 *)ppuVar16) {\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }\n    ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);\n  } while (&local_78 != ppuVar16);" (do "do") (compound_statement "{\n    uVar17 = local_50;\n    switch(*(undefined1 *)ppuVar16) {\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }\n    ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);\n  }" ({ "{") (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" (identifier "uVar17") (= "=") (identifier "local_50")) (; ";")) (switch_statement "switch(*(undefined1 *)ppuVar16) {\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }" (switch "switch") (parenthesized_expression "(*(undefined1 *)ppuVar16)" (( "(") (pointer_expression "*(undefined1 *)ppuVar16" (* "*") (cast_expression "(undefined1 *)ppuVar16" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar16"))) () ")")) (compound_statement "{\n    case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;\n    case 1:\n      if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;\n    case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;\n    case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);\n    }" ({ "{") (case_statement "case 0:\n      if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      break;" (case "case") (number_literal "0") (: ":") (if_statement "if (bVar10) {\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }" (if "if") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (compound_statement "{\n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }" ({ "{") (expression_statement "FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);" (call_expression "FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5)" (identifier "FUN_002df470") (argument_list "(&local_58,local_50,0,local_c8 - uVar15,param_5)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "local_50") (, ",") (number_literal "0") (, ",") (binary_expression "local_c8 - uVar15" (identifier "local_c8") (- "-") (identifier "uVar15")) (, ",") (identifier "param_5") () ")"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 1:\n      if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;" (case "case") (number_literal "1") (: ":") (if_statement "if (bVar10) {\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }\n      else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" (if "if") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (compound_statement "{\n                    \n        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);\n      }" ({ "{") (expression_statement "FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);" (call_expression "FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5)" (identifier "FUN_002df470") (argument_list "(&local_58,local_50,0,local_c8 - uVar15,param_5)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "local_50") (, ",") (number_literal "0") (, ",") (binary_expression "local_c8 - uVar15" (identifier "local_c8") (- "-") (identifier "uVar15")) (, ",") (identifier "param_5") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" (else "else") (compound_statement "{\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = param_5;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" ({ "{") (if_statement "if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,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          uVar11 = 3;\n        }" ({ "{") (expression_statement "uVar11 = 3;" (assignment_expression "uVar11 = 3" (identifier "uVar11") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }" (else "else") (compound_statement "{\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }" ({ "{") (expression_statement "uVar11 = CONCAT44(uStack_44,local_48);" (assignment_expression "uVar11 = CONCAT44(uStack_44,local_48)" (identifier "uVar11") (= "=") (call_expression "CONCAT44(uStack_44,local_48)" (identifier "CONCAT44") (argument_list "(uStack_44,local_48)" (( "(") (identifier "uStack_44") (, ",") (identifier "local_48") () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar11 < local_50 + 1) {\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }" (if "if") (parenthesized_expression "(uVar11 < local_50 + 1)" (( "(") (binary_expression "uVar11 < local_50 + 1" (identifier "uVar11") (< "<") (binary_expression "local_50 + 1" (identifier "local_50") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n                    \n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }" ({ "{") (expression_statement "FUN_002dea60(&local_58,local_50,0,0,1);" (call_expression "FUN_002dea60(&local_58,local_50,0,0,1)" (identifier "FUN_002dea60") (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") () ")"))) (; ";")) (} "}"))) (expression_statement "local_58[uVar17] = param_5;" (assignment_expression "local_58[uVar17] = param_5" (subscript_expression "local_58[uVar17]" (identifier "local_58") ([ "[") (identifier "uVar17") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "local_50 = uVar17 + 1;" (assignment_expression "local_50 = uVar17 + 1" (identifier "local_50") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_58[uVar17 + 1] = 0;" (assignment_expression "local_58[uVar17 + 1] = 0" (subscript_expression "local_58[uVar17 + 1]" (identifier "local_58") ([ "[") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 2:\n      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }\n      break;" (case "case") (number_literal "2") (: ":") (if_statement "if ((*(byte *)(param_4 + 0x19) & 2) != 0) {\n        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\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        uVar17 = *(ulong *)(lVar8 + 0x38);\n        puVar7 = *(undefined4 **)(lVar8 + 0x30);\n        if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }\n        goto LAB_00338268;\n      }" ({ "{") (expression_statement "uVar17 = *(ulong *)(lVar8 + 0x38);" (assignment_expression "uVar17 = *(ulong *)(lVar8 + 0x38)" (identifier "uVar17") (= "=") (pointer_expression "*(ulong *)(lVar8 + 0x38)" (* "*") (cast_expression "(ulong *)(lVar8 + 0x38)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x38)" (( "(") (binary_expression "lVar8 + 0x38" (identifier "lVar8") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "puVar7 = *(undefined4 **)(lVar8 + 0x30);" (assignment_expression "puVar7 = *(undefined4 **)(lVar8 + 0x30)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(lVar8 + 0x30)" (* "*") (cast_expression "(undefined4 **)(lVar8 + 0x30)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar8 + 0x30)" (( "(") (binary_expression "lVar8 + 0x30" (identifier "lVar8") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (0x1fffffffffffffff - local_50 < uVar17) {\n                    \n          FUN_003195a0("basic_string::append");\n        }" (if "if") (parenthesized_expression "(0x1fffffffffffffff - local_50 < uVar17)" (( "(") (binary_expression "0x1fffffffffffffff - local_50 < uVar17" (binary_expression "0x1fffffffffffffff - local_50" (number_literal "0x1fffffffffffffff") (- "-") (identifier "local_50")) (< "<") (identifier "uVar17")) () ")")) (compound_statement "{\n                    \n          FUN_003195a0("basic_string::append");\n        }" ({ "{") (expression_statement "FUN_003195a0("basic_string::append");" (call_expression "FUN_003195a0("basic_string::append")" (identifier "FUN_003195a0") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00338268;" (goto "goto") (statement_identifier "LAB_00338268") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 3:\n      if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }\n      break;" (case "case") (number_literal "3") (: ":") (if_statement "if (local_f8 != 0) {\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" (if "if") (parenthesized_expression "(local_f8 != 0)" (( "(") (binary_expression "local_f8 != 0" (identifier "local_f8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar3 = *local_d0;\n        if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }\n        if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }\n        local_58[uVar17] = uVar3;\n        local_50 = uVar17 + 1;\n        local_58[uVar17 + 1] = 0;\n      }" ({ "{") (expression_statement "uVar3 = *local_d0;" (assignment_expression "uVar3 = *local_d0" (identifier "uVar3") (= "=") (pointer_expression "*local_d0" (* "*") (identifier "local_d0"))) (; ";")) (if_statement "if (local_58 == &local_48) {\n          uVar11 = 3;\n        }\n        else {\n          uVar11 = CONCAT44(uStack_44,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          uVar11 = 3;\n        }" ({ "{") (expression_statement "uVar11 = 3;" (assignment_expression "uVar11 = 3" (identifier "uVar11") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else {\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }" (else "else") (compound_statement "{\n          uVar11 = CONCAT44(uStack_44,local_48);\n        }" ({ "{") (expression_statement "uVar11 = CONCAT44(uStack_44,local_48);" (assignment_expression "uVar11 = CONCAT44(uStack_44,local_48)" (identifier "uVar11") (= "=") (call_expression "CONCAT44(uStack_44,local_48)" (identifier "CONCAT44") (argument_list "(uStack_44,local_48)" (( "(") (identifier "uStack_44") (, ",") (identifier "local_48") () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar11 < local_50 + 1) {\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }" (if "if") (parenthesized_expression "(uVar11 < local_50 + 1)" (( "(") (binary_expression "uVar11 < local_50 + 1" (identifier "uVar11") (< "<") (binary_expression "local_50 + 1" (identifier "local_50") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n          FUN_002dea60(&local_58,local_50,0,0,1);\n        }" ({ "{") (expression_statement "FUN_002dea60(&local_58,local_50,0,0,1);" (call_expression "FUN_002dea60(&local_58,local_50,0,0,1)" (identifier "FUN_002dea60") (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") () ")"))) (; ";")) (} "}"))) (expression_statement "local_58[uVar17] = uVar3;" (assignment_expression "local_58[uVar17] = uVar3" (subscript_expression "local_58[uVar17]" (identifier "local_58") ([ "[") (identifier "uVar17") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "local_50 = uVar17 + 1;" (assignment_expression "local_50 = uVar17 + 1" (identifier "local_50") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_58[uVar17 + 1] = 0;" (assignment_expression "local_58[uVar17 + 1] = 0" (subscript_expression "local_58[uVar17 + 1]" (identifier "local_58") ([ "[") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 4:\n      uVar17 = local_70;\n      puVar7 = local_78;\nLAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);" (case "case") (number_literal "4") (: ":") (expression_statement "uVar17 = local_70;" (assignment_expression "uVar17 = local_70" (identifier "uVar17") (= "=") (identifier "local_70")) (; ";")) (expression_statement "puVar7 = local_78;" (assignment_expression "puVar7 = local_78" (identifier "puVar7") (= "=") (identifier "local_78")) (; ";")) (labeled_statement "LAB_00338268:\n      FUN_002e0110(&local_58,puVar7,uVar17);" (statement_identifier "LAB_00338268") (: ":") (expression_statement "FUN_002e0110(&local_58,puVar7,uVar17);" (call_expression "FUN_002e0110(&local_58,puVar7,uVar17)" (identifier "FUN_002e0110") (argument_list "(&local_58,puVar7,uVar17)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "puVar7") (, ",") (identifier "uVar17") () ")"))) (; ";")))) (} "}"))) (expression_statement "ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);" (assignment_expression "ppuVar16 = (undefined4 **)((long)ppuVar16 + 1)" (identifier "ppuVar16") (= "=") (cast_expression "(undefined4 **)((long)ppuVar16 + 1)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((long)ppuVar16 + 1)" (( "(") (binary_expression "(long)ppuVar16 + 1" (cast_expression "(long)ppuVar16" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "ppuVar16")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(&local_78 != ppuVar16)" (( "(") (binary_expression "&local_78 != ppuVar16" (pointer_expression "&local_78" (& "&") (identifier "local_78")) (!= "!=") (identifier "ppuVar16")) () ")")) (; ";")) (if_statement "if (local_f8 < 2) {\n    if (local_50 < local_c8) goto LAB_00338340;\nLAB_003382a4:\n    local_c8 = local_50;\n  }\n  else {\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    \n                    \n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }\n    FUN_002e0110(&local_58);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar13 == 0x20) {\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }" (if "if") (parenthesized_expression "(local_f8 < 2)" (( "(") (binary_expression "local_f8 < 2" (identifier "local_f8") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    if (local_50 < local_c8) goto LAB_00338340;\nLAB_003382a4:\n    local_c8 = local_50;\n  }" ({ "{") (if_statement "if (local_50 < local_c8) goto LAB_00338340;" (if "if") (parenthesized_expression "(local_50 < local_c8)" (( "(") (binary_expression "local_50 < local_c8" (identifier "local_50") (< "<") (identifier "local_c8")) () ")")) (goto_statement "goto LAB_00338340;" (goto "goto") (statement_identifier "LAB_00338340") (; ";"))) (labeled_statement "LAB_003382a4:\n    local_c8 = local_50;" (statement_identifier "LAB_003382a4") (: ":") (expression_statement "local_c8 = local_50;" (assignment_expression "local_c8 = local_50" (identifier "local_c8") (= "=") (identifier "local_50")) (; ";"))) (} "}")) (else_clause "else {\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    \n                    \n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }\n    FUN_002e0110(&local_58);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar13 == 0x20) {\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }" (else "else") (compound_statement "{\n    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    \n                    \n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }\n    FUN_002e0110(&local_58);\n    if (local_c8 <= local_50) goto LAB_003382a4;\nLAB_00338340:\n    if (uVar13 == 0x20) {\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }\n  }" ({ "{") (if_statement "if (0x1fffffffffffffff - local_50 < local_f8 - 1) {\n                    \n                    \n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }" (if "if") (parenthesized_expression "(0x1fffffffffffffff - local_50 < local_f8 - 1)" (( "(") (binary_expression "0x1fffffffffffffff - local_50 < local_f8 - 1" (binary_expression "0x1fffffffffffffff - local_50" (number_literal "0x1fffffffffffffff") (- "-") (identifier "local_50")) (< "<") (binary_expression "local_f8 - 1" (identifier "local_f8") (- "-") (number_literal "1"))) () ")")) (compound_statement "{\n                    \n                    \n      FUN_003195a0("basic_string::append",local_d0 + 1);\n    }" ({ "{") (expression_statement "FUN_003195a0("basic_string::append",local_d0 + 1);" (call_expression "FUN_003195a0("basic_string::append",local_d0 + 1)" (identifier "FUN_003195a0") (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_002e0110(&local_58);" (call_expression "FUN_002e0110(&local_58)" (identifier "FUN_002e0110") (argument_list "(&local_58)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (if_statement "if (local_c8 <= local_50) goto LAB_003382a4;" (if "if") (parenthesized_expression "(local_c8 <= local_50)" (( "(") (binary_expression "local_c8 <= local_50" (identifier "local_c8") (<= "<=") (identifier "local_50")) () ")")) (goto_statement "goto LAB_003382a4;" (goto "goto") (statement_identifier "LAB_003382a4") (; ";"))) (labeled_statement "LAB_00338340:\n    if (uVar13 == 0x20) {\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }" (statement_identifier "LAB_00338340") (: ":") (if_statement "if (uVar13 == 0x20) {\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }\n    else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }" (if "if") (parenthesized_expression "(uVar13 == 0x20)" (( "(") (binary_expression "uVar13 == 0x20" (identifier "uVar13") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n                    \n      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);\n    }" ({ "{") (expression_statement "FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);" (call_expression "FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5)" (identifier "FUN_002df470") (argument_list "(&local_58,local_50,0,local_c8 - local_50,param_5)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "local_50") (, ",") (number_literal "0") (, ",") (binary_expression "local_c8 - local_50" (identifier "local_c8") (- "-") (identifier "local_50")) (, ",") (identifier "param_5") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }" (else "else") (compound_statement "{\n      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);\n    }" ({ "{") (expression_statement "FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);" (call_expression "FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5)" (identifier "FUN_002df470") (argument_list "(&local_58,0,0,local_c8 - local_50,param_5)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (binary_expression "local_c8 - local_50" (identifier "local_c8") (- "-") (identifier "local_50")) (, ",") (identifier "param_5") () ")"))) (; ";")) (} "}"))))) (} "}")))) (if_statement "if (local_e5 == '\0') {\n    lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);\n    local_e5 = (int)local_c8 != lVar8;\n  }" (if "if") (parenthesized_expression "(local_e5 == '\0')" (( "(") (binary_expression "local_e5 == '\0'" (identifier "local_e5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);\n    local_e5 = (int)local_c8 != lVar8;\n  }" ({ "{") (expression_statement "lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);" (assignment_expression "lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8)" (identifier "lVar8") (= "=") (call_expression "(**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8)" (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)local_c8)" (( "(") (identifier "param_2") (, ",") (identifier "local_58") (, ",") (cast_expression "(long)(int)local_c8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_c8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_c8"))) () ")")))) (; ";")) (expression_statement "local_e5 = (int)local_c8 != lVar8;" (assignment_expression "local_e5 = (int)local_c8 != lVar8" (identifier "local_e5") (= "=") (binary_expression "(int)local_c8 != lVar8" (cast_expression "(int)local_c8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_c8")) (!= "!=") (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_002dac70(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_002dac70(local_58);\n  }" ({ "{") (expression_statement "FUN_002dac70(local_58);" (call_expression "FUN_002dac70(local_58)" (identifier "FUN_002dac70") (argument_list "(local_58)" (( "(") (identifier "local_58") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_78 != &local_68) {\n    FUN_002dac70();\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_002dac70();\n  }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_00337f31:\n  auVar18._9_7_ = (int7)(param_3 >> 8);" (statement_identifier "LAB_00337f31") (: ":") (expression_statement "auVar18._9_7_ = (int7)(param_3 >> 8);" (assignment_expression "auVar18._9_7_ = (int7)(param_3 >> 8)" (field_expression "auVar18._9_7_" (identifier "auVar18") (. ".") (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 "auVar18[8] = local_e5;" (assignment_expression "auVar18[8] = local_e5" (subscript_expression "auVar18[8]" (identifier "auVar18") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "local_e5")) (; ";")) (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 "auVar18._0_8_ = param_2;" (assignment_expression "auVar18._0_8_ = param_2" (field_expression "auVar18._0_8_" (identifier "auVar18") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "param_2")) (; ";")) (return_statement "return auVar18;" (return "return") (identifier "auVar18") (; ";")) (ERROR "}" (} "}"))

/* std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_put<wchar_t,
   std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >
   >::_M_insert<true>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&,
   wchar_t, std::wstring const&) const */

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

{
  type_1 var_33;
  long *plVar2;
  type_2 uVar3;
  var_2 wVar4;
  int var_22;
  type_3 *pcVar6;
  type_1 var_13;
  long var_20;
  var_2 *pwVar9;
  long var_14;
  var_8<var_2,true> *var_16;
  bool bVar11;
  type_1 var_28;
  type_1 var_32;
  type_4 var_38;
  var_2 *var_19;
  var_2 **var_42;
  type_1 var_25;
  type_5 auVar18 [16];
  type_1 var_37;
  char var_44;
  type_2 *var_43;
  type_1 var_39;
  type_5 local_7c [4];
  var_2 *var_30;
  type_1 var_27;
  var_2 local_68;
  type_2 uStack_64;
  type_2 *var_40;
  type_1 var_41;
  type_2 local_48;
  type_2 uStack_44;
  
  var_44 = (char)var_45;
  pcVar6 = var_9<var_10::type_3<var_2>>((type_6 *)(var_11 + 0xd0));
  var_13 = type_6::id::var_12((type_7 *)&moneypunct<var_2,true>::type_7);
  plVar2 = (long *)(*(long *)(*(long *)(var_11 + 0xd0) + 0x18) + var_13 * 8);
  var_14 = *plVar2;
  if (var_14 == 0) {
                    /* try { // try from 00338495 to 00338499 has its CatchHandler @ 003386d8 */
    var_16 = (var_8<var_2,true> *)var_15(0xa0);
    *(type_2 *)(var_16 + 8) = 0;
    *(var_6 *)(var_16 + 0x10) = 0;
    *(var_6 *)(var_16 + 0x18) = 0;
    var_16[0x20] = (var_8<var_2,true>)0x0;
    *(type_8 ***)var_16 = &PTR____moneypunct_cache_0043b348;
    *(var_6 *)(var_16 + 0x24) = 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;
    *(var_6 *)(var_16 + 0x60) = 0;
    *(type_2 *)(var_16 + 0x68) = 0;
    var_16[0x98] = (var_8<var_2,true>)0x0;
                    /* try { // try from 0033851d to 00338521 has its CatchHandler @ 003386d6 */
    var_8<var_2,true>::var_17(var_16,(type_6 *)(var_11 + 0xd0));
    locale::_Impl::var_18(*(type_9 **)(var_11 + 0xd0),(type_10 *)var_16,var_13);
    var_14 = *plVar2;
  }
  var_19 = (var_2 *)*var_7;
  if (*var_19 == *(var_2 *)(var_14 + 0x6c)) {
    local_7c = *(type_5 (*) [4])(var_14 + 0x68);
    var_43 = *(type_2 **)(var_14 + 0x50);
    var_37 = *(type_1 *)(var_14 + 0x58);
    if (var_7[1] != 0) {
      var_19 = var_19 + 1;
    }
  }
  else {
    local_7c = *(type_5 (*) [4])(var_14 + 100);
    var_37 = *(type_1 *)(var_14 + 0x48);
    var_43 = *(type_2 **)(var_14 + 0x40);
  }
  var_20 = (**(type_11 **)(*(long *)pcVar6 + 0x28))(pcVar6,0x800,var_19);
  var_13 = var_20 - (long)var_19 >> 2;
  if (var_13 == 0) goto LAB_00337f31;
  var_27 = 0;
  var_30 = &local_68;
  local_68 = L'\0';
                    /* try { // try from 00337fc4 to 0033800a has its CatchHandler @ 00338695 */
  std::wstring::var_21((type_12 *)&var_30,var_13 * 2);
  var_22 = *(int *)(var_14 + 0x60);
  var_25 = var_13 - (long)var_22;
  if (0 < (long)var_25) {
    if (var_22 < 0) {
      var_25 = var_13;
    }
    if (*(long *)(var_14 + 0x18) == 0) {
                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */
      std::wstring::var_23((type_12 *)&var_30,0,var_27,var_19,var_25);
      var_22 = *(int *)(var_14 + 0x60);
    }
    else {
      std::wstring::var_24((type_12 *)&var_30,0,var_27,var_25 * 2,L'\0');
      pwVar9 = var_26<var_2>
                         (var_30,*(var_2 *)(var_14 + 0x28),*(char **)(var_14 + 0x10),
                          *(type_1 *)(var_14 + 0x18),var_19,var_19 + var_25);
      var_28 = (long)pwVar9 - (long)var_30 >> 2;
      if (var_27 < var_28) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */
        var_29
                  ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase");
      }
      *pwVar9 = L'\0';
      var_22 = *(int *)(var_14 + 0x60);
      var_27 = var_28;
    }
  }
  var_28 = var_27;
  if (0 < var_22) {
    wVar4 = *(var_2 *)(var_14 + 0x24);
    var_33 = var_27 + 1;
    if (var_30 == &local_68) {
      var_32 = 3;
    }
    else {
      var_32 = var_31(uStack_64,local_68);
    }
    if (var_32 < var_33) {
                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */
      std::wstring::var_34((type_12 *)&var_30,var_27,0,(var_2 *)0x0,1);
    }
    var_27 = var_28 + 1;
    var_30[var_28] = wVar4;
    var_30[var_28 + 1] = L'\0';
    if ((long)var_25 < 0) {
      std::wstring::var_24((type_12 *)&var_30,var_33,0,-var_25,*(var_2 *)(var_14 + 0x70))
      ;
      if (0x1fffffffffffffff - var_27 < var_13) {
                    /* WARNING: Subroutine does not return */
        var_35("basic_string::append");
      }
    }
    else {
      var_13 = (type_1)*(int *)(var_14 + 0x60);
      var_19 = var_19 + var_25;
      if (0x1fffffffffffffff - var_27 < var_13) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */
        var_35("basic_string::append");
      }
    }
                    /* try { // try from 00338454 to 00338458 has its CatchHandler @ 00338695 */
    std::wstring::var_36((type_12 *)&var_30,var_19,var_13);
  }
  var_13 = var_27 + var_37;
  var_38 = *(type_4 *)(var_11 + 0x18) & 0xb0;
  if ((*(type_4 *)(var_11 + 0x18) & 0x200) != 0) {
    var_13 = var_13 + *(long *)(var_14 + 0x38);
  }
  var_41 = 0;
  var_40 = &local_48;
  local_48 = 0;
                    /* try { // try from 003380b6 to 003383ad has its CatchHandler @ 0033869a */
  std::wstring::var_21((type_12 *)&var_40,var_13 * 2);
  var_39 = *(type_1 *)(var_11 + 0x10);
  var_42 = (var_2 **)local_7c;
  bVar11 = var_38 == 0x10 && var_13 < var_39;
  do {
    var_25 = var_41;
    switch(*(type_5 *)var_42) {
    case 0:
      if (bVar11) {
        std::wstring::var_24((type_12 *)&var_40,var_41,0,var_39 - var_13,param_5);
      }
      break;
    case 1:
      if (bVar11) {
                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */
        std::wstring::var_24((type_12 *)&var_40,var_41,0,var_39 - var_13,param_5);
      }
      else {
        if (var_40 == &local_48) {
          var_28 = 3;
        }
        else {
          var_28 = var_31(uStack_44,local_48);
        }
        if (var_28 < var_41 + 1) {
                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */
          std::wstring::var_34((type_12 *)&var_40,var_41,0,(var_2 *)0x0,1);
        }
        var_40[var_25] = param_5;
        var_41 = var_25 + 1;
        var_40[var_25 + 1] = 0;
      }
      break;
    case 2:
      if ((*(type_13 *)(var_11 + 0x19) & 2) != 0) {
        var_25 = *(type_1 *)(var_14 + 0x38);
        var_19 = *(var_2 **)(var_14 + 0x30);
        if (0x1fffffffffffffff - var_41 < var_25) {
                    /* WARNING: Subroutine does not return */
          var_35("basic_string::append");
        }
        goto LAB_00338268;
      }
      break;
    case 3:
      if (var_37 != 0) {
        uVar3 = *var_43;
        if (var_40 == &local_48) {
          var_28 = 3;
        }
        else {
          var_28 = var_31(uStack_44,local_48);
        }
        if (var_28 < var_41 + 1) {
          std::wstring::var_34((type_12 *)&var_40,var_41,0,(var_2 *)0x0,1);
        }
        var_40[var_25] = uVar3;
        var_41 = var_25 + 1;
        var_40[var_25 + 1] = 0;
      }
      break;
    case 4:
      var_25 = var_27;
      var_19 = var_30;
LAB_00338268:
      std::wstring::var_36((type_12 *)&var_40,var_19,var_25);
    }
    var_42 = (var_2 **)((long)var_42 + 1);
  } while (&var_30 != var_42);
  if (var_37 < 2) {
    if (var_41 < var_39) goto LAB_00338340;
LAB_003382a4:
    var_39 = var_41;
  }
  else {
    if (0x1fffffffffffffff - var_41 < var_37 - 1) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */
      var_35("basic_string::append");
    }
    std::wstring::var_36((type_12 *)&var_40,var_43 + 1,var_37 - 1);
    if (var_39 <= var_41) goto LAB_003382a4;
LAB_00338340:
    if (var_38 == 0x20) {
                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */
      std::wstring::var_24((type_12 *)&var_40,var_41,0,var_39 - var_41,param_5);
    }
    else {
      std::wstring::var_24((type_12 *)&var_40,0,0,var_39 - var_41,param_5);
    }
  }
  if (var_44 == '\0') {
    var_14 = (**(type_11 **)(*var_5 + 0x60))(var_5,var_40,(long)(int)var_39);
    var_44 = (int)var_39 != var_14;
  }
  var_45 = var_45 & 0xffffffffffffff00;
  if (var_40 != &local_48) {
    var_46(var_40);
  }
  if (var_30 != &local_68) {
    var_46(var_30);
  }
LAB_00337f31:
  auVar18._9_7_ = (int7)(var_45 >> 8);
  auVar18[8] = var_44;
  *(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) declarator: (identifier) (ERROR (identifier)) (ERROR (identifier) (pointer_declarator declarator: (identifier)) (identifier)) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) 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: (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: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (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: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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: (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: (primitive_type) 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: (primitive_type) 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))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (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)))))))))) (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) (number_literal) (identifier) (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (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) (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))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier) (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (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: (identifier) right: (binary_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) (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)) (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)))))))) (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)) (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)) (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)))))))) (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)))))) (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)))))) (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) (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: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (number_literal) (binary_expression left: (identifier) right: (identifier)) (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)) (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,undefined4 param_5,
            undefined8 *param_6)

{
  ulong uVar1;
  long *plVar2;
  undefined4 uVar3;
  int iVar4;
  long *plVar5;
  long lVar6;
  undefined4 *puVar7;
  long lVar8;
  undefined8 *puVar9;
  bool bVar10;
  ulong uVar11;
  ulong uVar12;
  uint uVar13;
  int *piVar14;
  ulong uVar15;
  undefined4 **ppuVar16;
  ulong uVar17;
  undefined1 auVar18 [16];
  ulong local_f8;
  char local_e5;
  undefined4 *local_d0;
  ulong local_c8;
  undefined1 local_7c [4];
  undefined4 *local_78;
  ulong local_70;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 *local_58;
  ulong local_50;
  undefined4 local_48;
  undefined4 uStack_44;
  
  local_e5 = (char)param_3;
  plVar5 = (long *)FUN_00327630(param_4 + 0xd0);
  lVar6 = FUN_002dd3b0(&DAT_0044bd28);
  plVar2 = (long *)(*(long *)(*(long *)(param_4 + 0xd0) + 0x18) + lVar6 * 8);
  lVar8 = *plVar2;
  if (lVar8 == 0) {
                    /* try { // try from 00338495 to 00338499 has its CatchHandler @ 003386d8 */
    puVar9 = (undefined8 *)FUN_002d94a0(0xa0);
    *(undefined4 *)(puVar9 + 1) = 0;
    puVar9[2] = 0;
    puVar9[3] = 0;
    *(undefined1 *)(puVar9 + 4) = 0;
    *puVar9 = &PTR_FUN_0043b348;
    *(undefined8 *)((long)puVar9 + 0x24) = 0;
    puVar9[6] = 0;
    puVar9[7] = 0;
    puVar9[8] = 0;
    puVar9[9] = 0;
    puVar9[10] = 0;
    puVar9[0xb] = 0;
    puVar9[0xc] = 0;
    *(undefined4 *)(puVar9 + 0xd) = 0;
    *(undefined1 *)(puVar9 + 0x13) = 0;
                    /* try { // try from 0033851d to 00338521 has its CatchHandler @ 003386d6 */
    FUN_00328110(puVar9,param_4 + 0xd0);
    FUN_002dd820(*(undefined8 *)(param_4 + 0xd0),puVar9,lVar6);
    lVar8 = *plVar2;
  }
  piVar14 = (int *)*param_6;
  if (*piVar14 == *(int *)(lVar8 + 0x6c)) {
    local_7c = *(undefined1 (*) [4])(lVar8 + 0x68);
    local_d0 = *(undefined4 **)(lVar8 + 0x50);
    local_f8 = *(ulong *)(lVar8 + 0x58);
    if (param_6[1] != 0) {
      piVar14 = piVar14 + 1;
    }
  }
  else {
    local_7c = *(undefined1 (*) [4])(lVar8 + 100);
    local_f8 = *(ulong *)(lVar8 + 0x48);
    local_d0 = *(undefined4 **)(lVar8 + 0x40);
  }
  lVar6 = (**(code **)(*plVar5 + 0x28))(plVar5,0x800,piVar14,piVar14 + param_6[1]);
  uVar15 = lVar6 - (long)piVar14 >> 2;
  if (uVar15 == 0) goto LAB_00337f31;
  local_70 = 0;
  local_78 = &local_68;
  local_68 = 0;
                    /* try { // try from 00337fc4 to 0033800a has its CatchHandler @ 00338695 */
  FUN_002def60(&local_78,uVar15 * 2);
  iVar4 = *(int *)(lVar8 + 0x60);
  uVar17 = uVar15 - (long)iVar4;
  if (0 < (long)uVar17) {
    if (iVar4 < 0) {
      uVar17 = uVar15;
    }
    if (*(long *)(lVar8 + 0x18) == 0) {
                    /* try { // try from 00338550 to 00338582 has its CatchHandler @ 00338695 */
      FUN_002df740(&local_78,0,local_70,piVar14,uVar17);
      iVar4 = *(int *)(lVar8 + 0x60);
    }
    else {
      FUN_002df470(&local_78,0,local_70,uVar17 * 2,0);
      puVar7 = (undefined4 *)
               FUN_003293d0(local_78,*(undefined4 *)(lVar8 + 0x28),*(undefined8 *)(lVar8 + 0x10),
                            *(undefined8 *)(lVar8 + 0x18),piVar14,piVar14 + uVar17);
      uVar11 = (long)puVar7 - (long)local_78 >> 2;
      if (local_70 < uVar11) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0033866c to 00338670 has its CatchHandler @ 00338695 */
        FUN_00319620("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::erase")
        ;
      }
      *puVar7 = 0;
      iVar4 = *(int *)(lVar8 + 0x60);
      local_70 = uVar11;
    }
  }
  uVar11 = local_70;
  if (0 < iVar4) {
    uVar3 = *(undefined4 *)(lVar8 + 0x24);
    uVar1 = local_70 + 1;
    if (local_78 == &local_68) {
      uVar12 = 3;
    }
    else {
      uVar12 = CONCAT44(uStack_64,local_68);
    }
    if (uVar12 < uVar1) {
                    /* try { // try from 003385fa to 003385fe has its CatchHandler @ 00338695 */
      FUN_002dea60(&local_78,local_70,0,0,1);
    }
    local_70 = uVar11 + 1;
    local_78[uVar11] = uVar3;
    local_78[uVar11 + 1] = 0;
    if ((long)uVar17 < 0) {
      FUN_002df470(&local_78,uVar1,0,-uVar17,*(undefined4 *)(lVar8 + 0x70));
      if (0x1fffffffffffffff - local_70 < uVar15) {
                    /* WARNING: Subroutine does not return */
        FUN_003195a0("basic_string::append");
      }
    }
    else {
      uVar15 = (ulong)*(int *)(lVar8 + 0x60);
      piVar14 = piVar14 + uVar17;
      if (0x1fffffffffffffff - local_70 < uVar15) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00338684 to 00338694 has its CatchHandler @ 00338695 */
        FUN_003195a0("basic_string::append",piVar14);
      }
    }
                    /* try { // try from 00338454 to 00338458 has its CatchHandler @ 00338695 */
    FUN_002e0110(&local_78,piVar14,uVar15);
  }
  uVar15 = local_70 + local_f8;
  uVar13 = *(uint *)(param_4 + 0x18) & 0xb0;
  if ((*(uint *)(param_4 + 0x18) & 0x200) != 0) {
    uVar15 = uVar15 + *(long *)(lVar8 + 0x38);
  }
  local_50 = 0;
  local_58 = &local_48;
  local_48 = 0;
                    /* try { // try from 003380b6 to 003383ad has its CatchHandler @ 0033869a */
  FUN_002def60(&local_58,uVar15 * 2);
  local_c8 = *(ulong *)(param_4 + 0x10);
  ppuVar16 = (undefined4 **)local_7c;
  bVar10 = uVar13 == 0x10 && uVar15 < local_c8;
  do {
    uVar17 = local_50;
    switch(*(undefined1 *)ppuVar16) {
    case 0:
      if (bVar10) {
        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);
      }
      break;
    case 1:
      if (bVar10) {
                    /* try { // try from 00338482 to 00338486 has its CatchHandler @ 0033869a */
        FUN_002df470(&local_58,local_50,0,local_c8 - uVar15,param_5);
      }
      else {
        if (local_58 == &local_48) {
          uVar11 = 3;
        }
        else {
          uVar11 = CONCAT44(uStack_44,local_48);
        }
        if (uVar11 < local_50 + 1) {
                    /* try { // try from 00338620 to 00338624 has its CatchHandler @ 0033869a */
          FUN_002dea60(&local_58,local_50,0,0,1);
        }
        local_58[uVar17] = param_5;
        local_50 = uVar17 + 1;
        local_58[uVar17 + 1] = 0;
      }
      break;
    case 2:
      if ((*(byte *)(param_4 + 0x19) & 2) != 0) {
        uVar17 = *(ulong *)(lVar8 + 0x38);
        puVar7 = *(undefined4 **)(lVar8 + 0x30);
        if (0x1fffffffffffffff - local_50 < uVar17) {
                    /* WARNING: Subroutine does not return */
          FUN_003195a0("basic_string::append");
        }
        goto LAB_00338268;
      }
      break;
    case 3:
      if (local_f8 != 0) {
        uVar3 = *local_d0;
        if (local_58 == &local_48) {
          uVar11 = 3;
        }
        else {
          uVar11 = CONCAT44(uStack_44,local_48);
        }
        if (uVar11 < local_50 + 1) {
          FUN_002dea60(&local_58,local_50,0,0,1);
        }
        local_58[uVar17] = uVar3;
        local_50 = uVar17 + 1;
        local_58[uVar17 + 1] = 0;
      }
      break;
    case 4:
      uVar17 = local_70;
      puVar7 = local_78;
LAB_00338268:
      FUN_002e0110(&local_58,puVar7,uVar17);
    }
    ppuVar16 = (undefined4 **)((long)ppuVar16 + 1);
  } while (&local_78 != ppuVar16);
  if (local_f8 < 2) {
    if (local_50 < local_c8) goto LAB_00338340;
LAB_003382a4:
    local_c8 = local_50;
  }
  else {
    if (0x1fffffffffffffff - local_50 < local_f8 - 1) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00338678 to 0033867c has its CatchHandler @ 0033869a */
      FUN_003195a0("basic_string::append",local_d0 + 1);
    }
    FUN_002e0110(&local_58);
    if (local_c8 <= local_50) goto LAB_003382a4;
LAB_00338340:
    if (uVar13 == 0x20) {
                    /* try { // try from 003385b6 to 003385d4 has its CatchHandler @ 0033869a */
      FUN_002df470(&local_58,local_50,0,local_c8 - local_50,param_5);
    }
    else {
      FUN_002df470(&local_58,0,0,local_c8 - local_50,param_5);
    }
  }
  if (local_e5 == '\0') {
    lVar8 = (**(code **)(*param_2 + 0x60))(param_2,local_58,(long)(int)local_c8);
    local_e5 = (int)local_c8 != lVar8;
  }
  param_3 = param_3 & 0xffffffffffffff00;
  if (local_58 != &local_48) {
    FUN_002dac70(local_58);
  }
  if (local_78 != &local_68) {
    FUN_002dac70();
  }
LAB_00337f31:
  auVar18._9_7_ = (int7)(param_3 >> 8);
  auVar18[8] = local_e5;
  *(undefined8 *)(param_4 + 0x10) = 0;
  auVar18._0_8_ = param_2;
  return auVar18;
}

