
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* std::wstring::replace(__normal_iterator<wchar_t const*, std::wstring >, __normal_iterator<wchar_t
   const*, std::wstring >, wchar_t const*, wchar_t const*) */

void __thiscall
std::wstring::replace(wstring *this,int param_2,int param_3,wchar_t *param_4,int param_5)

{
  wchar_t *pwVar1;
  wchar_t *pwVar2;
  uint uVar3;
  code *pcVar4;
  code *pcVar5;
  wstring *pwVar6;
  wchar_t *pwVar7;
  undefined *puVar8;
  wchar_t *pwVar9;
  int iVar10;
  code *pcVar11;
  uint uVar12;
  code *pcVar13;
  undefined *puVar14;
  code *pcVar15;
  code *pcVar16;
  code *pcVar17;
  code *pcVar18;
  code *pcVar19;
  code *pcVar20;
  uint uStack_cc;
  int in_stack_ffffff70;
  uint uVar21;
  
  pwVar2 = *(wchar_t **)(this + 4);
  uVar21 = 0x43a1d0;
  pwVar7 = (wchar_t *)(param_2 - *(int *)this >> 2);
  if (pwVar7 <= pwVar2) {
    uVar21 = param_3 - param_2 >> 2;
    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {
      uVar21 = (int)pwVar2 - (int)pwVar7;
    }
    _M_replace(this,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);
    return;
  }
  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);
  puVar8 = PTR_s__0043226c + 0x72f0;
  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;
  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();
  pwVar1 = *(wchar_t **)(pwVar6 + 4);
  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);
  if (pwVar9 <= pwVar1) {
    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;
    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {
      uVar12 = (int)pwVar1 - (int)pwVar9;
    }
    _M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);
    return;
  }
  pcVar15 = *(code **)(puVar14 + 0x175e7c);
  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);
  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;
  (*pcVar15)();
  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);
  pwVar7 = *(wchar_t **)(pwVar6 + 4);
  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);
  if (pwVar2 <= pwVar7) {
    uVar3 = (int)pwVar9 - iVar10 >> 2;
    uVar12 = (int)pwVar7 - (int)pwVar2;
    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {
      uVar12 = uVar3;
    }
    _M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);
    return;
  }
  pcVar16 = *(code **)(pcVar15 + 0x175e04);
  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);
  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;
  (*pcVar16)();
  pwVar1 = *(wchar_t **)(pwVar6 + 4);
  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);
  if (pwVar1 < pwVar9) {
    pcVar15 = *(code **)(pcVar16 + 0x175d40);
    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);
    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;
    (*pcVar15)();
    pcVar16 = pcVar15 + 0x17ceac;
    pwVar2 = *(wchar_t **)(pwVar6 + 4);
    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);
    if (pwVar7 <= pwVar2) {
      uVar21 = (int)pwVar9 - iVar10 >> 2;
      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {
        uVar21 = (int)pwVar2 - (int)pwVar7;
      }
      _M_replace(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);
      return;
    }
    pcVar17 = *(code **)(pcVar15 + 0x175cc4);
    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);
    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;
    (*pcVar17)();
    pcVar19 = pcVar17 + 0x17ce28;
    pcVar4 = *(code **)(pwVar6 + 4);
    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);
    if (pcVar4 < pcVar15) {
      pcVar18 = *(code **)(pcVar17 + 0x175c40);
      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);
      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);
      (*pcVar18)();
      pcVar20 = pcVar18 + 0x17cda4;
      pcVar5 = *(code **)(pcVar4 + 4);
      pcVar16 = pcVar19;
      pcVar17 = pcVar5;
      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);
      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {
        pcVar17 = *(code **)(pwVar6 + 4);
        uVar21 = (int)pcVar5 - (int)pcVar19;
        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {
          uVar21 = uStack_cc;
        }
        pcVar16 = pcVar11;
        pcVar13 = pcVar17;
        if (pcVar11 <= pcVar17) {
          if (pcVar17 + -(int)pcVar11 <= pcVar15) {
            pcVar15 = pcVar17 + -(int)pcVar11;
          }
          _M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,
                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);
          return;
        }
      }
      do {
        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);
        (**(code **)(pcVar18 + 0x175bbc))
                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);
        pcVar17 = pcVar13;
        pcVar16 = pcVar15;
        pcVar13 = pcVar17;
      } while( true );
    }
    uVar21 = (int)pwVar7 - iVar10 >> 2;
    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {
      uVar21 = (int)pcVar4 - (int)pcVar15;
    }
    _M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);
    return;
  }
  _M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);
  return;
}



void FUN_002bd0e8(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)

{
  wchar_t *pwVar1;
  wchar_t *pwVar2;
  uint uVar3;
  code *pcVar4;
  code *pcVar5;
  wstring *pwVar6;
  wchar_t *pwVar7;
  undefined *puVar8;
  wchar_t *pwVar9;
  int iVar10;
  code *pcVar11;
  uint uVar12;
  code *pcVar13;
  undefined *puVar14;
  code *pcVar15;
  code *pcVar16;
  code *pcVar17;
  code *pcVar18;
  code *pcVar19;
  code *pcVar20;
  uint uStack_cc;
  int in_stack_ffffff70;
  uint uVar21;
  
  pwVar2 = *(wchar_t **)(param_1 + 4);
  uVar21 = 0x43a1d0;
  pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);
  if (pwVar7 <= pwVar2) {
    uVar21 = param_3 - param_2 >> 2;
    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {
      uVar21 = (int)pwVar2 - (int)pwVar7;
    }
    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);
    return;
  }
  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);
  puVar8 = PTR_DAT_0043226c + 0x72f0;
  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;
  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();
  pwVar1 = *(wchar_t **)(pwVar6 + 4);
  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);
  if (pwVar9 <= pwVar1) {
    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;
    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {
      uVar12 = (int)pwVar1 - (int)pwVar9;
    }
    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);
    return;
  }
  pcVar15 = *(code **)(puVar14 + 0x175e7c);
  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);
  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;
  (*pcVar15)();
  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);
  pwVar7 = *(wchar_t **)(pwVar6 + 4);
  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);
  if (pwVar2 <= pwVar7) {
    uVar3 = (int)pwVar9 - iVar10 >> 2;
    uVar12 = (int)pwVar7 - (int)pwVar2;
    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {
      uVar12 = uVar3;
    }
    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);
    return;
  }
  pcVar16 = *(code **)(pcVar15 + 0x175e04);
  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);
  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;
  (*pcVar16)();
  pwVar1 = *(wchar_t **)(pwVar6 + 4);
  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);
  if (pwVar1 < pwVar9) {
    pcVar15 = *(code **)(pcVar16 + 0x175d40);
    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);
    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;
    (*pcVar15)();
    pcVar16 = pcVar15 + 0x17ceac;
    pwVar2 = *(wchar_t **)(pwVar6 + 4);
    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);
    if (pwVar7 <= pwVar2) {
      uVar21 = (int)pwVar9 - iVar10 >> 2;
      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {
        uVar21 = (int)pwVar2 - (int)pwVar7;
      }
      std::wstring::_M_replace
                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);
      return;
    }
    pcVar17 = *(code **)(pcVar15 + 0x175cc4);
    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);
    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;
    (*pcVar17)();
    pcVar19 = pcVar17 + 0x17ce28;
    pcVar4 = *(code **)(pwVar6 + 4);
    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);
    if (pcVar4 < pcVar15) {
      pcVar18 = *(code **)(pcVar17 + 0x175c40);
      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);
      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);
      (*pcVar18)();
      pcVar20 = pcVar18 + 0x17cda4;
      pcVar5 = *(code **)(pcVar4 + 4);
      pcVar16 = pcVar19;
      pcVar17 = pcVar5;
      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);
      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {
        pcVar17 = *(code **)(pwVar6 + 4);
        uVar21 = (int)pcVar5 - (int)pcVar19;
        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {
          uVar21 = uStack_cc;
        }
        pcVar16 = pcVar11;
        pcVar13 = pcVar17;
        if (pcVar11 <= pcVar17) {
          if (pcVar17 + -(int)pcVar11 <= pcVar15) {
            pcVar15 = pcVar17 + -(int)pcVar11;
          }
          std::wstring::_M_replace
                    (pwVar6,(uint)pcVar11,(uint)pcVar15,
                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);
          return;
        }
      }
      do {
        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);
        (**(code **)(pcVar18 + 0x175bbc))
                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);
        pcVar17 = pcVar13;
        pcVar16 = pcVar15;
        pcVar13 = pcVar17;
      } while( true );
    }
    uVar21 = (int)pwVar7 - iVar10 >> 2;
    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {
      uVar21 = (int)pcVar4 - (int)pcVar15;
    }
    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);
    return;
  }
  std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);
  return;
}


lui gp,0x18
addiu gp,gp,-0x2f18
addu gp,gp,t9
lw t0,0x0(a0)
addiu sp,sp,-0x20
subu a2,a2,a1
lw v1,0x4(a0)
subu a1,a1,t0
lw v0,0x30(sp)
sw gp,0x10(sp)
sra a1,a1,0x2
sw ra,0x1c(sp)
sltu t0,v1,a1
bne t0,zero,0x002bd14c
_subu v0,v0,a3
sra a2,a2,0x2
lw ra,0x1c(sp)
sra v0,v0,0x2
lw t9,-0x64e0(gp)
subu v1,v1,a1
sw v0,0x30(sp)
addiu sp,sp,0x20
sltu v0,a2,v1
b 0x002bc728
_movz a2,v1,v0
or a2,a1,zero
lw a0,-0x7e1c(gp)
lw a1,-0x7f64(gp)
or a3,v1,zero
lw t9,-0x71e8(gp)
addiu a0,a0,-0x25a4
jalr t9
_addiu a1,a1,0x72f0
(translation_unit "void FUN_002bd0e8(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  uint uVar3;\n  code *pcVar4;\n  code *pcVar5;\n  wstring *pwVar6;\n  wchar_t *pwVar7;\n  undefined *puVar8;\n  wchar_t *pwVar9;\n  int iVar10;\n  code *pcVar11;\n  uint uVar12;\n  code *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  code *pcVar17;\n  code *pcVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint uStack_cc;\n  int in_stack_ffffff70;\n  uint uVar21;\n  \n  pwVar2 = *(wchar_t **)(param_1 + 4);\n  uVar21 = 0x43a1d0;\n  pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);\n  if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }\n  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);\n  puVar8 = PTR_DAT_0043226c + 0x72f0;\n  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;\n  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);\n  if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x175e7c);\n  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);\n  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;\n  (*pcVar15)();\n  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);\n  pwVar7 = *(wchar_t **)(pwVar6 + 4);\n  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }\n  pcVar16 = *(code **)(pcVar15 + 0x175e04);\n  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);\n  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;\n  (*pcVar16)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }\n  std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);\n  return;\n}\n\n" (function_definition "void FUN_002bd0e8(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  uint uVar3;\n  code *pcVar4;\n  code *pcVar5;\n  wstring *pwVar6;\n  wchar_t *pwVar7;\n  undefined *puVar8;\n  wchar_t *pwVar9;\n  int iVar10;\n  code *pcVar11;\n  uint uVar12;\n  code *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  code *pcVar17;\n  code *pcVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint uStack_cc;\n  int in_stack_ffffff70;\n  uint uVar21;\n  \n  pwVar2 = *(wchar_t **)(param_1 + 4);\n  uVar21 = 0x43a1d0;\n  pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);\n  if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }\n  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);\n  puVar8 = PTR_DAT_0043226c + 0x72f0;\n  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;\n  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);\n  if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x175e7c);\n  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);\n  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;\n  (*pcVar15)();\n  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);\n  pwVar7 = *(wchar_t **)(pwVar6 + 4);\n  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }\n  pcVar16 = *(code **)(pcVar15 + 0x175e04);\n  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);\n  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;\n  (*pcVar16)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }\n  std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);\n  return;\n}" primitive_type (function_declarator "FUN_002bd0e8(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)" identifier (parameter_list "(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)" ( (parameter_declaration "wstring *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "wchar_t *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  uint uVar3;\n  code *pcVar4;\n  code *pcVar5;\n  wstring *pwVar6;\n  wchar_t *pwVar7;\n  undefined *puVar8;\n  wchar_t *pwVar9;\n  int iVar10;\n  code *pcVar11;\n  uint uVar12;\n  code *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  code *pcVar17;\n  code *pcVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint uStack_cc;\n  int in_stack_ffffff70;\n  uint uVar21;\n  \n  pwVar2 = *(wchar_t **)(param_1 + 4);\n  uVar21 = 0x43a1d0;\n  pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);\n  if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }\n  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);\n  puVar8 = PTR_DAT_0043226c + 0x72f0;\n  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;\n  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);\n  if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x175e7c);\n  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);\n  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;\n  (*pcVar15)();\n  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);\n  pwVar7 = *(wchar_t **)(pwVar6 + 4);\n  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }\n  pcVar16 = *(code **)(pcVar15 + 0x175e04);\n  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);\n  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;\n  (*pcVar16)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }\n  std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);\n  return;\n}" { (declaration "wchar_t *pwVar1;" type_identifier (pointer_declarator "*pwVar1" * identifier) ;) (declaration "wchar_t *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "wstring *pwVar6;" type_identifier (pointer_declarator "*pwVar6" * identifier) ;) (declaration "wchar_t *pwVar7;" type_identifier (pointer_declarator "*pwVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "wchar_t *pwVar9;" type_identifier (pointer_declarator "*pwVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "code *pcVar16;" type_identifier (pointer_declarator "*pcVar16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "code *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "uint uStack_cc;" type_identifier identifier ;) (declaration "int in_stack_ffffff70;" primitive_type identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (expression_statement "pwVar2 = *(wchar_t **)(param_1 + 4);" (assignment_expression "pwVar2 = *(wchar_t **)(param_1 + 4)" identifier = (pointer_expression "*(wchar_t **)(param_1 + 4)" * (cast_expression "(wchar_t **)(param_1 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = 0x43a1d0;" (assignment_expression "uVar21 = 0x43a1d0" identifier = number_literal) ;) (expression_statement "pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);" (assignment_expression "pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2)" identifier = (cast_expression "(wchar_t *)(param_2 - *(int *)param_1 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 - *(int *)param_1 >> 2)" ( (binary_expression "param_2 - *(int *)param_1 >> 2" (binary_expression "param_2 - *(int *)param_1" identifier - (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }" if (parenthesized_expression "(pwVar7 <= pwVar2)" ( (binary_expression "pwVar7 <= pwVar2" identifier <= identifier) )) (compound_statement "{\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }" { (expression_statement "uVar21 = param_3 - param_2 >> 2;" (assignment_expression "uVar21 = param_3 - param_2 >> 2" identifier = (binary_expression "param_3 - param_2 >> 2" (binary_expression "param_3 - param_2" identifier - identifier) >> number_literal)) ;) (if_statement "if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }" if (parenthesized_expression "((uint)((int)pwVar2 - (int)pwVar7) <= uVar21)" ( (binary_expression "(uint)((int)pwVar2 - (int)pwVar7) <= uVar21" (call_expression "(uint)((int)pwVar2 - (int)pwVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pwVar2 - (int)pwVar7)" ( (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }" { (expression_statement "uVar21 = (int)pwVar2 - (int)pwVar7;" (assignment_expression "uVar21 = (int)pwVar2 - (int)pwVar7" identifier = (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);" (call_expression "_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2)" identifier (argument_list "(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2)" ( identifier , (cast_expression "(uint)pwVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "param_5 - (int)param_4 >> 2" (binary_expression "param_5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4)" identifier = (cast_expression "(wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_alize_xindex_004323b4 + -0x25a4)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x25a4" identifier + number_literal) )))) ;) (expression_statement "puVar8 = PTR_DAT_0043226c + 0x72f0;" (assignment_expression "puVar8 = PTR_DAT_0043226c + 0x72f0" identifier = (binary_expression "PTR_DAT_0043226c + 0x72f0" identifier + number_literal)) ;) (expression_statement "puVar14 = PTR___throw_out_of_range_fmt_00432fe8;" (assignment_expression "puVar14 = PTR___throw_out_of_range_fmt_00432fe8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___throw_out_of_range_fmt_00432fe8)();" (call_expression "(*(code *)PTR___throw_out_of_range_fmt_00432fe8)()" (parenthesized_expression "(*(code *)PTR___throw_out_of_range_fmt_00432fe8)" ( (pointer_expression "*(code *)PTR___throw_out_of_range_fmt_00432fe8" * (cast_expression "(code *)PTR___throw_out_of_range_fmt_00432fe8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pwVar1 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar1 = *(wchar_t **)(pwVar6 + 4)" identifier = (pointer_expression "*(wchar_t **)(pwVar6 + 4)" * (cast_expression "(wchar_t **)(pwVar6 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 - *(int *)pwVar6 >> 2)" ( (binary_expression "(int)puVar8 - *(int *)pwVar6 >> 2" (binary_expression "(int)puVar8 - *(int *)pwVar6" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }" if (parenthesized_expression "(pwVar9 <= pwVar1)" ( (binary_expression "pwVar9 <= pwVar1" identifier <= identifier) )) (compound_statement "{\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }" { (expression_statement "uVar12 = (int)pwVar7 - (int)puVar8 >> 2;" (assignment_expression "uVar12 = (int)pwVar7 - (int)puVar8 >> 2" identifier = (binary_expression "(int)pwVar7 - (int)puVar8 >> 2" (binary_expression "(int)pwVar7 - (int)puVar8" (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }" if (parenthesized_expression "((uint)((int)pwVar1 - (int)pwVar9) <= uVar12)" ( (binary_expression "(uint)((int)pwVar1 - (int)pwVar9) <= uVar12" (call_expression "(uint)((int)pwVar1 - (int)pwVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pwVar1 - (int)pwVar9)" ( (binary_expression "(int)pwVar1 - (int)pwVar9" (cast_expression "(int)pwVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }" { (expression_statement "uVar12 = (int)pwVar1 - (int)pwVar9;" (assignment_expression "uVar12 = (int)pwVar1 - (int)pwVar9" identifier = (binary_expression "(int)pwVar1 - (int)pwVar9" (cast_expression "(int)pwVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar9" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);" (call_expression "_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21)" identifier (argument_list "(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21)" ( identifier , (cast_expression "(uint)pwVar9" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , identifier ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar15 = *(code **)(puVar14 + 0x175e7c);" (assignment_expression "pcVar15 = *(code **)(puVar14 + 0x175e7c)" identifier = (pointer_expression "*(code **)(puVar14 + 0x175e7c)" * (cast_expression "(code **)(puVar14 + 0x175e7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x175e7c)" ( (binary_expression "puVar14 + 0x175e7c" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar14 + 0x175248) + -0x25a4)" ( (binary_expression "*(int *)(puVar14 + 0x175248) + -0x25a4" (pointer_expression "*(int *)(puVar14 + 0x175248)" * (cast_expression "(int *)(puVar14 + 0x175248)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x175248)" ( (binary_expression "puVar14 + 0x175248" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0" identifier = (binary_expression "*(int *)(puVar14 + 0x175100) + 0x72f0" (pointer_expression "*(int *)(puVar14 + 0x175100)" * (cast_expression "(int *)(puVar14 + 0x175100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x175100)" ( (binary_expression "puVar14 + 0x175100" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);" (assignment_expression "uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1)" identifier = (call_expression "(**(code **)(pcVar15 + 0x17968c))(pwVar1)" (parenthesized_expression "(**(code **)(pcVar15 + 0x17968c))" ( (pointer_expression "**(code **)(pcVar15 + 0x17968c)" * (pointer_expression "*(code **)(pcVar15 + 0x17968c)" * (cast_expression "(code **)(pcVar15 + 0x17968c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x17968c)" ( (binary_expression "pcVar15 + 0x17968c" identifier + number_literal) ))))) )) (argument_list "(pwVar1)" ( identifier )))) ;) (expression_statement "pwVar7 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar7 = *(wchar_t **)(pwVar6 + 4)" identifier = (pointer_expression "*(wchar_t **)(pwVar6 + 4)" * (cast_expression "(wchar_t **)(pwVar6 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" ( (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" identifier - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }" if (parenthesized_expression "(pwVar2 <= pwVar7)" ( (binary_expression "pwVar2 <= pwVar7" identifier <= identifier) )) (compound_statement "{\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }" { (expression_statement "uVar3 = (int)pwVar9 - iVar10 >> 2;" (assignment_expression "uVar3 = (int)pwVar9 - iVar10 >> 2" identifier = (binary_expression "(int)pwVar9 - iVar10 >> 2" (binary_expression "(int)pwVar9 - iVar10" (cast_expression "(int)pwVar9" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) >> number_literal)) ;) (expression_statement "uVar12 = (int)pwVar7 - (int)pwVar2;" (assignment_expression "uVar12 = (int)pwVar7 - (int)pwVar2" identifier = (binary_expression "(int)pwVar7 - (int)pwVar2" (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }" if (parenthesized_expression "(uVar3 < (uint)((int)pwVar7 - (int)pwVar2))" ( (binary_expression "uVar3 < (uint)((int)pwVar7 - (int)pwVar2)" identifier < (call_expression "(uint)((int)pwVar7 - (int)pwVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pwVar7 - (int)pwVar2)" ( (binary_expression "(int)pwVar7 - (int)pwVar2" (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n      uVar12 = uVar3;\n    }" { (expression_statement "uVar12 = uVar3;" (assignment_expression "uVar12 = uVar3" identifier = identifier) ;) })) (labeled_statement "std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);" (call_expression "_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21)" identifier (argument_list "(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21)" ( identifier , (cast_expression "(uint)pwVar2" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , identifier ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar16 = *(code **)(pcVar15 + 0x175e04);" (assignment_expression "pcVar16 = *(code **)(pcVar15 + 0x175e04)" identifier = (pointer_expression "*(code **)(pcVar15 + 0x175e04)" * (cast_expression "(code **)(pcVar15 + 0x175e04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x175e04)" ( (binary_expression "pcVar15 + 0x175e04" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar15 + 0x1751d0) + -0x25a4)" ( (binary_expression "*(int *)(pcVar15 + 0x1751d0) + -0x25a4" (pointer_expression "*(int *)(pcVar15 + 0x1751d0)" * (cast_expression "(int *)(pcVar15 + 0x1751d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x1751d0)" ( (binary_expression "pcVar15 + 0x1751d0" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0" identifier = (binary_expression "*(int *)(pcVar15 + 0x175088) + 0x72f0" (pointer_expression "*(int *)(pcVar15 + 0x175088)" * (cast_expression "(int *)(pcVar15 + 0x175088)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x175088)" ( (binary_expression "pcVar15 + 0x175088" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar16)();" (call_expression "(*pcVar16)()" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pwVar1 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar1 = *(wchar_t **)(pwVar6 + 4)" identifier = (pointer_expression "*(wchar_t **)(pwVar6 + 4)" * (cast_expression "(wchar_t **)(pwVar6 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" ( (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" identifier - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }" if (parenthesized_expression "(pwVar1 < pwVar9)" ( (binary_expression "pwVar1 < pwVar9" identifier < identifier) )) (compound_statement "{\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }" { (expression_statement "pcVar15 = *(code **)(pcVar16 + 0x175d40);" (assignment_expression "pcVar15 = *(code **)(pcVar16 + 0x175d40)" identifier = (pointer_expression "*(code **)(pcVar16 + 0x175d40)" * (cast_expression "(code **)(pcVar16 + 0x175d40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar16 + 0x175d40)" ( (binary_expression "pcVar16 + 0x175d40" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar16 + 0x17510c) + -0x25a4)" ( (binary_expression "*(int *)(pcVar16 + 0x17510c) + -0x25a4" (pointer_expression "*(int *)(pcVar16 + 0x17510c)" * (cast_expression "(int *)(pcVar16 + 0x17510c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar16 + 0x17510c)" ( (binary_expression "pcVar16 + 0x17510c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0" identifier = (binary_expression "*(int *)(pcVar16 + 0x174fc4) + 0x72f0" (pointer_expression "*(int *)(pcVar16 + 0x174fc4)" * (cast_expression "(int *)(pcVar16 + 0x174fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar16 + 0x174fc4)" ( (binary_expression "pcVar16 + 0x174fc4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar16 = pcVar15 + 0x17ceac;" (assignment_expression "pcVar16 = pcVar15 + 0x17ceac" identifier = (binary_expression "pcVar15 + 0x17ceac" identifier + number_literal)) ;) (expression_statement "pwVar2 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar2 = *(wchar_t **)(pwVar6 + 4)" identifier = (pointer_expression "*(wchar_t **)(pwVar6 + 4)" * (cast_expression "(wchar_t **)(pwVar6 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" ( (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" identifier - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }" if (parenthesized_expression "(pwVar7 <= pwVar2)" ( (binary_expression "pwVar7 <= pwVar2" identifier <= identifier) )) (compound_statement "{\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }" { (expression_statement "uVar21 = (int)pwVar9 - iVar10 >> 2;" (assignment_expression "uVar21 = (int)pwVar9 - iVar10 >> 2" identifier = (binary_expression "(int)pwVar9 - iVar10 >> 2" (binary_expression "(int)pwVar9 - iVar10" (cast_expression "(int)pwVar9" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) >> number_literal)) ;) (if_statement "if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }" if (parenthesized_expression "((uint)((int)pwVar2 - (int)pwVar7) <= uVar21)" ( (binary_expression "(uint)((int)pwVar2 - (int)pwVar7) <= uVar21" (call_expression "(uint)((int)pwVar2 - (int)pwVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pwVar2 - (int)pwVar7)" ( (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }" { (expression_statement "uVar21 = (int)pwVar2 - (int)pwVar7;" (assignment_expression "uVar21 = (int)pwVar2 - (int)pwVar7" identifier = (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);" (call_expression "_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2)" identifier (argument_list "(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2)" ( identifier , (cast_expression "(uint)pwVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "in_stack_ffffff70 - (int)pwVar1 >> 2" (binary_expression "in_stack_ffffff70 - (int)pwVar1" identifier - (cast_expression "(int)pwVar1" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar17 = *(code **)(pcVar15 + 0x175cc4);" (assignment_expression "pcVar17 = *(code **)(pcVar15 + 0x175cc4)" identifier = (pointer_expression "*(code **)(pcVar15 + 0x175cc4)" * (cast_expression "(code **)(pcVar15 + 0x175cc4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x175cc4)" ( (binary_expression "pcVar15 + 0x175cc4" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar15 + 0x175090) + -0x25a4)" ( (binary_expression "*(int *)(pcVar15 + 0x175090) + -0x25a4" (pointer_expression "*(int *)(pcVar15 + 0x175090)" * (cast_expression "(int *)(pcVar15 + 0x175090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x175090)" ( (binary_expression "pcVar15 + 0x175090" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0" identifier = (binary_expression "*(int *)(pcVar15 + 0x174f48) + 0x72f0" (pointer_expression "*(int *)(pcVar15 + 0x174f48)" * (cast_expression "(int *)(pcVar15 + 0x174f48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x174f48)" ( (binary_expression "pcVar15 + 0x174f48" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar19 = pcVar17 + 0x17ce28;" (assignment_expression "pcVar19 = pcVar17 + 0x17ce28" identifier = (binary_expression "pcVar17 + 0x17ce28" identifier + number_literal)) ;) (expression_statement "pcVar4 = *(code **)(pwVar6 + 4);" (assignment_expression "pcVar4 = *(code **)(pwVar6 + 4)" identifier = (pointer_expression "*(code **)(pwVar6 + 4)" * (cast_expression "(code **)(pwVar6 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(code *)(iVar10 - *(int *)pwVar6 >> 2)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" ( (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" identifier - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }" if (parenthesized_expression "(pcVar4 < pcVar15)" ( (binary_expression "pcVar4 < pcVar15" identifier < identifier) )) (compound_statement "{\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }" { (expression_statement "pcVar18 = *(code **)(pcVar17 + 0x175c40);" (assignment_expression "pcVar18 = *(code **)(pcVar17 + 0x175c40)" identifier = (pointer_expression "*(code **)(pcVar17 + 0x175c40)" * (cast_expression "(code **)(pcVar17 + 0x175c40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x175c40)" ( (binary_expression "pcVar17 + 0x175c40" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar17 + 0x17500c) + -0x25a4)" ( (binary_expression "*(int *)(pcVar17 + 0x17500c) + -0x25a4" (pointer_expression "*(int *)(pcVar17 + 0x17500c)" * (cast_expression "(int *)(pcVar17 + 0x17500c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x17500c)" ( (binary_expression "pcVar17 + 0x17500c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);" (assignment_expression "pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0)" identifier = (cast_expression "(code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar17 + 0x174ec4) + 0x72f0)" ( (binary_expression "*(int *)(pcVar17 + 0x174ec4) + 0x72f0" (pointer_expression "*(int *)(pcVar17 + 0x174ec4)" * (cast_expression "(int *)(pcVar17 + 0x174ec4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x174ec4)" ( (binary_expression "pcVar17 + 0x174ec4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar20 = pcVar18 + 0x17cda4;" (assignment_expression "pcVar20 = pcVar18 + 0x17cda4" identifier = (binary_expression "pcVar18 + 0x17cda4" identifier + number_literal)) ;) (expression_statement "pcVar5 = *(code **)(pcVar4 + 4);" (assignment_expression "pcVar5 = *(code **)(pcVar4 + 4)" identifier = (pointer_expression "*(code **)(pcVar4 + 4)" * (cast_expression "(code **)(pcVar4 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar4 + 4)" ( (binary_expression "pcVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar16 = pcVar19;" (assignment_expression "pcVar16 = pcVar19" identifier = identifier) ;) (expression_statement "pcVar17 = pcVar5;" (assignment_expression "pcVar17 = pcVar5" identifier = identifier) ;) (expression_statement "pcVar13 = (code *)(uint)(pcVar5 < pcVar19);" (assignment_expression "pcVar13 = (code *)(uint)(pcVar5 < pcVar19)" identifier = (cast_expression "(code *)(uint)(pcVar5 < pcVar19)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(pcVar5 < pcVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar5 < pcVar19)" ( (binary_expression "pcVar5 < pcVar19" identifier < identifier) ))))) ;) (if_statement "if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }" if (parenthesized_expression "((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0)" ( (binary_expression "(code *)(uint)(pcVar5 < pcVar19) == (code *)0x0" (cast_expression "(code *)(uint)(pcVar5 < pcVar19)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(pcVar5 < pcVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar5 < pcVar19)" ( (binary_expression "pcVar5 < pcVar19" identifier < identifier) )))) == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }" { (expression_statement "pcVar17 = *(code **)(pwVar6 + 4);" (assignment_expression "pcVar17 = *(code **)(pwVar6 + 4)" identifier = (pointer_expression "*(code **)(pwVar6 + 4)" * (cast_expression "(code **)(pwVar6 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = (int)pcVar5 - (int)pcVar19;" (assignment_expression "uVar21 = (int)pcVar5 - (int)pcVar19" identifier = (binary_expression "(int)pcVar5 - (int)pcVar19" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar19" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }" if (parenthesized_expression "(uStack_cc < (uint)((int)pcVar5 - (int)pcVar19))" ( (binary_expression "uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)" identifier < (call_expression "(uint)((int)pcVar5 - (int)pcVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar5 - (int)pcVar19)" ( (binary_expression "(int)pcVar5 - (int)pcVar19" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n          uVar21 = uStack_cc;\n        }" { (expression_statement "uVar21 = uStack_cc;" (assignment_expression "uVar21 = uStack_cc" identifier = identifier) ;) })) (expression_statement "pcVar16 = pcVar11;" (assignment_expression "pcVar16 = pcVar11" identifier = identifier) ;) (expression_statement "pcVar13 = pcVar17;" (assignment_expression "pcVar13 = pcVar17" identifier = identifier) ;) (if_statement "if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }" if (parenthesized_expression "(pcVar11 <= pcVar17)" ( (binary_expression "pcVar11 <= pcVar17" identifier <= identifier) )) (compound_statement "{\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }" { (if_statement "if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }" if (parenthesized_expression "(pcVar17 + -(int)pcVar11 <= pcVar15)" ( (binary_expression "pcVar17 + -(int)pcVar11 <= pcVar15" (binary_expression "pcVar17 + -(int)pcVar11" identifier + (unary_expression "-(int)pcVar11" - (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier))) <= identifier) )) (compound_statement "{\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }" { (expression_statement "pcVar15 = pcVar17 + -(int)pcVar11;" (assignment_expression "pcVar15 = pcVar17 + -(int)pcVar11" identifier = (binary_expression "pcVar17 + -(int)pcVar11" identifier + (unary_expression "-(int)pcVar11" - (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (labeled_statement "std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);" (call_expression "_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21)" identifier (argument_list "(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21)" ( identifier , (cast_expression "(uint)pcVar11" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(uint)pcVar15" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pcVar4 + (int)pcVar19 * 4)" ( (binary_expression "*(int *)pcVar4 + (int)pcVar19 * 4" (pointer_expression "*(int *)pcVar4" * (cast_expression "(int *)pcVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "(int)pcVar19 * 4" (cast_expression "(int)pcVar19" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))) , identifier ))) ;))) (return_statement "return;" return ;) })) })) (do_statement "do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );" do (compound_statement "{\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      }" { (expression_statement "pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);" (assignment_expression "pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0)" identifier = (cast_expression "(code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar18 + 0x174e40) + 0x72f0)" ( (binary_expression "*(int *)(pcVar18 + 0x174e40) + 0x72f0" (pointer_expression "*(int *)(pcVar18 + 0x174e40)" * (cast_expression "(int *)(pcVar18 + 0x174e40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0x174e40)" ( (binary_expression "pcVar18 + 0x174e40" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);" (call_expression "(**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20)" (parenthesized_expression "(**(code **)(pcVar18 + 0x175bbc))" ( (pointer_expression "**(code **)(pcVar18 + 0x175bbc)" * (pointer_expression "*(code **)(pcVar18 + 0x175bbc)" * (cast_expression "(code **)(pcVar18 + 0x175bbc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x175bbc)" ( (binary_expression "pcVar18 + 0x175bbc" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20)" ( (binary_expression "*(int *)(pcVar18 + 0x174f88) + -0x25a4" (pointer_expression "*(int *)(pcVar18 + 0x174f88)" * (cast_expression "(int *)(pcVar18 + 0x174f88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0x174f88)" ( (binary_expression "pcVar18 + 0x174f88" identifier + number_literal) )))) + number_literal) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "pcVar17 = pcVar13;" (assignment_expression "pcVar17 = pcVar13" identifier = identifier) ;) (expression_statement "pcVar16 = pcVar15;" (assignment_expression "pcVar16 = pcVar15" identifier = identifier) ;) (expression_statement "pcVar13 = pcVar17;" (assignment_expression "pcVar13 = pcVar17" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "uVar21 = (int)pwVar7 - iVar10 >> 2;" (assignment_expression "uVar21 = (int)pwVar7 - iVar10 >> 2" identifier = (binary_expression "(int)pwVar7 - iVar10 >> 2" (binary_expression "(int)pwVar7 - iVar10" (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) >> number_literal)) ;) (if_statement "if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }" if (parenthesized_expression "((uint)((int)pcVar4 - (int)pcVar15) <= uVar21)" ( (binary_expression "(uint)((int)pcVar4 - (int)pcVar15) <= uVar21" (call_expression "(uint)((int)pcVar4 - (int)pcVar15)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar4 - (int)pcVar15)" ( (binary_expression "(int)pcVar4 - (int)pcVar15" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }" { (expression_statement "uVar21 = (int)pcVar4 - (int)pcVar15;" (assignment_expression "uVar21 = (int)pcVar4 - (int)pcVar15" identifier = (binary_expression "(int)pcVar4 - (int)pcVar15" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);" (call_expression "_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2)" identifier (argument_list "(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2)" ( identifier , (cast_expression "(uint)pcVar15" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "(int)pcVar16 - (int)pwVar2 >> 2" (binary_expression "(int)pcVar16 - (int)pwVar2" (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) ;))) (return_statement "return;" return ;) })) (labeled_statement "std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);" (call_expression "_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7)" identifier (argument_list "(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7)" ( identifier , (cast_expression "(uint)pwVar9" ( (type_descriptor "uint" type_identifier) ) identifier) , number_literal , identifier , (cast_expression "(uint)pwVar7" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;))) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* std::wstring::replace(__normal_iterator<wchar_t const*, std::wstring >, __normal_iterator<wchar_t\n   const*, std::wstring >, wchar_t const*, wchar_t const*) */\n\nvoid __thiscall\nstd::wstring::replace(wstring *this,int param_2,int param_3,wchar_t *param_4,int param_5)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  uint uVar3;\n  code *pcVar4;\n  code *pcVar5;\n  wstring *pwVar6;\n  wchar_t *pwVar7;\n  undefined *puVar8;\n  wchar_t *pwVar9;\n  int iVar10;\n  code *pcVar11;\n  uint uVar12;\n  code *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  code *pcVar17;\n  code *pcVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint uStack_cc;\n  int in_stack_ffffff70;\n  uint uVar21;\n  \n  pwVar2 = *(wchar_t **)(this + 4);\n  uVar21 = 0x43a1d0;\n  pwVar7 = (wchar_t *)(param_2 - *(int *)this >> 2);\n  if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    _M_replace(this,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }\n  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);\n  puVar8 = PTR_s__0043226c + 0x72f0;\n  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;\n  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);\n  if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    _M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x175e7c);\n  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);\n  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;\n  (*pcVar15)();\n  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);\n  pwVar7 = *(wchar_t **)(pwVar6 + 4);\n  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    _M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }\n  pcVar16 = *(code **)(pcVar15 + 0x175e04);\n  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);\n  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;\n  (*pcVar16)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      _M_replace(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          _M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    _M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }\n  _M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);\n  return;\n}\n\n" comment comment comment comment comment comment comment (function_definition "void __thiscall\nstd::wstring::replace(wstring *this,int param_2,int param_3,wchar_t *param_4,int param_5)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  uint uVar3;\n  code *pcVar4;\n  code *pcVar5;\n  wstring *pwVar6;\n  wchar_t *pwVar7;\n  undefined *puVar8;\n  wchar_t *pwVar9;\n  int iVar10;\n  code *pcVar11;\n  uint uVar12;\n  code *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  code *pcVar17;\n  code *pcVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint uStack_cc;\n  int in_stack_ffffff70;\n  uint uVar21;\n  \n  pwVar2 = *(wchar_t **)(this + 4);\n  uVar21 = 0x43a1d0;\n  pwVar7 = (wchar_t *)(param_2 - *(int *)this >> 2);\n  if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    _M_replace(this,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }\n  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);\n  puVar8 = PTR_s__0043226c + 0x72f0;\n  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;\n  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);\n  if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    _M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x175e7c);\n  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);\n  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;\n  (*pcVar15)();\n  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);\n  pwVar7 = *(wchar_t **)(pwVar6 + 4);\n  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    _M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }\n  pcVar16 = *(code **)(pcVar15 + 0x175e04);\n  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);\n  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;\n  (*pcVar16)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      _M_replace(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          _M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    _M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }\n  _M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::wstring::" identifier : : identifier : :) (function_declarator "replace(wstring *this,int param_2,int param_3,wchar_t *param_4,int param_5)" identifier (parameter_list "(wstring *this,int param_2,int param_3,wchar_t *param_4,int param_5)" ( (parameter_declaration "wstring *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "wchar_t *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  uint uVar3;\n  code *pcVar4;\n  code *pcVar5;\n  wstring *pwVar6;\n  wchar_t *pwVar7;\n  undefined *puVar8;\n  wchar_t *pwVar9;\n  int iVar10;\n  code *pcVar11;\n  uint uVar12;\n  code *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  code *pcVar17;\n  code *pcVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint uStack_cc;\n  int in_stack_ffffff70;\n  uint uVar21;\n  \n  pwVar2 = *(wchar_t **)(this + 4);\n  uVar21 = 0x43a1d0;\n  pwVar7 = (wchar_t *)(param_2 - *(int *)this >> 2);\n  if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    _M_replace(this,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }\n  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);\n  puVar8 = PTR_s__0043226c + 0x72f0;\n  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;\n  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);\n  if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    _M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x175e7c);\n  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);\n  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;\n  (*pcVar15)();\n  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);\n  pwVar7 = *(wchar_t **)(pwVar6 + 4);\n  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    _M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }\n  pcVar16 = *(code **)(pcVar15 + 0x175e04);\n  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);\n  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;\n  (*pcVar16)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      _M_replace(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          _M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    _M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }\n  _M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);\n  return;\n}" { (declaration "wchar_t *pwVar1;" type_identifier (pointer_declarator "*pwVar1" * identifier) ;) (declaration "wchar_t *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "wstring *pwVar6;" type_identifier (pointer_declarator "*pwVar6" * identifier) ;) (declaration "wchar_t *pwVar7;" type_identifier (pointer_declarator "*pwVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "wchar_t *pwVar9;" type_identifier (pointer_declarator "*pwVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "code *pcVar16;" type_identifier (pointer_declarator "*pcVar16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "code *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "uint uStack_cc;" type_identifier identifier ;) (declaration "int in_stack_ffffff70;" primitive_type identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (expression_statement "pwVar2 = *(wchar_t **)(this + 4);" (assignment_expression "pwVar2 = *(wchar_t **)(this + 4)" identifier = (pointer_expression "*(wchar_t **)(this + 4)" * (cast_expression "(wchar_t **)(this + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = 0x43a1d0;" (assignment_expression "uVar21 = 0x43a1d0" identifier = number_literal) ;) (expression_statement "pwVar7 = (wchar_t *)(param_2 - *(int *)this >> 2);" (assignment_expression "pwVar7 = (wchar_t *)(param_2 - *(int *)this >> 2)" identifier = (cast_expression "(wchar_t *)(param_2 - *(int *)this >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 - *(int *)this >> 2)" ( (binary_expression "param_2 - *(int *)this >> 2" (binary_expression "param_2 - *(int *)this" identifier - (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    _M_replace(this,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }" if (parenthesized_expression "(pwVar7 <= pwVar2)" ( (binary_expression "pwVar7 <= pwVar2" identifier <= identifier) )) (compound_statement "{\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    _M_replace(this,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }" { (expression_statement "uVar21 = param_3 - param_2 >> 2;" (assignment_expression "uVar21 = param_3 - param_2 >> 2" identifier = (binary_expression "param_3 - param_2 >> 2" (binary_expression "param_3 - param_2" identifier - identifier) >> number_literal)) ;) (if_statement "if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }" if (parenthesized_expression "((uint)((int)pwVar2 - (int)pwVar7) <= uVar21)" ( (binary_expression "(uint)((int)pwVar2 - (int)pwVar7) <= uVar21" (call_expression "(uint)((int)pwVar2 - (int)pwVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pwVar2 - (int)pwVar7)" ( (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }" { (expression_statement "uVar21 = (int)pwVar2 - (int)pwVar7;" (assignment_expression "uVar21 = (int)pwVar2 - (int)pwVar7" identifier = (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "_M_replace(this,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);" (call_expression "_M_replace(this,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2)" identifier (argument_list "(this,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2)" ( identifier , (cast_expression "(uint)pwVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "param_5 - (int)param_4 >> 2" (binary_expression "param_5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4)" identifier = (cast_expression "(wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_alize_xindex_004323b4 + -0x25a4)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x25a4" identifier + number_literal) )))) ;) (expression_statement "puVar8 = PTR_s__0043226c + 0x72f0;" (assignment_expression "puVar8 = PTR_s__0043226c + 0x72f0" identifier = (binary_expression "PTR_s__0043226c + 0x72f0" identifier + number_literal)) ;) (expression_statement "puVar14 = PTR___throw_out_of_range_fmt_00432fe8;" (assignment_expression "puVar14 = PTR___throw_out_of_range_fmt_00432fe8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___throw_out_of_range_fmt_00432fe8)();" (call_expression "(*(code *)PTR___throw_out_of_range_fmt_00432fe8)()" (parenthesized_expression "(*(code *)PTR___throw_out_of_range_fmt_00432fe8)" ( (pointer_expression "*(code *)PTR___throw_out_of_range_fmt_00432fe8" * (cast_expression "(code *)PTR___throw_out_of_range_fmt_00432fe8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pwVar1 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar1 = *(wchar_t **)(pwVar6 + 4)" identifier = (pointer_expression "*(wchar_t **)(pwVar6 + 4)" * (cast_expression "(wchar_t **)(pwVar6 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 - *(int *)pwVar6 >> 2)" ( (binary_expression "(int)puVar8 - *(int *)pwVar6 >> 2" (binary_expression "(int)puVar8 - *(int *)pwVar6" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    _M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }" if (parenthesized_expression "(pwVar9 <= pwVar1)" ( (binary_expression "pwVar9 <= pwVar1" identifier <= identifier) )) (compound_statement "{\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    _M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }" { (expression_statement "uVar12 = (int)pwVar7 - (int)puVar8 >> 2;" (assignment_expression "uVar12 = (int)pwVar7 - (int)puVar8 >> 2" identifier = (binary_expression "(int)pwVar7 - (int)puVar8 >> 2" (binary_expression "(int)pwVar7 - (int)puVar8" (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }" if (parenthesized_expression "((uint)((int)pwVar1 - (int)pwVar9) <= uVar12)" ( (binary_expression "(uint)((int)pwVar1 - (int)pwVar9) <= uVar12" (call_expression "(uint)((int)pwVar1 - (int)pwVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pwVar1 - (int)pwVar9)" ( (binary_expression "(int)pwVar1 - (int)pwVar9" (cast_expression "(int)pwVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }" { (expression_statement "uVar12 = (int)pwVar1 - (int)pwVar9;" (assignment_expression "uVar12 = (int)pwVar1 - (int)pwVar9" identifier = (binary_expression "(int)pwVar1 - (int)pwVar9" (cast_expression "(int)pwVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar9" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);" (call_expression "_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21)" identifier (argument_list "(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21)" ( identifier , (cast_expression "(uint)pwVar9" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar15 = *(code **)(puVar14 + 0x175e7c);" (assignment_expression "pcVar15 = *(code **)(puVar14 + 0x175e7c)" identifier = (pointer_expression "*(code **)(puVar14 + 0x175e7c)" * (cast_expression "(code **)(puVar14 + 0x175e7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x175e7c)" ( (binary_expression "puVar14 + 0x175e7c" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar14 + 0x175248) + -0x25a4)" ( (binary_expression "*(int *)(puVar14 + 0x175248) + -0x25a4" (pointer_expression "*(int *)(puVar14 + 0x175248)" * (cast_expression "(int *)(puVar14 + 0x175248)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x175248)" ( (binary_expression "puVar14 + 0x175248" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0" identifier = (binary_expression "*(int *)(puVar14 + 0x175100) + 0x72f0" (pointer_expression "*(int *)(puVar14 + 0x175100)" * (cast_expression "(int *)(puVar14 + 0x175100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x175100)" ( (binary_expression "puVar14 + 0x175100" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);" (assignment_expression "uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1)" identifier = (call_expression "(**(code **)(pcVar15 + 0x17968c))(pwVar1)" (parenthesized_expression "(**(code **)(pcVar15 + 0x17968c))" ( (pointer_expression "**(code **)(pcVar15 + 0x17968c)" * (pointer_expression "*(code **)(pcVar15 + 0x17968c)" * (cast_expression "(code **)(pcVar15 + 0x17968c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x17968c)" ( (binary_expression "pcVar15 + 0x17968c" identifier + number_literal) ))))) )) (argument_list "(pwVar1)" ( identifier )))) ;) (expression_statement "pwVar7 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar7 = *(wchar_t **)(pwVar6 + 4)" identifier = (pointer_expression "*(wchar_t **)(pwVar6 + 4)" * (cast_expression "(wchar_t **)(pwVar6 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" ( (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" identifier - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    _M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }" if (parenthesized_expression "(pwVar2 <= pwVar7)" ( (binary_expression "pwVar2 <= pwVar7" identifier <= identifier) )) (compound_statement "{\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    _M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }" { (expression_statement "uVar3 = (int)pwVar9 - iVar10 >> 2;" (assignment_expression "uVar3 = (int)pwVar9 - iVar10 >> 2" identifier = (binary_expression "(int)pwVar9 - iVar10 >> 2" (binary_expression "(int)pwVar9 - iVar10" (cast_expression "(int)pwVar9" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) >> number_literal)) ;) (expression_statement "uVar12 = (int)pwVar7 - (int)pwVar2;" (assignment_expression "uVar12 = (int)pwVar7 - (int)pwVar2" identifier = (binary_expression "(int)pwVar7 - (int)pwVar2" (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }" if (parenthesized_expression "(uVar3 < (uint)((int)pwVar7 - (int)pwVar2))" ( (binary_expression "uVar3 < (uint)((int)pwVar7 - (int)pwVar2)" identifier < (call_expression "(uint)((int)pwVar7 - (int)pwVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pwVar7 - (int)pwVar2)" ( (binary_expression "(int)pwVar7 - (int)pwVar2" (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n      uVar12 = uVar3;\n    }" { (expression_statement "uVar12 = uVar3;" (assignment_expression "uVar12 = uVar3" identifier = identifier) ;) })) (expression_statement "_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);" (call_expression "_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21)" identifier (argument_list "(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21)" ( identifier , (cast_expression "(uint)pwVar2" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar16 = *(code **)(pcVar15 + 0x175e04);" (assignment_expression "pcVar16 = *(code **)(pcVar15 + 0x175e04)" identifier = (pointer_expression "*(code **)(pcVar15 + 0x175e04)" * (cast_expression "(code **)(pcVar15 + 0x175e04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x175e04)" ( (binary_expression "pcVar15 + 0x175e04" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar15 + 0x1751d0) + -0x25a4)" ( (binary_expression "*(int *)(pcVar15 + 0x1751d0) + -0x25a4" (pointer_expression "*(int *)(pcVar15 + 0x1751d0)" * (cast_expression "(int *)(pcVar15 + 0x1751d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x1751d0)" ( (binary_expression "pcVar15 + 0x1751d0" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0" identifier = (binary_expression "*(int *)(pcVar15 + 0x175088) + 0x72f0" (pointer_expression "*(int *)(pcVar15 + 0x175088)" * (cast_expression "(int *)(pcVar15 + 0x175088)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x175088)" ( (binary_expression "pcVar15 + 0x175088" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar16)();" (call_expression "(*pcVar16)()" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pwVar1 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar1 = *(wchar_t **)(pwVar6 + 4)" identifier = (pointer_expression "*(wchar_t **)(pwVar6 + 4)" * (cast_expression "(wchar_t **)(pwVar6 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" ( (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" identifier - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      _M_replace(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          _M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    _M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }" if (parenthesized_expression "(pwVar1 < pwVar9)" ( (binary_expression "pwVar1 < pwVar9" identifier < identifier) )) (compound_statement "{\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      _M_replace(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          _M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    _M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }" { (expression_statement "pcVar15 = *(code **)(pcVar16 + 0x175d40);" (assignment_expression "pcVar15 = *(code **)(pcVar16 + 0x175d40)" identifier = (pointer_expression "*(code **)(pcVar16 + 0x175d40)" * (cast_expression "(code **)(pcVar16 + 0x175d40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar16 + 0x175d40)" ( (binary_expression "pcVar16 + 0x175d40" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar16 + 0x17510c) + -0x25a4)" ( (binary_expression "*(int *)(pcVar16 + 0x17510c) + -0x25a4" (pointer_expression "*(int *)(pcVar16 + 0x17510c)" * (cast_expression "(int *)(pcVar16 + 0x17510c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar16 + 0x17510c)" ( (binary_expression "pcVar16 + 0x17510c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0" identifier = (binary_expression "*(int *)(pcVar16 + 0x174fc4) + 0x72f0" (pointer_expression "*(int *)(pcVar16 + 0x174fc4)" * (cast_expression "(int *)(pcVar16 + 0x174fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar16 + 0x174fc4)" ( (binary_expression "pcVar16 + 0x174fc4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar16 = pcVar15 + 0x17ceac;" (assignment_expression "pcVar16 = pcVar15 + 0x17ceac" identifier = (binary_expression "pcVar15 + 0x17ceac" identifier + number_literal)) ;) (expression_statement "pwVar2 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar2 = *(wchar_t **)(pwVar6 + 4)" identifier = (pointer_expression "*(wchar_t **)(pwVar6 + 4)" * (cast_expression "(wchar_t **)(pwVar6 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" ( (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" identifier - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      _M_replace(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }" if (parenthesized_expression "(pwVar7 <= pwVar2)" ( (binary_expression "pwVar7 <= pwVar2" identifier <= identifier) )) (compound_statement "{\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      _M_replace(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }" { (expression_statement "uVar21 = (int)pwVar9 - iVar10 >> 2;" (assignment_expression "uVar21 = (int)pwVar9 - iVar10 >> 2" identifier = (binary_expression "(int)pwVar9 - iVar10 >> 2" (binary_expression "(int)pwVar9 - iVar10" (cast_expression "(int)pwVar9" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) >> number_literal)) ;) (if_statement "if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }" if (parenthesized_expression "((uint)((int)pwVar2 - (int)pwVar7) <= uVar21)" ( (binary_expression "(uint)((int)pwVar2 - (int)pwVar7) <= uVar21" (call_expression "(uint)((int)pwVar2 - (int)pwVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pwVar2 - (int)pwVar7)" ( (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }" { (expression_statement "uVar21 = (int)pwVar2 - (int)pwVar7;" (assignment_expression "uVar21 = (int)pwVar2 - (int)pwVar7" identifier = (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "_M_replace(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);" (call_expression "_M_replace(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2)" identifier (argument_list "(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2)" ( identifier , (cast_expression "(uint)pwVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "in_stack_ffffff70 - (int)pwVar1 >> 2" (binary_expression "in_stack_ffffff70 - (int)pwVar1" identifier - (cast_expression "(int)pwVar1" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar17 = *(code **)(pcVar15 + 0x175cc4);" (assignment_expression "pcVar17 = *(code **)(pcVar15 + 0x175cc4)" identifier = (pointer_expression "*(code **)(pcVar15 + 0x175cc4)" * (cast_expression "(code **)(pcVar15 + 0x175cc4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x175cc4)" ( (binary_expression "pcVar15 + 0x175cc4" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar15 + 0x175090) + -0x25a4)" ( (binary_expression "*(int *)(pcVar15 + 0x175090) + -0x25a4" (pointer_expression "*(int *)(pcVar15 + 0x175090)" * (cast_expression "(int *)(pcVar15 + 0x175090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x175090)" ( (binary_expression "pcVar15 + 0x175090" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0" identifier = (binary_expression "*(int *)(pcVar15 + 0x174f48) + 0x72f0" (pointer_expression "*(int *)(pcVar15 + 0x174f48)" * (cast_expression "(int *)(pcVar15 + 0x174f48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x174f48)" ( (binary_expression "pcVar15 + 0x174f48" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar19 = pcVar17 + 0x17ce28;" (assignment_expression "pcVar19 = pcVar17 + 0x17ce28" identifier = (binary_expression "pcVar17 + 0x17ce28" identifier + number_literal)) ;) (expression_statement "pcVar4 = *(code **)(pwVar6 + 4);" (assignment_expression "pcVar4 = *(code **)(pwVar6 + 4)" identifier = (pointer_expression "*(code **)(pwVar6 + 4)" * (cast_expression "(code **)(pwVar6 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(code *)(iVar10 - *(int *)pwVar6 >> 2)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" ( (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" identifier - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          _M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }" if (parenthesized_expression "(pcVar4 < pcVar15)" ( (binary_expression "pcVar4 < pcVar15" identifier < identifier) )) (compound_statement "{\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          _M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }" { (expression_statement "pcVar18 = *(code **)(pcVar17 + 0x175c40);" (assignment_expression "pcVar18 = *(code **)(pcVar17 + 0x175c40)" identifier = (pointer_expression "*(code **)(pcVar17 + 0x175c40)" * (cast_expression "(code **)(pcVar17 + 0x175c40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x175c40)" ( (binary_expression "pcVar17 + 0x175c40" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar17 + 0x17500c) + -0x25a4)" ( (binary_expression "*(int *)(pcVar17 + 0x17500c) + -0x25a4" (pointer_expression "*(int *)(pcVar17 + 0x17500c)" * (cast_expression "(int *)(pcVar17 + 0x17500c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x17500c)" ( (binary_expression "pcVar17 + 0x17500c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);" (assignment_expression "pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0)" identifier = (cast_expression "(code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar17 + 0x174ec4) + 0x72f0)" ( (binary_expression "*(int *)(pcVar17 + 0x174ec4) + 0x72f0" (pointer_expression "*(int *)(pcVar17 + 0x174ec4)" * (cast_expression "(int *)(pcVar17 + 0x174ec4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x174ec4)" ( (binary_expression "pcVar17 + 0x174ec4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar20 = pcVar18 + 0x17cda4;" (assignment_expression "pcVar20 = pcVar18 + 0x17cda4" identifier = (binary_expression "pcVar18 + 0x17cda4" identifier + number_literal)) ;) (expression_statement "pcVar5 = *(code **)(pcVar4 + 4);" (assignment_expression "pcVar5 = *(code **)(pcVar4 + 4)" identifier = (pointer_expression "*(code **)(pcVar4 + 4)" * (cast_expression "(code **)(pcVar4 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar4 + 4)" ( (binary_expression "pcVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar16 = pcVar19;" (assignment_expression "pcVar16 = pcVar19" identifier = identifier) ;) (expression_statement "pcVar17 = pcVar5;" (assignment_expression "pcVar17 = pcVar5" identifier = identifier) ;) (expression_statement "pcVar13 = (code *)(uint)(pcVar5 < pcVar19);" (assignment_expression "pcVar13 = (code *)(uint)(pcVar5 < pcVar19)" identifier = (cast_expression "(code *)(uint)(pcVar5 < pcVar19)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(pcVar5 < pcVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar5 < pcVar19)" ( (binary_expression "pcVar5 < pcVar19" identifier < identifier) ))))) ;) (if_statement "if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          _M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }" if (parenthesized_expression "((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0)" ( (binary_expression "(code *)(uint)(pcVar5 < pcVar19) == (code *)0x0" (cast_expression "(code *)(uint)(pcVar5 < pcVar19)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(pcVar5 < pcVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar5 < pcVar19)" ( (binary_expression "pcVar5 < pcVar19" identifier < identifier) )))) == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          _M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }" { (expression_statement "pcVar17 = *(code **)(pwVar6 + 4);" (assignment_expression "pcVar17 = *(code **)(pwVar6 + 4)" identifier = (pointer_expression "*(code **)(pwVar6 + 4)" * (cast_expression "(code **)(pwVar6 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = (int)pcVar5 - (int)pcVar19;" (assignment_expression "uVar21 = (int)pcVar5 - (int)pcVar19" identifier = (binary_expression "(int)pcVar5 - (int)pcVar19" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar19" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }" if (parenthesized_expression "(uStack_cc < (uint)((int)pcVar5 - (int)pcVar19))" ( (binary_expression "uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)" identifier < (call_expression "(uint)((int)pcVar5 - (int)pcVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar5 - (int)pcVar19)" ( (binary_expression "(int)pcVar5 - (int)pcVar19" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n          uVar21 = uStack_cc;\n        }" { (expression_statement "uVar21 = uStack_cc;" (assignment_expression "uVar21 = uStack_cc" identifier = identifier) ;) })) (expression_statement "pcVar16 = pcVar11;" (assignment_expression "pcVar16 = pcVar11" identifier = identifier) ;) (expression_statement "pcVar13 = pcVar17;" (assignment_expression "pcVar13 = pcVar17" identifier = identifier) ;) (if_statement "if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          _M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }" if (parenthesized_expression "(pcVar11 <= pcVar17)" ( (binary_expression "pcVar11 <= pcVar17" identifier <= identifier) )) (compound_statement "{\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          _M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }" { (if_statement "if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }" if (parenthesized_expression "(pcVar17 + -(int)pcVar11 <= pcVar15)" ( (binary_expression "pcVar17 + -(int)pcVar11 <= pcVar15" (binary_expression "pcVar17 + -(int)pcVar11" identifier + (unary_expression "-(int)pcVar11" - (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier))) <= identifier) )) (compound_statement "{\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }" { (expression_statement "pcVar15 = pcVar17 + -(int)pcVar11;" (assignment_expression "pcVar15 = pcVar17 + -(int)pcVar11" identifier = (binary_expression "pcVar17 + -(int)pcVar11" identifier + (unary_expression "-(int)pcVar11" - (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "_M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);" (call_expression "_M_replace(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21)" identifier (argument_list "(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21)" ( identifier , (cast_expression "(uint)pcVar11" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(uint)pcVar15" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pcVar4 + (int)pcVar19 * 4)" ( (binary_expression "*(int *)pcVar4 + (int)pcVar19 * 4" (pointer_expression "*(int *)pcVar4" * (cast_expression "(int *)pcVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "(int)pcVar19 * 4" (cast_expression "(int)pcVar19" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))) , identifier ))) ;) (return_statement "return;" return ;) })) })) (do_statement "do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );" do (compound_statement "{\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      }" { (expression_statement "pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);" (assignment_expression "pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0)" identifier = (cast_expression "(code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar18 + 0x174e40) + 0x72f0)" ( (binary_expression "*(int *)(pcVar18 + 0x174e40) + 0x72f0" (pointer_expression "*(int *)(pcVar18 + 0x174e40)" * (cast_expression "(int *)(pcVar18 + 0x174e40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0x174e40)" ( (binary_expression "pcVar18 + 0x174e40" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);" (call_expression "(**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20)" (parenthesized_expression "(**(code **)(pcVar18 + 0x175bbc))" ( (pointer_expression "**(code **)(pcVar18 + 0x175bbc)" * (pointer_expression "*(code **)(pcVar18 + 0x175bbc)" * (cast_expression "(code **)(pcVar18 + 0x175bbc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x175bbc)" ( (binary_expression "pcVar18 + 0x175bbc" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20)" ( (binary_expression "*(int *)(pcVar18 + 0x174f88) + -0x25a4" (pointer_expression "*(int *)(pcVar18 + 0x174f88)" * (cast_expression "(int *)(pcVar18 + 0x174f88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0x174f88)" ( (binary_expression "pcVar18 + 0x174f88" identifier + number_literal) )))) + number_literal) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "pcVar17 = pcVar13;" (assignment_expression "pcVar17 = pcVar13" identifier = identifier) ;) (expression_statement "pcVar16 = pcVar15;" (assignment_expression "pcVar16 = pcVar15" identifier = identifier) ;) (expression_statement "pcVar13 = pcVar17;" (assignment_expression "pcVar13 = pcVar17" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "uVar21 = (int)pwVar7 - iVar10 >> 2;" (assignment_expression "uVar21 = (int)pwVar7 - iVar10 >> 2" identifier = (binary_expression "(int)pwVar7 - iVar10 >> 2" (binary_expression "(int)pwVar7 - iVar10" (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) >> number_literal)) ;) (if_statement "if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }" if (parenthesized_expression "((uint)((int)pcVar4 - (int)pcVar15) <= uVar21)" ( (binary_expression "(uint)((int)pcVar4 - (int)pcVar15) <= uVar21" (call_expression "(uint)((int)pcVar4 - (int)pcVar15)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar4 - (int)pcVar15)" ( (binary_expression "(int)pcVar4 - (int)pcVar15" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }" { (expression_statement "uVar21 = (int)pcVar4 - (int)pcVar15;" (assignment_expression "uVar21 = (int)pcVar4 - (int)pcVar15" identifier = (binary_expression "(int)pcVar4 - (int)pcVar15" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);" (call_expression "_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2)" identifier (argument_list "(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2)" ( identifier , (cast_expression "(uint)pcVar15" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "(int)pcVar16 - (int)pwVar2 >> 2" (binary_expression "(int)pcVar16 - (int)pwVar2" (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);" (call_expression "_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7)" identifier (argument_list "(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7)" ( identifier , (cast_expression "(uint)pwVar9" ( (type_descriptor "uint" type_identifier) ) identifier) , number_literal , identifier , (cast_expression "(uint)pwVar7" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002bd0e8(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  uint uVar3;\n  code *pcVar4;\n  code *pcVar5;\n  wstring *pwVar6;\n  wchar_t *pwVar7;\n  undefined *puVar8;\n  wchar_t *pwVar9;\n  int iVar10;\n  code *pcVar11;\n  uint uVar12;\n  code *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  code *pcVar17;\n  code *pcVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint uStack_cc;\n  int in_stack_ffffff70;\n  uint uVar21;\n  \n  pwVar2 = *(wchar_t **)(param_1 + 4);\n  uVar21 = 0x43a1d0;\n  pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);\n  if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }\n  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);\n  puVar8 = PTR_DAT_0043226c + 0x72f0;\n  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;\n  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);\n  if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x175e7c);\n  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);\n  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;\n  (*pcVar15)();\n  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);\n  pwVar7 = *(wchar_t **)(pwVar6 + 4);\n  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }\n  pcVar16 = *(code **)(pcVar15 + 0x175e04);\n  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);\n  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;\n  (*pcVar16)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }\n  std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);\n  return;\n}\n\n" (function_definition "void FUN_002bd0e8(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  uint uVar3;\n  code *pcVar4;\n  code *pcVar5;\n  wstring *pwVar6;\n  wchar_t *pwVar7;\n  undefined *puVar8;\n  wchar_t *pwVar9;\n  int iVar10;\n  code *pcVar11;\n  uint uVar12;\n  code *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  code *pcVar17;\n  code *pcVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint uStack_cc;\n  int in_stack_ffffff70;\n  uint uVar21;\n  \n  pwVar2 = *(wchar_t **)(param_1 + 4);\n  uVar21 = 0x43a1d0;\n  pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);\n  if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }\n  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);\n  puVar8 = PTR_DAT_0043226c + 0x72f0;\n  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;\n  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);\n  if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x175e7c);\n  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);\n  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;\n  (*pcVar15)();\n  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);\n  pwVar7 = *(wchar_t **)(pwVar6 + 4);\n  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }\n  pcVar16 = *(code **)(pcVar15 + 0x175e04);\n  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);\n  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;\n  (*pcVar16)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }\n  std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);\n  return;\n}" primitive_type (function_declarator "FUN_002bd0e8(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)" identifier (parameter_list "(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)" ( (parameter_declaration "wstring *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "wchar_t *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  uint uVar3;\n  code *pcVar4;\n  code *pcVar5;\n  wstring *pwVar6;\n  wchar_t *pwVar7;\n  undefined *puVar8;\n  wchar_t *pwVar9;\n  int iVar10;\n  code *pcVar11;\n  uint uVar12;\n  code *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  code *pcVar17;\n  code *pcVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint uStack_cc;\n  int in_stack_ffffff70;\n  uint uVar21;\n  \n  pwVar2 = *(wchar_t **)(param_1 + 4);\n  uVar21 = 0x43a1d0;\n  pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);\n  if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }\n  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);\n  puVar8 = PTR_DAT_0043226c + 0x72f0;\n  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;\n  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);\n  if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x175e7c);\n  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);\n  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;\n  (*pcVar15)();\n  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);\n  pwVar7 = *(wchar_t **)(pwVar6 + 4);\n  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }\n  pcVar16 = *(code **)(pcVar15 + 0x175e04);\n  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);\n  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;\n  (*pcVar16)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }\n  std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);\n  return;\n}" { (declaration "wchar_t *pwVar1;" type_identifier (pointer_declarator "*pwVar1" * identifier) ;) (declaration "wchar_t *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "wstring *pwVar6;" type_identifier (pointer_declarator "*pwVar6" * identifier) ;) (declaration "wchar_t *pwVar7;" type_identifier (pointer_declarator "*pwVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "wchar_t *pwVar9;" type_identifier (pointer_declarator "*pwVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "code *pcVar16;" type_identifier (pointer_declarator "*pcVar16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "code *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "uint uStack_cc;" type_identifier identifier ;) (declaration "int in_stack_ffffff70;" primitive_type identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (expression_statement "pwVar2 = *(wchar_t **)(param_1 + 4);" (assignment_expression "pwVar2 = *(wchar_t **)(param_1 + 4)" identifier = (pointer_expression "*(wchar_t **)(param_1 + 4)" * (cast_expression "(wchar_t **)(param_1 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = 0x43a1d0;" (assignment_expression "uVar21 = 0x43a1d0" identifier = number_literal) ;) (expression_statement "pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);" (assignment_expression "pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2)" identifier = (cast_expression "(wchar_t *)(param_2 - *(int *)param_1 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 - *(int *)param_1 >> 2)" ( (binary_expression "param_2 - *(int *)param_1 >> 2" (binary_expression "param_2 - *(int *)param_1" identifier - (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }" if (parenthesized_expression "(pwVar7 <= pwVar2)" ( (binary_expression "pwVar7 <= pwVar2" identifier <= identifier) )) (compound_statement "{\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }" { (expression_statement "uVar21 = param_3 - param_2 >> 2;" (assignment_expression "uVar21 = param_3 - param_2 >> 2" identifier = (binary_expression "param_3 - param_2 >> 2" (binary_expression "param_3 - param_2" identifier - identifier) >> number_literal)) ;) (if_statement "if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }" if (parenthesized_expression "((uint)((int)pwVar2 - (int)pwVar7) <= uVar21)" ( (binary_expression "(uint)((int)pwVar2 - (int)pwVar7) <= uVar21" (call_expression "(uint)((int)pwVar2 - (int)pwVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pwVar2 - (int)pwVar7)" ( (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }" { (expression_statement "uVar21 = (int)pwVar2 - (int)pwVar7;" (assignment_expression "uVar21 = (int)pwVar2 - (int)pwVar7" identifier = (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);" (call_expression "_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2)" identifier (argument_list "(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2)" ( identifier , (cast_expression "(uint)pwVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "param_5 - (int)param_4 >> 2" (binary_expression "param_5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4)" identifier = (cast_expression "(wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_alize_xindex_004323b4 + -0x25a4)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x25a4" identifier + number_literal) )))) ;) (expression_statement "puVar8 = PTR_DAT_0043226c + 0x72f0;" (assignment_expression "puVar8 = PTR_DAT_0043226c + 0x72f0" identifier = (binary_expression "PTR_DAT_0043226c + 0x72f0" identifier + number_literal)) ;) (expression_statement "puVar14 = PTR___throw_out_of_range_fmt_00432fe8;" (assignment_expression "puVar14 = PTR___throw_out_of_range_fmt_00432fe8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___throw_out_of_range_fmt_00432fe8)();" (call_expression "(*(code *)PTR___throw_out_of_range_fmt_00432fe8)()" (parenthesized_expression "(*(code *)PTR___throw_out_of_range_fmt_00432fe8)" ( (pointer_expression "*(code *)PTR___throw_out_of_range_fmt_00432fe8" * (cast_expression "(code *)PTR___throw_out_of_range_fmt_00432fe8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pwVar1 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar1 = *(wchar_t **)(pwVar6 + 4)" identifier = (pointer_expression "*(wchar_t **)(pwVar6 + 4)" * (cast_expression "(wchar_t **)(pwVar6 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 - *(int *)pwVar6 >> 2)" ( (binary_expression "(int)puVar8 - *(int *)pwVar6 >> 2" (binary_expression "(int)puVar8 - *(int *)pwVar6" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }" if (parenthesized_expression "(pwVar9 <= pwVar1)" ( (binary_expression "pwVar9 <= pwVar1" identifier <= identifier) )) (compound_statement "{\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }" { (expression_statement "uVar12 = (int)pwVar7 - (int)puVar8 >> 2;" (assignment_expression "uVar12 = (int)pwVar7 - (int)puVar8 >> 2" identifier = (binary_expression "(int)pwVar7 - (int)puVar8 >> 2" (binary_expression "(int)pwVar7 - (int)puVar8" (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }" if (parenthesized_expression "((uint)((int)pwVar1 - (int)pwVar9) <= uVar12)" ( (binary_expression "(uint)((int)pwVar1 - (int)pwVar9) <= uVar12" (call_expression "(uint)((int)pwVar1 - (int)pwVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pwVar1 - (int)pwVar9)" ( (binary_expression "(int)pwVar1 - (int)pwVar9" (cast_expression "(int)pwVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }" { (expression_statement "uVar12 = (int)pwVar1 - (int)pwVar9;" (assignment_expression "uVar12 = (int)pwVar1 - (int)pwVar9" identifier = (binary_expression "(int)pwVar1 - (int)pwVar9" (cast_expression "(int)pwVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar9" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);" (call_expression "_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21)" identifier (argument_list "(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21)" ( identifier , (cast_expression "(uint)pwVar9" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , identifier ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar15 = *(code **)(puVar14 + 0x175e7c);" (assignment_expression "pcVar15 = *(code **)(puVar14 + 0x175e7c)" identifier = (pointer_expression "*(code **)(puVar14 + 0x175e7c)" * (cast_expression "(code **)(puVar14 + 0x175e7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0x175e7c)" ( (binary_expression "puVar14 + 0x175e7c" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar14 + 0x175248) + -0x25a4)" ( (binary_expression "*(int *)(puVar14 + 0x175248) + -0x25a4" (pointer_expression "*(int *)(puVar14 + 0x175248)" * (cast_expression "(int *)(puVar14 + 0x175248)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x175248)" ( (binary_expression "puVar14 + 0x175248" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0" identifier = (binary_expression "*(int *)(puVar14 + 0x175100) + 0x72f0" (pointer_expression "*(int *)(puVar14 + 0x175100)" * (cast_expression "(int *)(puVar14 + 0x175100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0x175100)" ( (binary_expression "puVar14 + 0x175100" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);" (assignment_expression "uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1)" identifier = (call_expression "(**(code **)(pcVar15 + 0x17968c))(pwVar1)" (parenthesized_expression "(**(code **)(pcVar15 + 0x17968c))" ( (pointer_expression "**(code **)(pcVar15 + 0x17968c)" * (pointer_expression "*(code **)(pcVar15 + 0x17968c)" * (cast_expression "(code **)(pcVar15 + 0x17968c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x17968c)" ( (binary_expression "pcVar15 + 0x17968c" identifier + number_literal) ))))) )) (argument_list "(pwVar1)" ( identifier )))) ;) (expression_statement "pwVar7 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar7 = *(wchar_t **)(pwVar6 + 4)" identifier = (pointer_expression "*(wchar_t **)(pwVar6 + 4)" * (cast_expression "(wchar_t **)(pwVar6 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" ( (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" identifier - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }" if (parenthesized_expression "(pwVar2 <= pwVar7)" ( (binary_expression "pwVar2 <= pwVar7" identifier <= identifier) )) (compound_statement "{\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }" { (expression_statement "uVar3 = (int)pwVar9 - iVar10 >> 2;" (assignment_expression "uVar3 = (int)pwVar9 - iVar10 >> 2" identifier = (binary_expression "(int)pwVar9 - iVar10 >> 2" (binary_expression "(int)pwVar9 - iVar10" (cast_expression "(int)pwVar9" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) >> number_literal)) ;) (expression_statement "uVar12 = (int)pwVar7 - (int)pwVar2;" (assignment_expression "uVar12 = (int)pwVar7 - (int)pwVar2" identifier = (binary_expression "(int)pwVar7 - (int)pwVar2" (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }" if (parenthesized_expression "(uVar3 < (uint)((int)pwVar7 - (int)pwVar2))" ( (binary_expression "uVar3 < (uint)((int)pwVar7 - (int)pwVar2)" identifier < (call_expression "(uint)((int)pwVar7 - (int)pwVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pwVar7 - (int)pwVar2)" ( (binary_expression "(int)pwVar7 - (int)pwVar2" (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n      uVar12 = uVar3;\n    }" { (expression_statement "uVar12 = uVar3;" (assignment_expression "uVar12 = uVar3" identifier = identifier) ;) })) (labeled_statement "std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);" (call_expression "_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21)" identifier (argument_list "(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21)" ( identifier , (cast_expression "(uint)pwVar2" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , identifier ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar16 = *(code **)(pcVar15 + 0x175e04);" (assignment_expression "pcVar16 = *(code **)(pcVar15 + 0x175e04)" identifier = (pointer_expression "*(code **)(pcVar15 + 0x175e04)" * (cast_expression "(code **)(pcVar15 + 0x175e04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x175e04)" ( (binary_expression "pcVar15 + 0x175e04" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar15 + 0x1751d0) + -0x25a4)" ( (binary_expression "*(int *)(pcVar15 + 0x1751d0) + -0x25a4" (pointer_expression "*(int *)(pcVar15 + 0x1751d0)" * (cast_expression "(int *)(pcVar15 + 0x1751d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x1751d0)" ( (binary_expression "pcVar15 + 0x1751d0" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0" identifier = (binary_expression "*(int *)(pcVar15 + 0x175088) + 0x72f0" (pointer_expression "*(int *)(pcVar15 + 0x175088)" * (cast_expression "(int *)(pcVar15 + 0x175088)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x175088)" ( (binary_expression "pcVar15 + 0x175088" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar16)();" (call_expression "(*pcVar16)()" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pwVar1 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar1 = *(wchar_t **)(pwVar6 + 4)" identifier = (pointer_expression "*(wchar_t **)(pwVar6 + 4)" * (cast_expression "(wchar_t **)(pwVar6 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" ( (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" identifier - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }" if (parenthesized_expression "(pwVar1 < pwVar9)" ( (binary_expression "pwVar1 < pwVar9" identifier < identifier) )) (compound_statement "{\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }" { (expression_statement "pcVar15 = *(code **)(pcVar16 + 0x175d40);" (assignment_expression "pcVar15 = *(code **)(pcVar16 + 0x175d40)" identifier = (pointer_expression "*(code **)(pcVar16 + 0x175d40)" * (cast_expression "(code **)(pcVar16 + 0x175d40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar16 + 0x175d40)" ( (binary_expression "pcVar16 + 0x175d40" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar16 + 0x17510c) + -0x25a4)" ( (binary_expression "*(int *)(pcVar16 + 0x17510c) + -0x25a4" (pointer_expression "*(int *)(pcVar16 + 0x17510c)" * (cast_expression "(int *)(pcVar16 + 0x17510c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar16 + 0x17510c)" ( (binary_expression "pcVar16 + 0x17510c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0" identifier = (binary_expression "*(int *)(pcVar16 + 0x174fc4) + 0x72f0" (pointer_expression "*(int *)(pcVar16 + 0x174fc4)" * (cast_expression "(int *)(pcVar16 + 0x174fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar16 + 0x174fc4)" ( (binary_expression "pcVar16 + 0x174fc4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar16 = pcVar15 + 0x17ceac;" (assignment_expression "pcVar16 = pcVar15 + 0x17ceac" identifier = (binary_expression "pcVar15 + 0x17ceac" identifier + number_literal)) ;) (expression_statement "pwVar2 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar2 = *(wchar_t **)(pwVar6 + 4)" identifier = (pointer_expression "*(wchar_t **)(pwVar6 + 4)" * (cast_expression "(wchar_t **)(pwVar6 + 4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" ( (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" identifier - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }" if (parenthesized_expression "(pwVar7 <= pwVar2)" ( (binary_expression "pwVar7 <= pwVar2" identifier <= identifier) )) (compound_statement "{\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }" { (expression_statement "uVar21 = (int)pwVar9 - iVar10 >> 2;" (assignment_expression "uVar21 = (int)pwVar9 - iVar10 >> 2" identifier = (binary_expression "(int)pwVar9 - iVar10 >> 2" (binary_expression "(int)pwVar9 - iVar10" (cast_expression "(int)pwVar9" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) >> number_literal)) ;) (if_statement "if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }" if (parenthesized_expression "((uint)((int)pwVar2 - (int)pwVar7) <= uVar21)" ( (binary_expression "(uint)((int)pwVar2 - (int)pwVar7) <= uVar21" (call_expression "(uint)((int)pwVar2 - (int)pwVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pwVar2 - (int)pwVar7)" ( (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }" { (expression_statement "uVar21 = (int)pwVar2 - (int)pwVar7;" (assignment_expression "uVar21 = (int)pwVar2 - (int)pwVar7" identifier = (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);" (call_expression "_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2)" identifier (argument_list "(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2)" ( identifier , (cast_expression "(uint)pwVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "in_stack_ffffff70 - (int)pwVar1 >> 2" (binary_expression "in_stack_ffffff70 - (int)pwVar1" identifier - (cast_expression "(int)pwVar1" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar17 = *(code **)(pcVar15 + 0x175cc4);" (assignment_expression "pcVar17 = *(code **)(pcVar15 + 0x175cc4)" identifier = (pointer_expression "*(code **)(pcVar15 + 0x175cc4)" * (cast_expression "(code **)(pcVar15 + 0x175cc4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar15 + 0x175cc4)" ( (binary_expression "pcVar15 + 0x175cc4" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar15 + 0x175090) + -0x25a4)" ( (binary_expression "*(int *)(pcVar15 + 0x175090) + -0x25a4" (pointer_expression "*(int *)(pcVar15 + 0x175090)" * (cast_expression "(int *)(pcVar15 + 0x175090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x175090)" ( (binary_expression "pcVar15 + 0x175090" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0" identifier = (binary_expression "*(int *)(pcVar15 + 0x174f48) + 0x72f0" (pointer_expression "*(int *)(pcVar15 + 0x174f48)" * (cast_expression "(int *)(pcVar15 + 0x174f48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + 0x174f48)" ( (binary_expression "pcVar15 + 0x174f48" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar19 = pcVar17 + 0x17ce28;" (assignment_expression "pcVar19 = pcVar17 + 0x17ce28" identifier = (binary_expression "pcVar17 + 0x17ce28" identifier + number_literal)) ;) (expression_statement "pcVar4 = *(code **)(pwVar6 + 4);" (assignment_expression "pcVar4 = *(code **)(pwVar6 + 4)" identifier = (pointer_expression "*(code **)(pwVar6 + 4)" * (cast_expression "(code **)(pwVar6 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2)" identifier = (cast_expression "(code *)(iVar10 - *(int *)pwVar6 >> 2)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" ( (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" identifier - (pointer_expression "*(int *)pwVar6" * (cast_expression "(int *)pwVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) >> number_literal) )))) ;) (if_statement "if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }" if (parenthesized_expression "(pcVar4 < pcVar15)" ( (binary_expression "pcVar4 < pcVar15" identifier < identifier) )) (compound_statement "{\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }" { (expression_statement "pcVar18 = *(code **)(pcVar17 + 0x175c40);" (assignment_expression "pcVar18 = *(code **)(pcVar17 + 0x175c40)" identifier = (pointer_expression "*(code **)(pcVar17 + 0x175c40)" * (cast_expression "(code **)(pcVar17 + 0x175c40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x175c40)" ( (binary_expression "pcVar17 + 0x175c40" identifier + number_literal) ))))) ;) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4)" identifier = (cast_expression "(wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4)" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar17 + 0x17500c) + -0x25a4)" ( (binary_expression "*(int *)(pcVar17 + 0x17500c) + -0x25a4" (pointer_expression "*(int *)(pcVar17 + 0x17500c)" * (cast_expression "(int *)(pcVar17 + 0x17500c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x17500c)" ( (binary_expression "pcVar17 + 0x17500c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);" (assignment_expression "pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0)" identifier = (cast_expression "(code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar17 + 0x174ec4) + 0x72f0)" ( (binary_expression "*(int *)(pcVar17 + 0x174ec4) + 0x72f0" (pointer_expression "*(int *)(pcVar17 + 0x174ec4)" * (cast_expression "(int *)(pcVar17 + 0x174ec4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x174ec4)" ( (binary_expression "pcVar17 + 0x174ec4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar20 = pcVar18 + 0x17cda4;" (assignment_expression "pcVar20 = pcVar18 + 0x17cda4" identifier = (binary_expression "pcVar18 + 0x17cda4" identifier + number_literal)) ;) (expression_statement "pcVar5 = *(code **)(pcVar4 + 4);" (assignment_expression "pcVar5 = *(code **)(pcVar4 + 4)" identifier = (pointer_expression "*(code **)(pcVar4 + 4)" * (cast_expression "(code **)(pcVar4 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar4 + 4)" ( (binary_expression "pcVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar16 = pcVar19;" (assignment_expression "pcVar16 = pcVar19" identifier = identifier) ;) (expression_statement "pcVar17 = pcVar5;" (assignment_expression "pcVar17 = pcVar5" identifier = identifier) ;) (expression_statement "pcVar13 = (code *)(uint)(pcVar5 < pcVar19);" (assignment_expression "pcVar13 = (code *)(uint)(pcVar5 < pcVar19)" identifier = (cast_expression "(code *)(uint)(pcVar5 < pcVar19)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(pcVar5 < pcVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar5 < pcVar19)" ( (binary_expression "pcVar5 < pcVar19" identifier < identifier) ))))) ;) (if_statement "if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }" if (parenthesized_expression "((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0)" ( (binary_expression "(code *)(uint)(pcVar5 < pcVar19) == (code *)0x0" (cast_expression "(code *)(uint)(pcVar5 < pcVar19)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(pcVar5 < pcVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar5 < pcVar19)" ( (binary_expression "pcVar5 < pcVar19" identifier < identifier) )))) == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }" { (expression_statement "pcVar17 = *(code **)(pwVar6 + 4);" (assignment_expression "pcVar17 = *(code **)(pwVar6 + 4)" identifier = (pointer_expression "*(code **)(pwVar6 + 4)" * (cast_expression "(code **)(pwVar6 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar6 + 4)" ( (binary_expression "pwVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = (int)pcVar5 - (int)pcVar19;" (assignment_expression "uVar21 = (int)pcVar5 - (int)pcVar19" identifier = (binary_expression "(int)pcVar5 - (int)pcVar19" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar19" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }" if (parenthesized_expression "(uStack_cc < (uint)((int)pcVar5 - (int)pcVar19))" ( (binary_expression "uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)" identifier < (call_expression "(uint)((int)pcVar5 - (int)pcVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar5 - (int)pcVar19)" ( (binary_expression "(int)pcVar5 - (int)pcVar19" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n          uVar21 = uStack_cc;\n        }" { (expression_statement "uVar21 = uStack_cc;" (assignment_expression "uVar21 = uStack_cc" identifier = identifier) ;) })) (expression_statement "pcVar16 = pcVar11;" (assignment_expression "pcVar16 = pcVar11" identifier = identifier) ;) (expression_statement "pcVar13 = pcVar17;" (assignment_expression "pcVar13 = pcVar17" identifier = identifier) ;) (if_statement "if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }" if (parenthesized_expression "(pcVar11 <= pcVar17)" ( (binary_expression "pcVar11 <= pcVar17" identifier <= identifier) )) (compound_statement "{\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }" { (if_statement "if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }" if (parenthesized_expression "(pcVar17 + -(int)pcVar11 <= pcVar15)" ( (binary_expression "pcVar17 + -(int)pcVar11 <= pcVar15" (binary_expression "pcVar17 + -(int)pcVar11" identifier + (unary_expression "-(int)pcVar11" - (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier))) <= identifier) )) (compound_statement "{\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }" { (expression_statement "pcVar15 = pcVar17 + -(int)pcVar11;" (assignment_expression "pcVar15 = pcVar17 + -(int)pcVar11" identifier = (binary_expression "pcVar17 + -(int)pcVar11" identifier + (unary_expression "-(int)pcVar11" - (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (labeled_statement "std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);" (call_expression "_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21)" identifier (argument_list "(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21)" ( identifier , (cast_expression "(uint)pcVar11" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(uint)pcVar15" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pcVar4 + (int)pcVar19 * 4)" ( (binary_expression "*(int *)pcVar4 + (int)pcVar19 * 4" (pointer_expression "*(int *)pcVar4" * (cast_expression "(int *)pcVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "(int)pcVar19 * 4" (cast_expression "(int)pcVar19" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))) , identifier ))) ;))) (return_statement "return;" return ;) })) })) (do_statement "do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );" do (compound_statement "{\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      }" { (expression_statement "pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);" (assignment_expression "pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0)" identifier = (cast_expression "(code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar18 + 0x174e40) + 0x72f0)" ( (binary_expression "*(int *)(pcVar18 + 0x174e40) + 0x72f0" (pointer_expression "*(int *)(pcVar18 + 0x174e40)" * (cast_expression "(int *)(pcVar18 + 0x174e40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0x174e40)" ( (binary_expression "pcVar18 + 0x174e40" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);" (call_expression "(**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20)" (parenthesized_expression "(**(code **)(pcVar18 + 0x175bbc))" ( (pointer_expression "**(code **)(pcVar18 + 0x175bbc)" * (pointer_expression "*(code **)(pcVar18 + 0x175bbc)" * (cast_expression "(code **)(pcVar18 + 0x175bbc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x175bbc)" ( (binary_expression "pcVar18 + 0x175bbc" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20)" ( (binary_expression "*(int *)(pcVar18 + 0x174f88) + -0x25a4" (pointer_expression "*(int *)(pcVar18 + 0x174f88)" * (cast_expression "(int *)(pcVar18 + 0x174f88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 0x174f88)" ( (binary_expression "pcVar18 + 0x174f88" identifier + number_literal) )))) + number_literal) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "pcVar17 = pcVar13;" (assignment_expression "pcVar17 = pcVar13" identifier = identifier) ;) (expression_statement "pcVar16 = pcVar15;" (assignment_expression "pcVar16 = pcVar15" identifier = identifier) ;) (expression_statement "pcVar13 = pcVar17;" (assignment_expression "pcVar13 = pcVar17" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "uVar21 = (int)pwVar7 - iVar10 >> 2;" (assignment_expression "uVar21 = (int)pwVar7 - iVar10 >> 2" identifier = (binary_expression "(int)pwVar7 - iVar10 >> 2" (binary_expression "(int)pwVar7 - iVar10" (cast_expression "(int)pwVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) >> number_literal)) ;) (if_statement "if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }" if (parenthesized_expression "((uint)((int)pcVar4 - (int)pcVar15) <= uVar21)" ( (binary_expression "(uint)((int)pcVar4 - (int)pcVar15) <= uVar21" (call_expression "(uint)((int)pcVar4 - (int)pcVar15)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar4 - (int)pcVar15)" ( (binary_expression "(int)pcVar4 - (int)pcVar15" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= identifier) )) (compound_statement "{\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }" { (expression_statement "uVar21 = (int)pcVar4 - (int)pcVar15;" (assignment_expression "uVar21 = (int)pcVar4 - (int)pcVar15" identifier = (binary_expression "(int)pcVar4 - (int)pcVar15" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);" (call_expression "_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2)" identifier (argument_list "(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2)" ( identifier , (cast_expression "(uint)pcVar15" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "(int)pcVar16 - (int)pwVar2 >> 2" (binary_expression "(int)pcVar16 - (int)pwVar2" (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))) ;))) (return_statement "return;" return ;) })) (labeled_statement "std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);" (call_expression "_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7)" identifier (argument_list "(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7)" ( identifier , (cast_expression "(uint)pwVar9" ( (type_descriptor "uint" type_identifier) ) identifier) , number_literal , identifier , (cast_expression "(uint)pwVar7" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , IDENT , IDENT , (binary_expression (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) ))) ;))) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , IDENT , IDENT , IDENT ))) ;))) (return_statement return ;) })) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (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 IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , IDENT , IDENT , IDENT ))) ;))) (return_statement return ;) })) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , IDENT , IDENT , (binary_expression (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) ))) ;))) (return_statement return ;) })) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))) , IDENT ))) ;))) (return_statement return ;) })) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , IDENT , IDENT , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) ))) ;))) (return_statement return ;) })) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , LIT , IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;))) (return_statement return ;) })))
(function_definition "void FUN_002bd0e8(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  uint uVar3;\n  code *pcVar4;\n  code *pcVar5;\n  wstring *pwVar6;\n  wchar_t *pwVar7;\n  undefined *puVar8;\n  wchar_t *pwVar9;\n  int iVar10;\n  code *pcVar11;\n  uint uVar12;\n  code *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  code *pcVar17;\n  code *pcVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint uStack_cc;\n  int in_stack_ffffff70;\n  uint uVar21;\n  \n  pwVar2 = *(wchar_t **)(param_1 + 4);\n  uVar21 = 0x43a1d0;\n  pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);\n  if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }\n  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);\n  puVar8 = PTR_DAT_0043226c + 0x72f0;\n  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;\n  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);\n  if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x175e7c);\n  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);\n  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;\n  (*pcVar15)();\n  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);\n  pwVar7 = *(wchar_t **)(pwVar6 + 4);\n  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }\n  pcVar16 = *(code **)(pcVar15 + 0x175e04);\n  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);\n  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;\n  (*pcVar16)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }\n  std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002bd0e8(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)" (identifier "FUN_002bd0e8") (parameter_list "(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)" (( "(") (parameter_declaration "wstring *param_1" (type_identifier "wstring") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "wchar_t *param_4" (type_identifier "wchar_t") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  wchar_t *pwVar1;\n  wchar_t *pwVar2;\n  uint uVar3;\n  code *pcVar4;\n  code *pcVar5;\n  wstring *pwVar6;\n  wchar_t *pwVar7;\n  undefined *puVar8;\n  wchar_t *pwVar9;\n  int iVar10;\n  code *pcVar11;\n  uint uVar12;\n  code *pcVar13;\n  undefined *puVar14;\n  code *pcVar15;\n  code *pcVar16;\n  code *pcVar17;\n  code *pcVar18;\n  code *pcVar19;\n  code *pcVar20;\n  uint uStack_cc;\n  int in_stack_ffffff70;\n  uint uVar21;\n  \n  pwVar2 = *(wchar_t **)(param_1 + 4);\n  uVar21 = 0x43a1d0;\n  pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);\n  if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }\n  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);\n  puVar8 = PTR_DAT_0043226c + 0x72f0;\n  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;\n  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);\n  if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }\n  pcVar15 = *(code **)(puVar14 + 0x175e7c);\n  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);\n  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;\n  (*pcVar15)();\n  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);\n  pwVar7 = *(wchar_t **)(pwVar6 + 4);\n  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }\n  pcVar16 = *(code **)(pcVar15 + 0x175e04);\n  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);\n  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;\n  (*pcVar16)();\n  pwVar1 = *(wchar_t **)(pwVar6 + 4);\n  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n  if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }\n  std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);\n  return;\n}" ({ "{") (declaration "wchar_t *pwVar1;" (type_identifier "wchar_t") (pointer_declarator "*pwVar1" (* "*") (identifier "pwVar1")) (; ";")) (declaration "wchar_t *pwVar2;" (type_identifier "wchar_t") (pointer_declarator "*pwVar2" (* "*") (identifier "pwVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "wstring *pwVar6;" (type_identifier "wstring") (pointer_declarator "*pwVar6" (* "*") (identifier "pwVar6")) (; ";")) (declaration "wchar_t *pwVar7;" (type_identifier "wchar_t") (pointer_declarator "*pwVar7" (* "*") (identifier "pwVar7")) (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "wchar_t *pwVar9;" (type_identifier "wchar_t") (pointer_declarator "*pwVar9" (* "*") (identifier "pwVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "code *pcVar11;" (type_identifier "code") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "code *pcVar13;" (type_identifier "code") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (declaration "undefined *puVar14;" (type_identifier "undefined") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "code *pcVar15;" (type_identifier "code") (pointer_declarator "*pcVar15" (* "*") (identifier "pcVar15")) (; ";")) (declaration "code *pcVar16;" (type_identifier "code") (pointer_declarator "*pcVar16" (* "*") (identifier "pcVar16")) (; ";")) (declaration "code *pcVar17;" (type_identifier "code") (pointer_declarator "*pcVar17" (* "*") (identifier "pcVar17")) (; ";")) (declaration "code *pcVar18;" (type_identifier "code") (pointer_declarator "*pcVar18" (* "*") (identifier "pcVar18")) (; ";")) (declaration "code *pcVar19;" (type_identifier "code") (pointer_declarator "*pcVar19" (* "*") (identifier "pcVar19")) (; ";")) (declaration "code *pcVar20;" (type_identifier "code") (pointer_declarator "*pcVar20" (* "*") (identifier "pcVar20")) (; ";")) (declaration "uint uStack_cc;" (type_identifier "uint") (identifier "uStack_cc") (; ";")) (declaration "int in_stack_ffffff70;" (primitive_type "int") (identifier "in_stack_ffffff70") (; ";")) (declaration "uint uVar21;" (type_identifier "uint") (identifier "uVar21") (; ";")) (expression_statement "pwVar2 = *(wchar_t **)(param_1 + 4);" (assignment_expression "pwVar2 = *(wchar_t **)(param_1 + 4)" (identifier "pwVar2") (= "=") (pointer_expression "*(wchar_t **)(param_1 + 4)" (* "*") (cast_expression "(wchar_t **)(param_1 + 4)" (( "(") (type_descriptor "wchar_t **" (type_identifier "wchar_t") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar21 = 0x43a1d0;" (assignment_expression "uVar21 = 0x43a1d0" (identifier "uVar21") (= "=") (number_literal "0x43a1d0")) (; ";")) (expression_statement "pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);" (assignment_expression "pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2)" (identifier "pwVar7") (= "=") (cast_expression "(wchar_t *)(param_2 - *(int *)param_1 >> 2)" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 - *(int *)param_1 >> 2)" (( "(") (binary_expression "param_2 - *(int *)param_1 >> 2" (binary_expression "param_2 - *(int *)param_1" (identifier "param_2") (- "-") (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) (>> ">>") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (pwVar7 <= pwVar2) {\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }" (if "if") (parenthesized_expression "(pwVar7 <= pwVar2)" (( "(") (binary_expression "pwVar7 <= pwVar2" (identifier "pwVar7") (<= "<=") (identifier "pwVar2")) () ")")) (compound_statement "{\n    uVar21 = param_3 - param_2 >> 2;\n    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }\n    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);\n    return;\n  }" ({ "{") (expression_statement "uVar21 = param_3 - param_2 >> 2;" (assignment_expression "uVar21 = param_3 - param_2 >> 2" (identifier "uVar21") (= "=") (binary_expression "param_3 - param_2 >> 2" (binary_expression "param_3 - param_2" (identifier "param_3") (- "-") (identifier "param_2")) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }" (if "if") (parenthesized_expression "((uint)((int)pwVar2 - (int)pwVar7) <= uVar21)" (( "(") (binary_expression "(uint)((int)pwVar2 - (int)pwVar7) <= uVar21" (call_expression "(uint)((int)pwVar2 - (int)pwVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pwVar2 - (int)pwVar7)" (( "(") (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar2")) (- "-") (cast_expression "(int)pwVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar7"))) () ")"))) (<= "<=") (identifier "uVar21")) () ")")) (compound_statement "{\n      uVar21 = (int)pwVar2 - (int)pwVar7;\n    }" ({ "{") (expression_statement "uVar21 = (int)pwVar2 - (int)pwVar7;" (assignment_expression "uVar21 = (int)pwVar2 - (int)pwVar7" (identifier "uVar21") (= "=") (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar2")) (- "-") (cast_expression "(int)pwVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar7")))) (; ";")) (} "}"))) (labeled_statement "std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);" (statement_identifier "wstring") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);" (call_expression "_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2)" (identifier "_M_replace") (argument_list "(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2)" (( "(") (identifier "param_1") (, ",") (cast_expression "(uint)pwVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pwVar7")) (, ",") (identifier "uVar21") (, ",") (identifier "param_4") (, ",") (binary_expression "param_5 - (int)param_4 >> 2" (binary_expression "param_5 - (int)param_4" (identifier "param_5") (- "-") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) (>> ">>") (number_literal "2")) () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4)" (identifier "pwVar6") (= "=") (cast_expression "(wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4)" (( "(") (type_descriptor "wstring *" (type_identifier "wstring") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_alize_xindex_004323b4 + -0x25a4)" (( "(") (binary_expression "PTR_s_alize_xindex_004323b4 + -0x25a4" (identifier "PTR_s_alize_xindex_004323b4") (+ "+") (number_literal "-0x25a4")) () ")")))) (; ";")) (expression_statement "puVar8 = PTR_DAT_0043226c + 0x72f0;" (assignment_expression "puVar8 = PTR_DAT_0043226c + 0x72f0" (identifier "puVar8") (= "=") (binary_expression "PTR_DAT_0043226c + 0x72f0" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x72f0"))) (; ";")) (expression_statement "puVar14 = PTR___throw_out_of_range_fmt_00432fe8;" (assignment_expression "puVar14 = PTR___throw_out_of_range_fmt_00432fe8" (identifier "puVar14") (= "=") (identifier "PTR___throw_out_of_range_fmt_00432fe8")) (; ";")) (expression_statement "(*(code *)PTR___throw_out_of_range_fmt_00432fe8)();" (call_expression "(*(code *)PTR___throw_out_of_range_fmt_00432fe8)()" (parenthesized_expression "(*(code *)PTR___throw_out_of_range_fmt_00432fe8)" (( "(") (pointer_expression "*(code *)PTR___throw_out_of_range_fmt_00432fe8" (* "*") (cast_expression "(code *)PTR___throw_out_of_range_fmt_00432fe8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___throw_out_of_range_fmt_00432fe8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pwVar1 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar1 = *(wchar_t **)(pwVar6 + 4)" (identifier "pwVar1") (= "=") (pointer_expression "*(wchar_t **)(pwVar6 + 4)" (* "*") (cast_expression "(wchar_t **)(pwVar6 + 4)" (( "(") (type_descriptor "wchar_t **" (type_identifier "wchar_t") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pwVar6 + 4)" (( "(") (binary_expression "pwVar6 + 4" (identifier "pwVar6") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2)" (identifier "pwVar9") (= "=") (cast_expression "(wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2)" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 - *(int *)pwVar6 >> 2)" (( "(") (binary_expression "(int)puVar8 - *(int *)pwVar6 >> 2" (binary_expression "(int)puVar8 - *(int *)pwVar6" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (- "-") (pointer_expression "*(int *)pwVar6" (* "*") (cast_expression "(int *)pwVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pwVar6")))) (>> ">>") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (pwVar9 <= pwVar1) {\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }" (if "if") (parenthesized_expression "(pwVar9 <= pwVar1)" (( "(") (binary_expression "pwVar9 <= pwVar1" (identifier "pwVar9") (<= "<=") (identifier "pwVar1")) () ")")) (compound_statement "{\n    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;\n    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);\n    return;\n  }" ({ "{") (expression_statement "uVar12 = (int)pwVar7 - (int)puVar8 >> 2;" (assignment_expression "uVar12 = (int)pwVar7 - (int)puVar8 >> 2" (identifier "uVar12") (= "=") (binary_expression "(int)pwVar7 - (int)puVar8 >> 2" (binary_expression "(int)pwVar7 - (int)puVar8" (cast_expression "(int)pwVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar7")) (- "-") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }" (if "if") (parenthesized_expression "((uint)((int)pwVar1 - (int)pwVar9) <= uVar12)" (( "(") (binary_expression "(uint)((int)pwVar1 - (int)pwVar9) <= uVar12" (call_expression "(uint)((int)pwVar1 - (int)pwVar9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pwVar1 - (int)pwVar9)" (( "(") (binary_expression "(int)pwVar1 - (int)pwVar9" (cast_expression "(int)pwVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar1")) (- "-") (cast_expression "(int)pwVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar9"))) () ")"))) (<= "<=") (identifier "uVar12")) () ")")) (compound_statement "{\n      uVar12 = (int)pwVar1 - (int)pwVar9;\n    }" ({ "{") (expression_statement "uVar12 = (int)pwVar1 - (int)pwVar9;" (assignment_expression "uVar12 = (int)pwVar1 - (int)pwVar9" (identifier "uVar12") (= "=") (binary_expression "(int)pwVar1 - (int)pwVar9" (cast_expression "(int)pwVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar1")) (- "-") (cast_expression "(int)pwVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar9")))) (; ";")) (} "}"))) (labeled_statement "std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);" (statement_identifier "wstring") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);" (call_expression "_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21)" (identifier "_M_replace") (argument_list "(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21)" (( "(") (identifier "pwVar6") (, ",") (cast_expression "(uint)pwVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pwVar9")) (, ",") (identifier "uVar12") (, ",") (identifier "pwVar2") (, ",") (identifier "uVar21") () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar15 = *(code **)(puVar14 + 0x175e7c);" (assignment_expression "pcVar15 = *(code **)(puVar14 + 0x175e7c)" (identifier "pcVar15") (= "=") (pointer_expression "*(code **)(puVar14 + 0x175e7c)" (* "*") (cast_expression "(code **)(puVar14 + 0x175e7c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar14 + 0x175e7c)" (( "(") (binary_expression "puVar14 + 0x175e7c" (identifier "puVar14") (+ "+") (number_literal "0x175e7c")) () ")"))))) (; ";")) (expression_statement "pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4)" (identifier "pwVar6") (= "=") (cast_expression "(wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4)" (( "(") (type_descriptor "wstring *" (type_identifier "wstring") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar14 + 0x175248) + -0x25a4)" (( "(") (binary_expression "*(int *)(puVar14 + 0x175248) + -0x25a4" (pointer_expression "*(int *)(puVar14 + 0x175248)" (* "*") (cast_expression "(int *)(puVar14 + 0x175248)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 0x175248)" (( "(") (binary_expression "puVar14 + 0x175248" (identifier "puVar14") (+ "+") (number_literal "0x175248")) () ")")))) (+ "+") (number_literal "-0x25a4")) () ")")))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0" (identifier "iVar10") (= "=") (binary_expression "*(int *)(puVar14 + 0x175100) + 0x72f0" (pointer_expression "*(int *)(puVar14 + 0x175100)" (* "*") (cast_expression "(int *)(puVar14 + 0x175100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 0x175100)" (( "(") (binary_expression "puVar14 + 0x175100" (identifier "puVar14") (+ "+") (number_literal "0x175100")) () ")")))) (+ "+") (number_literal "0x72f0"))) (; ";")) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);" (assignment_expression "uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1)" (identifier "uVar21") (= "=") (call_expression "(**(code **)(pcVar15 + 0x17968c))(pwVar1)" (parenthesized_expression "(**(code **)(pcVar15 + 0x17968c))" (( "(") (pointer_expression "**(code **)(pcVar15 + 0x17968c)" (* "*") (pointer_expression "*(code **)(pcVar15 + 0x17968c)" (* "*") (cast_expression "(code **)(pcVar15 + 0x17968c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x17968c)" (( "(") (binary_expression "pcVar15 + 0x17968c" (identifier "pcVar15") (+ "+") (number_literal "0x17968c")) () ")"))))) () ")")) (argument_list "(pwVar1)" (( "(") (identifier "pwVar1") () ")")))) (; ";")) (expression_statement "pwVar7 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar7 = *(wchar_t **)(pwVar6 + 4)" (identifier "pwVar7") (= "=") (pointer_expression "*(wchar_t **)(pwVar6 + 4)" (* "*") (cast_expression "(wchar_t **)(pwVar6 + 4)" (( "(") (type_descriptor "wchar_t **" (type_identifier "wchar_t") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pwVar6 + 4)" (( "(") (binary_expression "pwVar6 + 4" (identifier "pwVar6") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" (identifier "pwVar2") (= "=") (cast_expression "(wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" (( "(") (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" (identifier "iVar10") (- "-") (pointer_expression "*(int *)pwVar6" (* "*") (cast_expression "(int *)pwVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pwVar6")))) (>> ">>") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (pwVar2 <= pwVar7) {\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }" (if "if") (parenthesized_expression "(pwVar2 <= pwVar7)" (( "(") (binary_expression "pwVar2 <= pwVar7" (identifier "pwVar2") (<= "<=") (identifier "pwVar7")) () ")")) (compound_statement "{\n    uVar3 = (int)pwVar9 - iVar10 >> 2;\n    uVar12 = (int)pwVar7 - (int)pwVar2;\n    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);\n    return;\n  }" ({ "{") (expression_statement "uVar3 = (int)pwVar9 - iVar10 >> 2;" (assignment_expression "uVar3 = (int)pwVar9 - iVar10 >> 2" (identifier "uVar3") (= "=") (binary_expression "(int)pwVar9 - iVar10 >> 2" (binary_expression "(int)pwVar9 - iVar10" (cast_expression "(int)pwVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar9")) (- "-") (identifier "iVar10")) (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "uVar12 = (int)pwVar7 - (int)pwVar2;" (assignment_expression "uVar12 = (int)pwVar7 - (int)pwVar2" (identifier "uVar12") (= "=") (binary_expression "(int)pwVar7 - (int)pwVar2" (cast_expression "(int)pwVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar7")) (- "-") (cast_expression "(int)pwVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar2")))) (; ";")) (if_statement "if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {\n      uVar12 = uVar3;\n    }" (if "if") (parenthesized_expression "(uVar3 < (uint)((int)pwVar7 - (int)pwVar2))" (( "(") (binary_expression "uVar3 < (uint)((int)pwVar7 - (int)pwVar2)" (identifier "uVar3") (< "<") (call_expression "(uint)((int)pwVar7 - (int)pwVar2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pwVar7 - (int)pwVar2)" (( "(") (binary_expression "(int)pwVar7 - (int)pwVar2" (cast_expression "(int)pwVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar7")) (- "-") (cast_expression "(int)pwVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar2"))) () ")")))) () ")")) (compound_statement "{\n      uVar12 = uVar3;\n    }" ({ "{") (expression_statement "uVar12 = uVar3;" (assignment_expression "uVar12 = uVar3" (identifier "uVar12") (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (labeled_statement "std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);" (statement_identifier "wstring") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);" (call_expression "_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21)" (identifier "_M_replace") (argument_list "(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21)" (( "(") (identifier "pwVar6") (, ",") (cast_expression "(uint)pwVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pwVar2")) (, ",") (identifier "uVar12") (, ",") (identifier "pwVar1") (, ",") (identifier "uVar21") () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar16 = *(code **)(pcVar15 + 0x175e04);" (assignment_expression "pcVar16 = *(code **)(pcVar15 + 0x175e04)" (identifier "pcVar16") (= "=") (pointer_expression "*(code **)(pcVar15 + 0x175e04)" (* "*") (cast_expression "(code **)(pcVar15 + 0x175e04)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x175e04)" (( "(") (binary_expression "pcVar15 + 0x175e04" (identifier "pcVar15") (+ "+") (number_literal "0x175e04")) () ")"))))) (; ";")) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4)" (identifier "pwVar6") (= "=") (cast_expression "(wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4)" (( "(") (type_descriptor "wstring *" (type_identifier "wstring") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar15 + 0x1751d0) + -0x25a4)" (( "(") (binary_expression "*(int *)(pcVar15 + 0x1751d0) + -0x25a4" (pointer_expression "*(int *)(pcVar15 + 0x1751d0)" (* "*") (cast_expression "(int *)(pcVar15 + 0x1751d0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar15 + 0x1751d0)" (( "(") (binary_expression "pcVar15 + 0x1751d0" (identifier "pcVar15") (+ "+") (number_literal "0x1751d0")) () ")")))) (+ "+") (number_literal "-0x25a4")) () ")")))) (; ";")) (expression_statement "iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0" (identifier "iVar10") (= "=") (binary_expression "*(int *)(pcVar15 + 0x175088) + 0x72f0" (pointer_expression "*(int *)(pcVar15 + 0x175088)" (* "*") (cast_expression "(int *)(pcVar15 + 0x175088)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar15 + 0x175088)" (( "(") (binary_expression "pcVar15 + 0x175088" (identifier "pcVar15") (+ "+") (number_literal "0x175088")) () ")")))) (+ "+") (number_literal "0x72f0"))) (; ";")) (expression_statement "(*pcVar16)();" (call_expression "(*pcVar16)()" (parenthesized_expression "(*pcVar16)" (( "(") (pointer_expression "*pcVar16" (* "*") (identifier "pcVar16")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pwVar1 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar1 = *(wchar_t **)(pwVar6 + 4)" (identifier "pwVar1") (= "=") (pointer_expression "*(wchar_t **)(pwVar6 + 4)" (* "*") (cast_expression "(wchar_t **)(pwVar6 + 4)" (( "(") (type_descriptor "wchar_t **" (type_identifier "wchar_t") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pwVar6 + 4)" (( "(") (binary_expression "pwVar6 + 4" (identifier "pwVar6") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" (identifier "pwVar9") (= "=") (cast_expression "(wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" (( "(") (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" (identifier "iVar10") (- "-") (pointer_expression "*(int *)pwVar6" (* "*") (cast_expression "(int *)pwVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pwVar6")))) (>> ">>") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (pwVar1 < pwVar9) {\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }" (if "if") (parenthesized_expression "(pwVar1 < pwVar9)" (( "(") (binary_expression "pwVar1 < pwVar9" (identifier "pwVar1") (< "<") (identifier "pwVar9")) () ")")) (compound_statement "{\n    pcVar15 = *(code **)(pcVar16 + 0x175d40);\n    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);\n    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;\n    (*pcVar15)();\n    pcVar16 = pcVar15 + 0x17ceac;\n    pwVar2 = *(wchar_t **)(pwVar6 + 4);\n    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }\n    pcVar17 = *(code **)(pcVar15 + 0x175cc4);\n    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);\n    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;\n    (*pcVar17)();\n    pcVar19 = pcVar17 + 0x17ce28;\n    pcVar4 = *(code **)(pwVar6 + 4);\n    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);\n    if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }\n    uVar21 = (int)pwVar7 - iVar10 >> 2;\n    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }\n    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);\n    return;\n  }" ({ "{") (expression_statement "pcVar15 = *(code **)(pcVar16 + 0x175d40);" (assignment_expression "pcVar15 = *(code **)(pcVar16 + 0x175d40)" (identifier "pcVar15") (= "=") (pointer_expression "*(code **)(pcVar16 + 0x175d40)" (* "*") (cast_expression "(code **)(pcVar16 + 0x175d40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar16 + 0x175d40)" (( "(") (binary_expression "pcVar16 + 0x175d40" (identifier "pcVar16") (+ "+") (number_literal "0x175d40")) () ")"))))) (; ";")) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4)" (identifier "pwVar6") (= "=") (cast_expression "(wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4)" (( "(") (type_descriptor "wstring *" (type_identifier "wstring") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar16 + 0x17510c) + -0x25a4)" (( "(") (binary_expression "*(int *)(pcVar16 + 0x17510c) + -0x25a4" (pointer_expression "*(int *)(pcVar16 + 0x17510c)" (* "*") (cast_expression "(int *)(pcVar16 + 0x17510c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar16 + 0x17510c)" (( "(") (binary_expression "pcVar16 + 0x17510c" (identifier "pcVar16") (+ "+") (number_literal "0x17510c")) () ")")))) (+ "+") (number_literal "-0x25a4")) () ")")))) (; ";")) (expression_statement "iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0" (identifier "iVar10") (= "=") (binary_expression "*(int *)(pcVar16 + 0x174fc4) + 0x72f0" (pointer_expression "*(int *)(pcVar16 + 0x174fc4)" (* "*") (cast_expression "(int *)(pcVar16 + 0x174fc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar16 + 0x174fc4)" (( "(") (binary_expression "pcVar16 + 0x174fc4" (identifier "pcVar16") (+ "+") (number_literal "0x174fc4")) () ")")))) (+ "+") (number_literal "0x72f0"))) (; ";")) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar16 = pcVar15 + 0x17ceac;" (assignment_expression "pcVar16 = pcVar15 + 0x17ceac" (identifier "pcVar16") (= "=") (binary_expression "pcVar15 + 0x17ceac" (identifier "pcVar15") (+ "+") (number_literal "0x17ceac"))) (; ";")) (expression_statement "pwVar2 = *(wchar_t **)(pwVar6 + 4);" (assignment_expression "pwVar2 = *(wchar_t **)(pwVar6 + 4)" (identifier "pwVar2") (= "=") (pointer_expression "*(wchar_t **)(pwVar6 + 4)" (* "*") (cast_expression "(wchar_t **)(pwVar6 + 4)" (( "(") (type_descriptor "wchar_t **" (type_identifier "wchar_t") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pwVar6 + 4)" (( "(") (binary_expression "pwVar6 + 4" (identifier "pwVar6") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" (identifier "pwVar7") (= "=") (cast_expression "(wchar_t *)(iVar10 - *(int *)pwVar6 >> 2)" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" (( "(") (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" (identifier "iVar10") (- "-") (pointer_expression "*(int *)pwVar6" (* "*") (cast_expression "(int *)pwVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pwVar6")))) (>> ">>") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (pwVar7 <= pwVar2) {\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }" (if "if") (parenthesized_expression "(pwVar7 <= pwVar2)" (( "(") (binary_expression "pwVar7 <= pwVar2" (identifier "pwVar7") (<= "<=") (identifier "pwVar2")) () ")")) (compound_statement "{\n      uVar21 = (int)pwVar9 - iVar10 >> 2;\n      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }\n      std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);\n      return;\n    }" ({ "{") (expression_statement "uVar21 = (int)pwVar9 - iVar10 >> 2;" (assignment_expression "uVar21 = (int)pwVar9 - iVar10 >> 2" (identifier "uVar21") (= "=") (binary_expression "(int)pwVar9 - iVar10 >> 2" (binary_expression "(int)pwVar9 - iVar10" (cast_expression "(int)pwVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar9")) (- "-") (identifier "iVar10")) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }" (if "if") (parenthesized_expression "((uint)((int)pwVar2 - (int)pwVar7) <= uVar21)" (( "(") (binary_expression "(uint)((int)pwVar2 - (int)pwVar7) <= uVar21" (call_expression "(uint)((int)pwVar2 - (int)pwVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pwVar2 - (int)pwVar7)" (( "(") (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar2")) (- "-") (cast_expression "(int)pwVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar7"))) () ")"))) (<= "<=") (identifier "uVar21")) () ")")) (compound_statement "{\n        uVar21 = (int)pwVar2 - (int)pwVar7;\n      }" ({ "{") (expression_statement "uVar21 = (int)pwVar2 - (int)pwVar7;" (assignment_expression "uVar21 = (int)pwVar2 - (int)pwVar7" (identifier "uVar21") (= "=") (binary_expression "(int)pwVar2 - (int)pwVar7" (cast_expression "(int)pwVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar2")) (- "-") (cast_expression "(int)pwVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar7")))) (; ";")) (} "}"))) (labeled_statement "std::wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "wstring::_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);" (statement_identifier "wstring") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);" (call_expression "_M_replace\n                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2)" (identifier "_M_replace") (argument_list "(pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2)" (( "(") (identifier "pwVar6") (, ",") (cast_expression "(uint)pwVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pwVar7")) (, ",") (identifier "uVar21") (, ",") (identifier "pwVar1") (, ",") (binary_expression "in_stack_ffffff70 - (int)pwVar1 >> 2" (binary_expression "in_stack_ffffff70 - (int)pwVar1" (identifier "in_stack_ffffff70") (- "-") (cast_expression "(int)pwVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar1"))) (>> ">>") (number_literal "2")) () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar17 = *(code **)(pcVar15 + 0x175cc4);" (assignment_expression "pcVar17 = *(code **)(pcVar15 + 0x175cc4)" (identifier "pcVar17") (= "=") (pointer_expression "*(code **)(pcVar15 + 0x175cc4)" (* "*") (cast_expression "(code **)(pcVar15 + 0x175cc4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar15 + 0x175cc4)" (( "(") (binary_expression "pcVar15 + 0x175cc4" (identifier "pcVar15") (+ "+") (number_literal "0x175cc4")) () ")"))))) (; ";")) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4)" (identifier "pwVar6") (= "=") (cast_expression "(wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4)" (( "(") (type_descriptor "wstring *" (type_identifier "wstring") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar15 + 0x175090) + -0x25a4)" (( "(") (binary_expression "*(int *)(pcVar15 + 0x175090) + -0x25a4" (pointer_expression "*(int *)(pcVar15 + 0x175090)" (* "*") (cast_expression "(int *)(pcVar15 + 0x175090)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar15 + 0x175090)" (( "(") (binary_expression "pcVar15 + 0x175090" (identifier "pcVar15") (+ "+") (number_literal "0x175090")) () ")")))) (+ "+") (number_literal "-0x25a4")) () ")")))) (; ";")) (expression_statement "iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;" (assignment_expression "iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0" (identifier "iVar10") (= "=") (binary_expression "*(int *)(pcVar15 + 0x174f48) + 0x72f0" (pointer_expression "*(int *)(pcVar15 + 0x174f48)" (* "*") (cast_expression "(int *)(pcVar15 + 0x174f48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar15 + 0x174f48)" (( "(") (binary_expression "pcVar15 + 0x174f48" (identifier "pcVar15") (+ "+") (number_literal "0x174f48")) () ")")))) (+ "+") (number_literal "0x72f0"))) (; ";")) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" (( "(") (pointer_expression "*pcVar17" (* "*") (identifier "pcVar17")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar19 = pcVar17 + 0x17ce28;" (assignment_expression "pcVar19 = pcVar17 + 0x17ce28" (identifier "pcVar19") (= "=") (binary_expression "pcVar17 + 0x17ce28" (identifier "pcVar17") (+ "+") (number_literal "0x17ce28"))) (; ";")) (expression_statement "pcVar4 = *(code **)(pwVar6 + 4);" (assignment_expression "pcVar4 = *(code **)(pwVar6 + 4)" (identifier "pcVar4") (= "=") (pointer_expression "*(code **)(pwVar6 + 4)" (* "*") (cast_expression "(code **)(pwVar6 + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pwVar6 + 4)" (( "(") (binary_expression "pwVar6 + 4" (identifier "pwVar6") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);" (assignment_expression "pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2)" (identifier "pcVar15") (= "=") (cast_expression "(code *)(iVar10 - *(int *)pwVar6 >> 2)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 - *(int *)pwVar6 >> 2)" (( "(") (binary_expression "iVar10 - *(int *)pwVar6 >> 2" (binary_expression "iVar10 - *(int *)pwVar6" (identifier "iVar10") (- "-") (pointer_expression "*(int *)pwVar6" (* "*") (cast_expression "(int *)pwVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pwVar6")))) (>> ">>") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (pcVar4 < pcVar15) {\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(pcVar4 < pcVar15)" (( "(") (binary_expression "pcVar4 < pcVar15" (identifier "pcVar4") (< "<") (identifier "pcVar15")) () ")")) (compound_statement "{\n      pcVar18 = *(code **)(pcVar17 + 0x175c40);\n      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);\n      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);\n      (*pcVar18)();\n      pcVar20 = pcVar18 + 0x17cda4;\n      pcVar5 = *(code **)(pcVar4 + 4);\n      pcVar16 = pcVar19;\n      pcVar17 = pcVar5;\n      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);\n      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }\n      do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );\n    }" ({ "{") (expression_statement "pcVar18 = *(code **)(pcVar17 + 0x175c40);" (assignment_expression "pcVar18 = *(code **)(pcVar17 + 0x175c40)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(pcVar17 + 0x175c40)" (* "*") (cast_expression "(code **)(pcVar17 + 0x175c40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar17 + 0x175c40)" (( "(") (binary_expression "pcVar17 + 0x175c40" (identifier "pcVar17") (+ "+") (number_literal "0x175c40")) () ")"))))) (; ";")) (expression_statement "pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);" (assignment_expression "pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4)" (identifier "pwVar6") (= "=") (cast_expression "(wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4)" (( "(") (type_descriptor "wstring *" (type_identifier "wstring") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar17 + 0x17500c) + -0x25a4)" (( "(") (binary_expression "*(int *)(pcVar17 + 0x17500c) + -0x25a4" (pointer_expression "*(int *)(pcVar17 + 0x17500c)" (* "*") (cast_expression "(int *)(pcVar17 + 0x17500c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar17 + 0x17500c)" (( "(") (binary_expression "pcVar17 + 0x17500c" (identifier "pcVar17") (+ "+") (number_literal "0x17500c")) () ")")))) (+ "+") (number_literal "-0x25a4")) () ")")))) (; ";")) (expression_statement "pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);" (assignment_expression "pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0)" (identifier "pcVar11") (= "=") (cast_expression "(code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar17 + 0x174ec4) + 0x72f0)" (( "(") (binary_expression "*(int *)(pcVar17 + 0x174ec4) + 0x72f0" (pointer_expression "*(int *)(pcVar17 + 0x174ec4)" (* "*") (cast_expression "(int *)(pcVar17 + 0x174ec4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar17 + 0x174ec4)" (( "(") (binary_expression "pcVar17 + 0x174ec4" (identifier "pcVar17") (+ "+") (number_literal "0x174ec4")) () ")")))) (+ "+") (number_literal "0x72f0")) () ")")))) (; ";")) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar20 = pcVar18 + 0x17cda4;" (assignment_expression "pcVar20 = pcVar18 + 0x17cda4" (identifier "pcVar20") (= "=") (binary_expression "pcVar18 + 0x17cda4" (identifier "pcVar18") (+ "+") (number_literal "0x17cda4"))) (; ";")) (expression_statement "pcVar5 = *(code **)(pcVar4 + 4);" (assignment_expression "pcVar5 = *(code **)(pcVar4 + 4)" (identifier "pcVar5") (= "=") (pointer_expression "*(code **)(pcVar4 + 4)" (* "*") (cast_expression "(code **)(pcVar4 + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar4 + 4)" (( "(") (binary_expression "pcVar4 + 4" (identifier "pcVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar16 = pcVar19;" (assignment_expression "pcVar16 = pcVar19" (identifier "pcVar16") (= "=") (identifier "pcVar19")) (; ";")) (expression_statement "pcVar17 = pcVar5;" (assignment_expression "pcVar17 = pcVar5" (identifier "pcVar17") (= "=") (identifier "pcVar5")) (; ";")) (expression_statement "pcVar13 = (code *)(uint)(pcVar5 < pcVar19);" (assignment_expression "pcVar13 = (code *)(uint)(pcVar5 < pcVar19)" (identifier "pcVar13") (= "=") (cast_expression "(code *)(uint)(pcVar5 < pcVar19)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(pcVar5 < pcVar19)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pcVar5 < pcVar19)" (( "(") (binary_expression "pcVar5 < pcVar19" (identifier "pcVar5") (< "<") (identifier "pcVar19")) () ")"))))) (; ";")) (if_statement "if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }" (if "if") (parenthesized_expression "((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0)" (( "(") (binary_expression "(code *)(uint)(pcVar5 < pcVar19) == (code *)0x0" (cast_expression "(code *)(uint)(pcVar5 < pcVar19)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(pcVar5 < pcVar19)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pcVar5 < pcVar19)" (( "(") (binary_expression "pcVar5 < pcVar19" (identifier "pcVar5") (< "<") (identifier "pcVar19")) () ")")))) (== "==") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pcVar17 = *(code **)(pwVar6 + 4);\n        uVar21 = (int)pcVar5 - (int)pcVar19;\n        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }\n        pcVar16 = pcVar11;\n        pcVar13 = pcVar17;\n        if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }\n      }" ({ "{") (expression_statement "pcVar17 = *(code **)(pwVar6 + 4);" (assignment_expression "pcVar17 = *(code **)(pwVar6 + 4)" (identifier "pcVar17") (= "=") (pointer_expression "*(code **)(pwVar6 + 4)" (* "*") (cast_expression "(code **)(pwVar6 + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pwVar6 + 4)" (( "(") (binary_expression "pwVar6 + 4" (identifier "pwVar6") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar21 = (int)pcVar5 - (int)pcVar19;" (assignment_expression "uVar21 = (int)pcVar5 - (int)pcVar19" (identifier "uVar21") (= "=") (binary_expression "(int)pcVar5 - (int)pcVar19" (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5")) (- "-") (cast_expression "(int)pcVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar19")))) (; ";")) (if_statement "if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {\n          uVar21 = uStack_cc;\n        }" (if "if") (parenthesized_expression "(uStack_cc < (uint)((int)pcVar5 - (int)pcVar19))" (( "(") (binary_expression "uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)" (identifier "uStack_cc") (< "<") (call_expression "(uint)((int)pcVar5 - (int)pcVar19)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar5 - (int)pcVar19)" (( "(") (binary_expression "(int)pcVar5 - (int)pcVar19" (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5")) (- "-") (cast_expression "(int)pcVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar19"))) () ")")))) () ")")) (compound_statement "{\n          uVar21 = uStack_cc;\n        }" ({ "{") (expression_statement "uVar21 = uStack_cc;" (assignment_expression "uVar21 = uStack_cc" (identifier "uVar21") (= "=") (identifier "uStack_cc")) (; ";")) (} "}"))) (expression_statement "pcVar16 = pcVar11;" (assignment_expression "pcVar16 = pcVar11" (identifier "pcVar16") (= "=") (identifier "pcVar11")) (; ";")) (expression_statement "pcVar13 = pcVar17;" (assignment_expression "pcVar13 = pcVar17" (identifier "pcVar13") (= "=") (identifier "pcVar17")) (; ";")) (if_statement "if (pcVar11 <= pcVar17) {\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }" (if "if") (parenthesized_expression "(pcVar11 <= pcVar17)" (( "(") (binary_expression "pcVar11 <= pcVar17" (identifier "pcVar11") (<= "<=") (identifier "pcVar17")) () ")")) (compound_statement "{\n          if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }\n          std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);\n          return;\n        }" ({ "{") (if_statement "if (pcVar17 + -(int)pcVar11 <= pcVar15) {\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }" (if "if") (parenthesized_expression "(pcVar17 + -(int)pcVar11 <= pcVar15)" (( "(") (binary_expression "pcVar17 + -(int)pcVar11 <= pcVar15" (binary_expression "pcVar17 + -(int)pcVar11" (identifier "pcVar17") (+ "+") (unary_expression "-(int)pcVar11" (- "-") (cast_expression "(int)pcVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar11")))) (<= "<=") (identifier "pcVar15")) () ")")) (compound_statement "{\n            pcVar15 = pcVar17 + -(int)pcVar11;\n          }" ({ "{") (expression_statement "pcVar15 = pcVar17 + -(int)pcVar11;" (assignment_expression "pcVar15 = pcVar17 + -(int)pcVar11" (identifier "pcVar15") (= "=") (binary_expression "pcVar17 + -(int)pcVar11" (identifier "pcVar17") (+ "+") (unary_expression "-(int)pcVar11" (- "-") (cast_expression "(int)pcVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar11"))))) (; ";")) (} "}"))) (labeled_statement "std::wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "wstring::_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);" (statement_identifier "wstring") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);" (call_expression "_M_replace\n                    (pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21)" (identifier "_M_replace") (argument_list "(pwVar6,(uint)pcVar11,(uint)pcVar15,\n                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21)" (( "(") (identifier "pwVar6") (, ",") (cast_expression "(uint)pcVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar11")) (, ",") (cast_expression "(uint)pcVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar15")) (, ",") (cast_expression "(wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4)" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pcVar4 + (int)pcVar19 * 4)" (( "(") (binary_expression "*(int *)pcVar4 + (int)pcVar19 * 4" (pointer_expression "*(int *)pcVar4" (* "*") (cast_expression "(int *)pcVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar4"))) (+ "+") (binary_expression "(int)pcVar19 * 4" (cast_expression "(int)pcVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar19")) (* "*") (number_literal "4"))) () ")"))) (, ",") (identifier "uVar21") () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (do_statement "do {\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      } while( true );" (do "do") (compound_statement "{\n        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);\n        (**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);\n        pcVar17 = pcVar13;\n        pcVar16 = pcVar15;\n        pcVar13 = pcVar17;\n      }" ({ "{") (expression_statement "pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);" (assignment_expression "pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0)" (identifier "pcVar15") (= "=") (cast_expression "(code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar18 + 0x174e40) + 0x72f0)" (( "(") (binary_expression "*(int *)(pcVar18 + 0x174e40) + 0x72f0" (pointer_expression "*(int *)(pcVar18 + 0x174e40)" (* "*") (cast_expression "(int *)(pcVar18 + 0x174e40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar18 + 0x174e40)" (( "(") (binary_expression "pcVar18 + 0x174e40" (identifier "pcVar18") (+ "+") (number_literal "0x174e40")) () ")")))) (+ "+") (number_literal "0x72f0")) () ")")))) (; ";")) (expression_statement "(**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);" (call_expression "(**(code **)(pcVar18 + 0x175bbc))\n                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20)" (parenthesized_expression "(**(code **)(pcVar18 + 0x175bbc))" (( "(") (pointer_expression "**(code **)(pcVar18 + 0x175bbc)" (* "*") (pointer_expression "*(code **)(pcVar18 + 0x175bbc)" (* "*") (cast_expression "(code **)(pcVar18 + 0x175bbc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar18 + 0x175bbc)" (( "(") (binary_expression "pcVar18 + 0x175bbc" (identifier "pcVar18") (+ "+") (number_literal "0x175bbc")) () ")"))))) () ")")) (argument_list "(*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20)" (( "(") (binary_expression "*(int *)(pcVar18 + 0x174f88) + -0x25a4" (pointer_expression "*(int *)(pcVar18 + 0x174f88)" (* "*") (cast_expression "(int *)(pcVar18 + 0x174f88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar18 + 0x174f88)" (( "(") (binary_expression "pcVar18 + 0x174f88" (identifier "pcVar18") (+ "+") (number_literal "0x174f88")) () ")")))) (+ "+") (number_literal "-0x25a4")) (, ",") (identifier "pcVar15") (, ",") (identifier "pcVar16") (, ",") (identifier "pcVar17") (, ",") (identifier "pcVar20") () ")"))) (; ";")) (expression_statement "pcVar17 = pcVar13;" (assignment_expression "pcVar17 = pcVar13" (identifier "pcVar17") (= "=") (identifier "pcVar13")) (; ";")) (expression_statement "pcVar16 = pcVar15;" (assignment_expression "pcVar16 = pcVar15" (identifier "pcVar16") (= "=") (identifier "pcVar15")) (; ";")) (expression_statement "pcVar13 = pcVar17;" (assignment_expression "pcVar13 = pcVar17" (identifier "pcVar13") (= "=") (identifier "pcVar17")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "uVar21 = (int)pwVar7 - iVar10 >> 2;" (assignment_expression "uVar21 = (int)pwVar7 - iVar10 >> 2" (identifier "uVar21") (= "=") (binary_expression "(int)pwVar7 - iVar10 >> 2" (binary_expression "(int)pwVar7 - iVar10" (cast_expression "(int)pwVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar7")) (- "-") (identifier "iVar10")) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }" (if "if") (parenthesized_expression "((uint)((int)pcVar4 - (int)pcVar15) <= uVar21)" (( "(") (binary_expression "(uint)((int)pcVar4 - (int)pcVar15) <= uVar21" (call_expression "(uint)((int)pcVar4 - (int)pcVar15)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar4 - (int)pcVar15)" (( "(") (binary_expression "(int)pcVar4 - (int)pcVar15" (cast_expression "(int)pcVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar4")) (- "-") (cast_expression "(int)pcVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar15"))) () ")"))) (<= "<=") (identifier "uVar21")) () ")")) (compound_statement "{\n      uVar21 = (int)pcVar4 - (int)pcVar15;\n    }" ({ "{") (expression_statement "uVar21 = (int)pcVar4 - (int)pcVar15;" (assignment_expression "uVar21 = (int)pcVar4 - (int)pcVar15" (identifier "uVar21") (= "=") (binary_expression "(int)pcVar4 - (int)pcVar15" (cast_expression "(int)pcVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar4")) (- "-") (cast_expression "(int)pcVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar15")))) (; ";")) (} "}"))) (labeled_statement "std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);" (statement_identifier "wstring") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);" (call_expression "_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2)" (identifier "_M_replace") (argument_list "(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2)" (( "(") (identifier "pwVar6") (, ",") (cast_expression "(uint)pcVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar15")) (, ",") (identifier "uVar21") (, ",") (identifier "pwVar2") (, ",") (binary_expression "(int)pcVar16 - (int)pwVar2 >> 2" (binary_expression "(int)pcVar16 - (int)pwVar2" (cast_expression "(int)pcVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar16")) (- "-") (cast_expression "(int)pwVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pwVar2"))) (>> ">>") (number_literal "2")) () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);" (statement_identifier "wstring") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);" (call_expression "_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7)" (identifier "_M_replace") (argument_list "(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7)" (( "(") (identifier "pwVar6") (, ",") (cast_expression "(uint)pwVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pwVar9")) (, ",") (number_literal "0") (, ",") (identifier "pwVar2") (, ",") (cast_expression "(uint)pwVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pwVar7")) () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* std::wstring::replace(__normal_iterator<wchar_t const*, std::wstring >, __normal_iterator<wchar_t
   const*, std::wstring >, wchar_t const*, wchar_t const*) */

void __thiscall
std::type_1::function_1(type_1 *var_1,int var_2,int var_5,type_2 *param_4,int var_8)

{
  type_2 *var_13;
  type_2 *var_4;
  type_3 var_18;
  type_4 *var_22;
  type_4 *var_24;
  type_1 *var_11;
  type_2 *var_3;
  type_5 *puVar8;
  type_2 *var_12;
  int var_17;
  type_4 *var_27;
  type_3 var_14;
  type_4 *pcVar13;
  type_5 *var_15;
  type_4 *var_16;
  type_4 *var_19;
  type_4 *var_21;
  type_4 *var_23;
  type_4 *var_25;
  type_4 *pcVar20;
  type_3 var_26;
  int var_20;
  type_3 var_6;
  
  var_4 = *(type_2 **)(var_1 + 4);
  var_6 = 0x43a1d0;
  var_3 = (type_2 *)(var_2 - *(int *)var_1 >> 2);
  if (var_3 <= var_4) {
    var_6 = var_5 - var_2 >> 2;
    if ((type_3)((int)var_4 - (int)var_3) <= var_6) {
      var_6 = (int)var_4 - (int)var_3;
    }
    var_7(var_1,(type_3)var_3,var_6,param_4,var_8 - (int)param_4 >> 2);
    return;
  }
  var_11 = (type_1 *)(var_9 + -0x25a4);
  puVar8 = var_10 + 0x72f0;
  var_15 = PTR___throw_out_of_range_fmt_00432fe8;
  (*(type_4 *)PTR___throw_out_of_range_fmt_00432fe8)();
  var_13 = *(type_2 **)(var_11 + 4);
  var_12 = (type_2 *)((int)puVar8 - *(int *)var_11 >> 2);
  if (var_12 <= var_13) {
    var_14 = (int)var_3 - (int)puVar8 >> 2;
    if ((type_3)((int)var_13 - (int)var_12) <= var_14) {
      var_14 = (int)var_13 - (int)var_12;
    }
    var_7(var_11,(type_3)var_12,var_14,var_4,var_6);
    return;
  }
  var_16 = *(type_4 **)(var_15 + 0x175e7c);
  var_11 = (type_1 *)(*(int *)(var_15 + 0x175248) + -0x25a4);
  var_17 = *(int *)(var_15 + 0x175100) + 0x72f0;
  (*var_16)();
  var_6 = (**(type_4 **)(var_16 + 0x17968c))(var_13);
  var_3 = *(type_2 **)(var_11 + 4);
  var_4 = (type_2 *)(var_17 - *(int *)var_11 >> 2);
  if (var_4 <= var_3) {
    var_18 = (int)var_12 - var_17 >> 2;
    var_14 = (int)var_3 - (int)var_4;
    if (var_18 < (type_3)((int)var_3 - (int)var_4)) {
      var_14 = var_18;
    }
    var_7(var_11,(type_3)var_4,var_14,var_13,var_6);
    return;
  }
  var_19 = *(type_4 **)(var_16 + 0x175e04);
  var_11 = (type_1 *)(*(int *)(var_16 + 0x1751d0) + -0x25a4);
  var_17 = *(int *)(var_16 + 0x175088) + 0x72f0;
  (*var_19)();
  var_13 = *(type_2 **)(var_11 + 4);
  var_12 = (type_2 *)(var_17 - *(int *)var_11 >> 2);
  if (var_13 < var_12) {
    var_16 = *(type_4 **)(var_19 + 0x175d40);
    var_11 = (type_1 *)(*(int *)(var_19 + 0x17510c) + -0x25a4);
    var_17 = *(int *)(var_19 + 0x174fc4) + 0x72f0;
    (*var_16)();
    var_19 = var_16 + 0x17ceac;
    var_4 = *(type_2 **)(var_11 + 4);
    var_3 = (type_2 *)(var_17 - *(int *)var_11 >> 2);
    if (var_3 <= var_4) {
      var_6 = (int)var_12 - var_17 >> 2;
      if ((type_3)((int)var_4 - (int)var_3) <= var_6) {
        var_6 = (int)var_4 - (int)var_3;
      }
      var_7(var_11,(type_3)var_3,var_6,var_13,var_20 - (int)var_13 >> 2);
      return;
    }
    var_21 = *(type_4 **)(var_16 + 0x175cc4);
    var_11 = (type_1 *)(*(int *)(var_16 + 0x175090) + -0x25a4);
    var_17 = *(int *)(var_16 + 0x174f48) + 0x72f0;
    (*var_21)();
    var_25 = var_21 + 0x17ce28;
    var_22 = *(type_4 **)(var_11 + 4);
    var_16 = (type_4 *)(var_17 - *(int *)var_11 >> 2);
    if (var_22 < var_16) {
      var_23 = *(type_4 **)(var_21 + 0x175c40);
      var_11 = (type_1 *)(*(int *)(var_21 + 0x17500c) + -0x25a4);
      var_27 = (type_4 *)(*(int *)(var_21 + 0x174ec4) + 0x72f0);
      (*var_23)();
      pcVar20 = var_23 + 0x17cda4;
      var_24 = *(type_4 **)(var_22 + 4);
      var_19 = var_25;
      var_21 = var_24;
      pcVar13 = (type_4 *)(type_3)(var_24 < var_25);
      if ((type_4 *)(type_3)(var_24 < var_25) == (type_4 *)0x0) {
        var_21 = *(type_4 **)(var_11 + 4);
        var_6 = (int)var_24 - (int)var_25;
        if (var_26 < (type_3)((int)var_24 - (int)var_25)) {
          var_6 = var_26;
        }
        var_19 = var_27;
        pcVar13 = var_21;
        if (var_27 <= var_21) {
          if (var_21 + -(int)var_27 <= var_16) {
            var_16 = var_21 + -(int)var_27;
          }
          var_7(var_11,(type_3)var_27,(type_3)var_16,
                     (type_2 *)(*(int *)var_22 + (int)var_25 * 4),var_6);
          return;
        }
      }
      do {
        var_16 = (type_4 *)(*(int *)(var_23 + 0x174e40) + 0x72f0);
        (**(type_4 **)(var_23 + 0x175bbc))
                  (*(int *)(var_23 + 0x174f88) + -0x25a4,var_16,var_19,var_21,pcVar20);
        var_21 = pcVar13;
        var_19 = var_16;
        pcVar13 = var_21;
      } while( true );
    }
    var_6 = (int)var_3 - var_17 >> 2;
    if ((type_3)((int)var_22 - (int)var_16) <= var_6) {
      var_6 = (int)var_22 - (int)var_16;
    }
    var_7(var_11,(type_3)var_16,var_6,var_4,(int)var_19 - (int)var_4 >> 2);
    return;
  }
  var_7(var_11,(type_3)var_12,0,var_4,(type_3)var_3);
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (labeled_statement label: (statement_identifier) (ERROR) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (identifier) (identifier) (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))))))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (labeled_statement label: (statement_identifier) (ERROR) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (identifier) (identifier) (identifier)))))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (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: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (labeled_statement label: (statement_identifier) (ERROR) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (identifier) (identifier) (identifier)))))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (labeled_statement label: (statement_identifier) (ERROR) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (identifier) (identifier) (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))))))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (labeled_statement label: (statement_identifier) (ERROR) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) (identifier)))))) (return_statement))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (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: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (true))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (labeled_statement label: (statement_identifier) (ERROR) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (identifier) (identifier) (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))))))) (return_statement))) (labeled_statement label: (statement_identifier) (ERROR) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (number_literal) (identifier) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (return_statement))))

void MASKED(wstring *param_1,int param_2,int param_3,wchar_t *param_4,int param_5)

{
  wchar_t *pwVar1;
  wchar_t *pwVar2;
  uint uVar3;
  code *pcVar4;
  code *pcVar5;
  wstring *pwVar6;
  wchar_t *pwVar7;
  undefined *puVar8;
  wchar_t *pwVar9;
  int iVar10;
  code *pcVar11;
  uint uVar12;
  code *pcVar13;
  undefined *puVar14;
  code *pcVar15;
  code *pcVar16;
  code *pcVar17;
  code *pcVar18;
  code *pcVar19;
  code *pcVar20;
  uint uStack_cc;
  int in_stack_ffffff70;
  uint uVar21;
  
  pwVar2 = *(wchar_t **)(param_1 + 4);
  uVar21 = 0x43a1d0;
  pwVar7 = (wchar_t *)(param_2 - *(int *)param_1 >> 2);
  if (pwVar7 <= pwVar2) {
    uVar21 = param_3 - param_2 >> 2;
    if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {
      uVar21 = (int)pwVar2 - (int)pwVar7;
    }
    std::wstring::_M_replace(param_1,(uint)pwVar7,uVar21,param_4,param_5 - (int)param_4 >> 2);
    return;
  }
  pwVar6 = (wstring *)(PTR_s_alize_xindex_004323b4 + -0x25a4);
  puVar8 = PTR_DAT_0043226c + 0x72f0;
  puVar14 = PTR___throw_out_of_range_fmt_00432fe8;
  (*(code *)PTR___throw_out_of_range_fmt_00432fe8)();
  pwVar1 = *(wchar_t **)(pwVar6 + 4);
  pwVar9 = (wchar_t *)((int)puVar8 - *(int *)pwVar6 >> 2);
  if (pwVar9 <= pwVar1) {
    uVar12 = (int)pwVar7 - (int)puVar8 >> 2;
    if ((uint)((int)pwVar1 - (int)pwVar9) <= uVar12) {
      uVar12 = (int)pwVar1 - (int)pwVar9;
    }
    std::wstring::_M_replace(pwVar6,(uint)pwVar9,uVar12,pwVar2,uVar21);
    return;
  }
  pcVar15 = *(code **)(puVar14 + 0x175e7c);
  pwVar6 = (wstring *)(*(int *)(puVar14 + 0x175248) + -0x25a4);
  iVar10 = *(int *)(puVar14 + 0x175100) + 0x72f0;
  (*pcVar15)();
  uVar21 = (**(code **)(pcVar15 + 0x17968c))(pwVar1);
  pwVar7 = *(wchar_t **)(pwVar6 + 4);
  pwVar2 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);
  if (pwVar2 <= pwVar7) {
    uVar3 = (int)pwVar9 - iVar10 >> 2;
    uVar12 = (int)pwVar7 - (int)pwVar2;
    if (uVar3 < (uint)((int)pwVar7 - (int)pwVar2)) {
      uVar12 = uVar3;
    }
    std::wstring::_M_replace(pwVar6,(uint)pwVar2,uVar12,pwVar1,uVar21);
    return;
  }
  pcVar16 = *(code **)(pcVar15 + 0x175e04);
  pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x1751d0) + -0x25a4);
  iVar10 = *(int *)(pcVar15 + 0x175088) + 0x72f0;
  (*pcVar16)();
  pwVar1 = *(wchar_t **)(pwVar6 + 4);
  pwVar9 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);
  if (pwVar1 < pwVar9) {
    pcVar15 = *(code **)(pcVar16 + 0x175d40);
    pwVar6 = (wstring *)(*(int *)(pcVar16 + 0x17510c) + -0x25a4);
    iVar10 = *(int *)(pcVar16 + 0x174fc4) + 0x72f0;
    (*pcVar15)();
    pcVar16 = pcVar15 + 0x17ceac;
    pwVar2 = *(wchar_t **)(pwVar6 + 4);
    pwVar7 = (wchar_t *)(iVar10 - *(int *)pwVar6 >> 2);
    if (pwVar7 <= pwVar2) {
      uVar21 = (int)pwVar9 - iVar10 >> 2;
      if ((uint)((int)pwVar2 - (int)pwVar7) <= uVar21) {
        uVar21 = (int)pwVar2 - (int)pwVar7;
      }
      std::wstring::_M_replace
                (pwVar6,(uint)pwVar7,uVar21,pwVar1,in_stack_ffffff70 - (int)pwVar1 >> 2);
      return;
    }
    pcVar17 = *(code **)(pcVar15 + 0x175cc4);
    pwVar6 = (wstring *)(*(int *)(pcVar15 + 0x175090) + -0x25a4);
    iVar10 = *(int *)(pcVar15 + 0x174f48) + 0x72f0;
    (*pcVar17)();
    pcVar19 = pcVar17 + 0x17ce28;
    pcVar4 = *(code **)(pwVar6 + 4);
    pcVar15 = (code *)(iVar10 - *(int *)pwVar6 >> 2);
    if (pcVar4 < pcVar15) {
      pcVar18 = *(code **)(pcVar17 + 0x175c40);
      pwVar6 = (wstring *)(*(int *)(pcVar17 + 0x17500c) + -0x25a4);
      pcVar11 = (code *)(*(int *)(pcVar17 + 0x174ec4) + 0x72f0);
      (*pcVar18)();
      pcVar20 = pcVar18 + 0x17cda4;
      pcVar5 = *(code **)(pcVar4 + 4);
      pcVar16 = pcVar19;
      pcVar17 = pcVar5;
      pcVar13 = (code *)(uint)(pcVar5 < pcVar19);
      if ((code *)(uint)(pcVar5 < pcVar19) == (code *)0x0) {
        pcVar17 = *(code **)(pwVar6 + 4);
        uVar21 = (int)pcVar5 - (int)pcVar19;
        if (uStack_cc < (uint)((int)pcVar5 - (int)pcVar19)) {
          uVar21 = uStack_cc;
        }
        pcVar16 = pcVar11;
        pcVar13 = pcVar17;
        if (pcVar11 <= pcVar17) {
          if (pcVar17 + -(int)pcVar11 <= pcVar15) {
            pcVar15 = pcVar17 + -(int)pcVar11;
          }
          std::wstring::_M_replace
                    (pwVar6,(uint)pcVar11,(uint)pcVar15,
                     (wchar_t *)(*(int *)pcVar4 + (int)pcVar19 * 4),uVar21);
          return;
        }
      }
      do {
        pcVar15 = (code *)(*(int *)(pcVar18 + 0x174e40) + 0x72f0);
        (**(code **)(pcVar18 + 0x175bbc))
                  (*(int *)(pcVar18 + 0x174f88) + -0x25a4,pcVar15,pcVar16,pcVar17,pcVar20);
        pcVar17 = pcVar13;
        pcVar16 = pcVar15;
        pcVar13 = pcVar17;
      } while( true );
    }
    uVar21 = (int)pwVar7 - iVar10 >> 2;
    if ((uint)((int)pcVar4 - (int)pcVar15) <= uVar21) {
      uVar21 = (int)pcVar4 - (int)pcVar15;
    }
    std::wstring::_M_replace(pwVar6,(uint)pcVar15,uVar21,pwVar2,(int)pcVar16 - (int)pwVar2 >> 2);
    return;
  }
  std::wstring::_M_replace(pwVar6,(uint)pwVar9,0,pwVar2,(uint)pwVar7);
  return;
}

