
/* std::string::insert(unsigned int, std::string const&) */

void __thiscall std::string::insert(string *this,uint param_1,string *param_2)

{
  uint uVar1;
  char *pcVar2;
  uint uVar3;
  string *psVar4;
  char *pcVar5;
  int iVar6;
  char *pcVar7;
  uint uVar8;
  char *pcVar9;
  undefined *puVar10;
  code *pcVar11;
  code *pcVar12;
  code *pcVar13;
  uint in_stack_ffffff80;
  
  pcVar2 = *(char **)(this + 4);
  if (param_1 <= pcVar2) {
    _M_replace(this,param_1,0,*(char **)param_2,*(uint *)(param_2 + 4));
    return;
  }
  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);
  pcVar5 = PTR_UINT_004c12dc + -0x3aec;
  puVar10 = PTR___throw_out_of_range_fmt_004c225c;
  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();
  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);
  if (pcVar5 <= *(char **)(psVar4 + 4)) {
    uVar3 = (int)*(char **)(psVar4 + 4) - (int)pcVar5;
    if (uVar3 <= param_1) {
      param_1 = uVar3;
    }
    _M_replace(psVar4,(uint)pcVar5,param_1,pcVar2,uVar1);
    return;
  }
  pcVar11 = *(code **)(puVar10 + 0x185cc8);
  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);
  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);
  (*pcVar11)();
  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);
  pcVar9 = *(char **)(psVar4 + 4);
  if (pcVar2 <= pcVar9) {
    _M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);
    return;
  }
  pcVar12 = *(code **)(pcVar11 + 0x185c10);
  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;
  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);
  (*pcVar12)();
  pcVar11 = pcVar12 + 0x18cb58;
  pcVar5 = *(char **)(psVar4 + 4);
  pcVar7 = (char *)(iVar6 - *(int *)psVar4);
  if (pcVar7 <= pcVar5) {
    uVar1 = (int)pcVar2 - iVar6;
    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {
      uVar1 = (int)pcVar5 - (int)pcVar7;
    }
    _M_replace(psVar4,(uint)pcVar7,uVar1,pcVar9,in_stack_ffffff80);
    return;
  }
  pcVar13 = *(code **)(pcVar12 + 0x185b74);
  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);
  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;
  (*pcVar13)();
  pcVar12 = pcVar13 + 0x18caec;
  pcVar2 = *(char **)(psVar4 + 4);
  pcVar9 = (char *)(iVar6 - *(int *)psVar4);
  if (pcVar9 <= pcVar2) {
    uVar1 = (int)pcVar7 - iVar6;
    if ((uint)((int)pcVar2 - (int)pcVar9) <= (uint)((int)pcVar7 - iVar6)) {
      uVar1 = (int)pcVar2 - (int)pcVar9;
    }
    _M_replace(psVar4,(uint)pcVar9,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);
    return;
  }
  pcVar11 = *(code **)(pcVar13 + 0x185b08);
  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);
  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;
  (*pcVar11)();
  pcVar13 = pcVar11 + 0x18ca74;
  pcVar5 = *(char **)(psVar4 + 4);
  pcVar7 = (char *)(iVar6 - *(int *)psVar4);
  if (pcVar7 <= pcVar5) {
    uVar1 = (int)pcVar9 - iVar6;
    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar9 - iVar6)) {
      uVar1 = (int)pcVar5 - (int)pcVar7;
    }
    _M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);
    return;
  }
  pcVar12 = *(code **)(pcVar11 + 0x185a90);
  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);
  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;
  (*pcVar12)();
  uVar1 = *(uint *)(psVar4 + 4);
  uVar3 = iVar6 - *(int *)psVar4;
  if (uVar3 <= uVar1) {
    uVar8 = (int)pcVar7 - iVar6;
    if (uVar1 - uVar3 <= (uint)((int)pcVar7 - iVar6)) {
      uVar8 = uVar1 - uVar3;
    }
    _M_replace(psVar4,uVar3,uVar8,pcVar5,(uint)pcVar13);
    return;
  }
  (**(code **)(pcVar12 + 0x185a18))
            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar3,
             uVar1,pcVar12 + 0x18c9fc);
  return;
}



void FUN_0033c52c(string *param_1,char *param_2,undefined4 *param_3)

{
  uint uVar1;
  char *pcVar2;
  char *pcVar3;
  string *psVar4;
  char *pcVar5;
  int iVar6;
  char *pcVar7;
  uint uVar8;
  uint uVar9;
  undefined *puVar10;
  code *pcVar11;
  code *pcVar12;
  code *pcVar13;
  uint in_stack_ffffff80;
  
  pcVar2 = *(char **)(param_1 + 4);
  if (param_2 <= pcVar2) {
    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);
    return;
  }
  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);
  pcVar5 = PTR_UINT_004c12dc + -0x3aec;
  puVar10 = PTR___throw_out_of_range_fmt_004c225c;
  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();
  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);
  if (pcVar5 <= *(char **)(psVar4 + 4)) {
    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;
    if (pcVar3 <= param_2) {
      param_2 = pcVar3;
    }
    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);
    return;
  }
  pcVar11 = *(code **)(puVar10 + 0x185cc8);
  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);
  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);
  (*pcVar11)();
  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);
  pcVar3 = *(char **)(psVar4 + 4);
  if (pcVar2 <= pcVar3) {
    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);
    return;
  }
  pcVar12 = *(code **)(pcVar11 + 0x185c10);
  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;
  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);
  (*pcVar12)();
  pcVar11 = pcVar12 + 0x18cb58;
  pcVar5 = *(char **)(psVar4 + 4);
  pcVar7 = (char *)(iVar6 - *(int *)psVar4);
  if (pcVar7 <= pcVar5) {
    uVar1 = (int)pcVar2 - iVar6;
    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {
      uVar1 = (int)pcVar5 - (int)pcVar7;
    }
    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);
    return;
  }
  pcVar13 = *(code **)(pcVar12 + 0x185b74);
  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);
  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;
  (*pcVar13)();
  pcVar12 = pcVar13 + 0x18caec;
  pcVar2 = *(char **)(psVar4 + 4);
  pcVar3 = (char *)(iVar6 - *(int *)psVar4);
  if (pcVar3 <= pcVar2) {
    uVar1 = (int)pcVar7 - iVar6;
    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {
      uVar1 = (int)pcVar2 - (int)pcVar3;
    }
    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);
    return;
  }
  pcVar11 = *(code **)(pcVar13 + 0x185b08);
  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);
  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;
  (*pcVar11)();
  pcVar13 = pcVar11 + 0x18ca74;
  pcVar5 = *(char **)(psVar4 + 4);
  pcVar7 = (char *)(iVar6 - *(int *)psVar4);
  if (pcVar7 <= pcVar5) {
    uVar1 = (int)pcVar3 - iVar6;
    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {
      uVar1 = (int)pcVar5 - (int)pcVar7;
    }
    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);
    return;
  }
  pcVar12 = *(code **)(pcVar11 + 0x185a90);
  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);
  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;
  (*pcVar12)();
  uVar1 = *(uint *)(psVar4 + 4);
  uVar8 = iVar6 - *(int *)psVar4;
  if (uVar8 <= uVar1) {
    uVar9 = (int)pcVar7 - iVar6;
    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {
      uVar9 = uVar1 - uVar8;
    }
    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);
    return;
  }
  (**(code **)(pcVar12 + 0x185a18))
            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,
             uVar1,pcVar12 + 0x18c9fc);
  return;
}


lui gp,0x19
addiu gp,gp,-0x32ec
addu gp,gp,t9
addiu sp,sp,-0x28
sw gp,0x18(sp)
sw ra,0x24(sp)
lw v1,0x4(a0)
lw a3,0x0(a2)
sltu t0,v1,a1
bne t0,zero,0x0033c574
_lw t1,0x4(a2)
lw t9,-0x71a0(gp)
or a2,zero,zero
bal 0x0033bed4
_sw t1,0x10(sp)
lw ra,0x24(sp)
jr ra
_addiu sp,sp,0x28
or a2,a1,zero
lw a0,-0x77f0(gp)
lw a1,-0x7f64(gp)
or a3,v1,zero
lw t9,-0x6fe4(gp)
addiu a0,a0,-0xe00
jalr t9
_addiu a1,a1,-0x3aec
(translation_unit "void FUN_0033c52c(string *param_1,char *param_2,undefined4 *param_3)\n\n{\n  uint uVar1;\n  char *pcVar2;\n  char *pcVar3;\n  string *psVar4;\n  char *pcVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  code *pcVar12;\n  code *pcVar13;\n  uint in_stack_ffffff80;\n  \n  pcVar2 = *(char **)(param_1 + 4);\n  if (param_2 <= pcVar2) {\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  pcVar5 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);\n  if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185cc8);\n  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);\n  (*pcVar11)();\n  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);\n  pcVar3 = *(char **)(psVar4 + 4);\n  if (pcVar2 <= pcVar3) {\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185c10);\n  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);\n  (*pcVar12)();\n  pcVar11 = pcVar12 + 0x18cb58;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }\n  pcVar13 = *(code **)(pcVar12 + 0x185b74);\n  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);\n  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;\n  (*pcVar13)();\n  pcVar12 = pcVar13 + 0x18caec;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar3 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar3 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }\n  pcVar11 = *(code **)(pcVar13 + 0x185b08);\n  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);\n  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;\n  (*pcVar11)();\n  pcVar13 = pcVar11 + 0x18ca74;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185a90);\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);\n  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;\n  (*pcVar12)();\n  uVar1 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar6 - *(int *)psVar4;\n  if (uVar8 <= uVar1) {\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }\n  (**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc);\n  return;\n}\n\n" (function_definition "void FUN_0033c52c(string *param_1,char *param_2,undefined4 *param_3)\n\n{\n  uint uVar1;\n  char *pcVar2;\n  char *pcVar3;\n  string *psVar4;\n  char *pcVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  code *pcVar12;\n  code *pcVar13;\n  uint in_stack_ffffff80;\n  \n  pcVar2 = *(char **)(param_1 + 4);\n  if (param_2 <= pcVar2) {\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  pcVar5 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);\n  if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185cc8);\n  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);\n  (*pcVar11)();\n  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);\n  pcVar3 = *(char **)(psVar4 + 4);\n  if (pcVar2 <= pcVar3) {\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185c10);\n  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);\n  (*pcVar12)();\n  pcVar11 = pcVar12 + 0x18cb58;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }\n  pcVar13 = *(code **)(pcVar12 + 0x185b74);\n  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);\n  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;\n  (*pcVar13)();\n  pcVar12 = pcVar13 + 0x18caec;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar3 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar3 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }\n  pcVar11 = *(code **)(pcVar13 + 0x185b08);\n  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);\n  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;\n  (*pcVar11)();\n  pcVar13 = pcVar11 + 0x18ca74;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185a90);\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);\n  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;\n  (*pcVar12)();\n  uVar1 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar6 - *(int *)psVar4;\n  if (uVar8 <= uVar1) {\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }\n  (**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc);\n  return;\n}" primitive_type (function_declarator "FUN_0033c52c(string *param_1,char *param_2,undefined4 *param_3)" identifier (parameter_list "(string *param_1,char *param_2,undefined4 *param_3)" ( (parameter_declaration "string *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  char *pcVar2;\n  char *pcVar3;\n  string *psVar4;\n  char *pcVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  code *pcVar12;\n  code *pcVar13;\n  uint in_stack_ffffff80;\n  \n  pcVar2 = *(char **)(param_1 + 4);\n  if (param_2 <= pcVar2) {\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  pcVar5 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);\n  if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185cc8);\n  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);\n  (*pcVar11)();\n  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);\n  pcVar3 = *(char **)(psVar4 + 4);\n  if (pcVar2 <= pcVar3) {\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185c10);\n  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);\n  (*pcVar12)();\n  pcVar11 = pcVar12 + 0x18cb58;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }\n  pcVar13 = *(code **)(pcVar12 + 0x185b74);\n  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);\n  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;\n  (*pcVar13)();\n  pcVar12 = pcVar13 + 0x18caec;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar3 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar3 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }\n  pcVar11 = *(code **)(pcVar13 + 0x185b08);\n  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);\n  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;\n  (*pcVar11)();\n  pcVar13 = pcVar11 + 0x18ca74;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185a90);\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);\n  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;\n  (*pcVar12)();\n  uVar1 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar6 - *(int *)psVar4;\n  if (uVar8 <= uVar1) {\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }\n  (**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "string *psVar4;" type_identifier (pointer_declarator "*psVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "uint in_stack_ffffff80;" type_identifier identifier ;) (expression_statement "pcVar2 = *(char **)(param_1 + 4);" (assignment_expression "pcVar2 = *(char **)(param_1 + 4)" identifier = (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (param_2 <= pcVar2) {\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }" if (parenthesized_expression "(param_2 <= pcVar2)" ( (binary_expression "param_2 <= pcVar2" identifier <= identifier) )) (compound_statement "{\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }" { (labeled_statement "std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);" (call_expression "_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1])" identifier (argument_list "(param_1,(uint)param_2,0,(char *)*param_3,param_3[1])" ( identifier , (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) , number_literal , (cast_expression "(char *)*param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)) , (subscript_expression "param_3[1]" identifier [ number_literal ]) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);" (assignment_expression "psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00)" identifier = (cast_expression "(string *)(PTR_s__s_004c1a50 + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s__s_004c1a50 + -0xe00)" ( (binary_expression "PTR_s__s_004c1a50 + -0xe00" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = PTR_UINT_004c12dc + -0x3aec;" (assignment_expression "pcVar5 = PTR_UINT_004c12dc + -0x3aec" identifier = (binary_expression "PTR_UINT_004c12dc + -0x3aec" identifier + number_literal)) ;) (expression_statement "puVar10 = PTR___throw_out_of_range_fmt_004c225c;" (assignment_expression "puVar10 = PTR___throw_out_of_range_fmt_004c225c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___throw_out_of_range_fmt_004c225c)();" (call_expression "(*(code *)PTR___throw_out_of_range_fmt_004c225c)()" (parenthesized_expression "(*(code *)PTR___throw_out_of_range_fmt_004c225c)" ( (pointer_expression "*(code *)PTR___throw_out_of_range_fmt_004c225c" * (cast_expression "(code *)PTR___throw_out_of_range_fmt_004c225c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);" (assignment_expression "uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2)" identifier = (call_expression "(**(code **)(puVar10 + 0x189608))(pcVar2)" (parenthesized_expression "(**(code **)(puVar10 + 0x189608))" ( (pointer_expression "**(code **)(puVar10 + 0x189608)" * (pointer_expression "*(code **)(puVar10 + 0x189608)" * (cast_expression "(code **)(puVar10 + 0x189608)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x189608)" ( (binary_expression "puVar10 + 0x189608" identifier + number_literal) ))))) )) (argument_list "(pcVar2)" ( identifier )))) ;) (if_statement "if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }" if (parenthesized_expression "(pcVar5 <= *(char **)(psVar4 + 4))" ( (binary_expression "pcVar5 <= *(char **)(psVar4 + 4)" identifier <= (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }" { (expression_statement "pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;" (assignment_expression "pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5" identifier = (binary_expression "*(char **)(psVar4 + 4) + -(int)pcVar5" (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) )))) + (unary_expression "-(int)pcVar5" - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (if_statement "if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }" if (parenthesized_expression "(pcVar3 <= param_2)" ( (binary_expression "pcVar3 <= param_2" identifier <= identifier) )) (compound_statement "{\n      param_2 = pcVar3;\n    }" { (expression_statement "param_2 = pcVar3;" (assignment_expression "param_2 = pcVar3" identifier = identifier) ;) })) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);" (call_expression "_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1)" identifier (argument_list "(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1)" ( identifier , (cast_expression "(uint)pcVar5" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x185cc8);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x185cc8)" identifier = (pointer_expression "*(code **)(puVar10 + 0x185cc8)" * (cast_expression "(code **)(puVar10 + 0x185cc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x185cc8)" ( (binary_expression "puVar10 + 0x185cc8" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);" (assignment_expression "pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec)" identifier = (cast_expression "(char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x184d48) - 0x3aec)" ( (binary_expression "*(int *)(puVar10 + 0x184d48) - 0x3aec" (pointer_expression "*(int *)(puVar10 + 0x184d48)" * (cast_expression "(int *)(puVar10 + 0x184d48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x184d48)" ( (binary_expression "puVar10 + 0x184d48" identifier + number_literal) )))) - number_literal) )))) ;) (expression_statement "psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x1854bc) + -0xe00)" ( (binary_expression "*(int *)(puVar10 + 0x1854bc) + -0xe00" (pointer_expression "*(int *)(puVar10 + 0x1854bc)" * (cast_expression "(int *)(puVar10 + 0x1854bc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x1854bc)" ( (binary_expression "puVar10 + 0x1854bc" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);" (assignment_expression "uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5)" identifier = (call_expression "(**(code **)(pcVar11 + 0x189550))(pcVar5)" (parenthesized_expression "(**(code **)(pcVar11 + 0x189550))" ( (pointer_expression "**(code **)(pcVar11 + 0x189550)" * (pointer_expression "*(code **)(pcVar11 + 0x189550)" * (cast_expression "(code **)(pcVar11 + 0x189550)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x189550)" ( (binary_expression "pcVar11 + 0x189550" identifier + number_literal) ))))) )) (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "pcVar3 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar3 = *(char **)(psVar4 + 4)" identifier = (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (if_statement "if (pcVar2 <= pcVar3) {\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }" if (parenthesized_expression "(pcVar2 <= pcVar3)" ( (binary_expression "pcVar2 <= pcVar3" identifier <= identifier) )) (compound_statement "{\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }" { (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);" (call_expression "_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1)" identifier (argument_list "(psVar4,(uint)pcVar2,0,pcVar5,uVar1)" ( identifier , (cast_expression "(uint)pcVar2" ( (type_descriptor "uint" type_identifier) ) identifier) , number_literal , identifier , identifier ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar12 = *(code **)(pcVar11 + 0x185c10);" (assignment_expression "pcVar12 = *(code **)(pcVar11 + 0x185c10)" identifier = (pointer_expression "*(code **)(pcVar11 + 0x185c10)" * (cast_expression "(code **)(pcVar11 + 0x185c10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x185c10)" ( (binary_expression "pcVar11 + 0x185c10" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec" identifier = (binary_expression "*(int *)(pcVar11 + 0x184c90) + -0x3aec" (pointer_expression "*(int *)(pcVar11 + 0x184c90)" * (cast_expression "(int *)(pcVar11 + 0x184c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x184c90)" ( (binary_expression "pcVar11 + 0x184c90" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(pcVar11 + 0x185404) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar11 + 0x185404) + -0xe00)" ( (binary_expression "*(int *)(pcVar11 + 0x185404) + -0xe00" (pointer_expression "*(int *)(pcVar11 + 0x185404)" * (cast_expression "(int *)(pcVar11 + 0x185404)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x185404)" ( (binary_expression "pcVar11 + 0x185404" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar11 = pcVar12 + 0x18cb58;" (assignment_expression "pcVar11 = pcVar12 + 0x18cb58" identifier = (binary_expression "pcVar12 + 0x18cb58" identifier + number_literal)) ;) (expression_statement "pcVar5 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar5 = *(char **)(psVar4 + 4)" identifier = (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar7 = (char *)(iVar6 - *(int *)psVar4);" (assignment_expression "pcVar7 = (char *)(iVar6 - *(int *)psVar4)" identifier = (cast_expression "(char *)(iVar6 - *(int *)psVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 - *(int *)psVar4)" ( (binary_expression "iVar6 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (if_statement "if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }" if (parenthesized_expression "(pcVar7 <= pcVar5)" ( (binary_expression "pcVar7 <= pcVar5" identifier <= identifier) )) (compound_statement "{\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }" { (expression_statement "uVar1 = (int)pcVar2 - iVar6;" (assignment_expression "uVar1 = (int)pcVar2 - iVar6" identifier = (binary_expression "(int)pcVar2 - iVar6" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" if (parenthesized_expression "((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6))" ( (binary_expression "(uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)" (call_expression "(uint)((int)pcVar5 - (int)pcVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar5 - (int)pcVar7)" ( (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)((int)pcVar2 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar2 - iVar6)" ( (binary_expression "(int)pcVar2 - iVar6" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" { (expression_statement "uVar1 = (int)pcVar5 - (int)pcVar7;" (assignment_expression "uVar1 = (int)pcVar5 - (int)pcVar7" identifier = (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);" (call_expression "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80)" identifier (argument_list "(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80)" ( identifier , (cast_expression "(uint)pcVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , identifier ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar13 = *(code **)(pcVar12 + 0x185b74);" (assignment_expression "pcVar13 = *(code **)(pcVar12 + 0x185b74)" identifier = (pointer_expression "*(code **)(pcVar12 + 0x185b74)" * (cast_expression "(code **)(pcVar12 + 0x185b74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x185b74)" ( (binary_expression "pcVar12 + 0x185b74" identifier + number_literal) ))))) ;) (expression_statement "psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(pcVar12 + 0x185368) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar12 + 0x185368) + -0xe00)" ( (binary_expression "*(int *)(pcVar12 + 0x185368) + -0xe00" (pointer_expression "*(int *)(pcVar12 + 0x185368)" * (cast_expression "(int *)(pcVar12 + 0x185368)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 0x185368)" ( (binary_expression "pcVar12 + 0x185368" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec" identifier = (binary_expression "*(int *)(pcVar12 + 0x184bf4) + -0x3aec" (pointer_expression "*(int *)(pcVar12 + 0x184bf4)" * (cast_expression "(int *)(pcVar12 + 0x184bf4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 0x184bf4)" ( (binary_expression "pcVar12 + 0x184bf4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar13)();" (call_expression "(*pcVar13)()" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar12 = pcVar13 + 0x18caec;" (assignment_expression "pcVar12 = pcVar13 + 0x18caec" identifier = (binary_expression "pcVar13 + 0x18caec" identifier + number_literal)) ;) (expression_statement "pcVar2 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar2 = *(char **)(psVar4 + 4)" identifier = (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = (char *)(iVar6 - *(int *)psVar4);" (assignment_expression "pcVar3 = (char *)(iVar6 - *(int *)psVar4)" identifier = (cast_expression "(char *)(iVar6 - *(int *)psVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 - *(int *)psVar4)" ( (binary_expression "iVar6 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (if_statement "if (pcVar3 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }" if (parenthesized_expression "(pcVar3 <= pcVar2)" ( (binary_expression "pcVar3 <= pcVar2" identifier <= identifier) )) (compound_statement "{\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }" { (expression_statement "uVar1 = (int)pcVar7 - iVar6;" (assignment_expression "uVar1 = (int)pcVar7 - iVar6" identifier = (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }" if (parenthesized_expression "((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6))" ( (binary_expression "(uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)" (call_expression "(uint)((int)pcVar2 - (int)pcVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar2 - (int)pcVar3)" ( (binary_expression "(int)pcVar2 - (int)pcVar3" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)((int)pcVar7 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar7 - iVar6)" ( (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }" { (expression_statement "uVar1 = (int)pcVar2 - (int)pcVar3;" (assignment_expression "uVar1 = (int)pcVar2 - (int)pcVar3" identifier = (binary_expression "(int)pcVar2 - (int)pcVar3" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);" (call_expression "_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5)" identifier (argument_list "(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5)" ( identifier , (cast_expression "(uint)pcVar3" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "(int)pcVar11 - (int)pcVar5" (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar11 = *(code **)(pcVar13 + 0x185b08);" (assignment_expression "pcVar11 = *(code **)(pcVar13 + 0x185b08)" identifier = (pointer_expression "*(code **)(pcVar13 + 0x185b08)" * (cast_expression "(code **)(pcVar13 + 0x185b08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar13 + 0x185b08)" ( (binary_expression "pcVar13 + 0x185b08" identifier + number_literal) ))))) ;) (expression_statement "psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar13 + 0x1852fc) + -0xe00)" ( (binary_expression "*(int *)(pcVar13 + 0x1852fc) + -0xe00" (pointer_expression "*(int *)(pcVar13 + 0x1852fc)" * (cast_expression "(int *)(pcVar13 + 0x1852fc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x1852fc)" ( (binary_expression "pcVar13 + 0x1852fc" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec" identifier = (binary_expression "*(int *)(pcVar13 + 0x184b88) + -0x3aec" (pointer_expression "*(int *)(pcVar13 + 0x184b88)" * (cast_expression "(int *)(pcVar13 + 0x184b88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x184b88)" ( (binary_expression "pcVar13 + 0x184b88" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar13 = pcVar11 + 0x18ca74;" (assignment_expression "pcVar13 = pcVar11 + 0x18ca74" identifier = (binary_expression "pcVar11 + 0x18ca74" identifier + number_literal)) ;) (expression_statement "pcVar5 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar5 = *(char **)(psVar4 + 4)" identifier = (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar7 = (char *)(iVar6 - *(int *)psVar4);" (assignment_expression "pcVar7 = (char *)(iVar6 - *(int *)psVar4)" identifier = (cast_expression "(char *)(iVar6 - *(int *)psVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 - *(int *)psVar4)" ( (binary_expression "iVar6 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (if_statement "if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }" if (parenthesized_expression "(pcVar7 <= pcVar5)" ( (binary_expression "pcVar7 <= pcVar5" identifier <= identifier) )) (compound_statement "{\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }" { (expression_statement "uVar1 = (int)pcVar3 - iVar6;" (assignment_expression "uVar1 = (int)pcVar3 - iVar6" identifier = (binary_expression "(int)pcVar3 - iVar6" (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" if (parenthesized_expression "((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6))" ( (binary_expression "(uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)" (call_expression "(uint)((int)pcVar5 - (int)pcVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar5 - (int)pcVar7)" ( (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)((int)pcVar3 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar3 - iVar6)" ( (binary_expression "(int)pcVar3 - iVar6" (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" { (expression_statement "uVar1 = (int)pcVar5 - (int)pcVar7;" (assignment_expression "uVar1 = (int)pcVar5 - (int)pcVar7" identifier = (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);" (call_expression "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2)" identifier (argument_list "(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2)" ( identifier , (cast_expression "(uint)pcVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "(int)pcVar12 - (int)pcVar2" (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar12 = *(code **)(pcVar11 + 0x185a90);" (assignment_expression "pcVar12 = *(code **)(pcVar11 + 0x185a90)" identifier = (pointer_expression "*(code **)(pcVar11 + 0x185a90)" * (cast_expression "(code **)(pcVar11 + 0x185a90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x185a90)" ( (binary_expression "pcVar11 + 0x185a90" identifier + number_literal) ))))) ;) (expression_statement "psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(pcVar11 + 0x185284) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar11 + 0x185284) + -0xe00)" ( (binary_expression "*(int *)(pcVar11 + 0x185284) + -0xe00" (pointer_expression "*(int *)(pcVar11 + 0x185284)" * (cast_expression "(int *)(pcVar11 + 0x185284)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x185284)" ( (binary_expression "pcVar11 + 0x185284" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec" identifier = (binary_expression "*(int *)(pcVar11 + 0x184b10) + -0x3aec" (pointer_expression "*(int *)(pcVar11 + 0x184b10)" * (cast_expression "(int *)(pcVar11 + 0x184b10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x184b10)" ( (binary_expression "pcVar11 + 0x184b10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar1 = *(uint *)(psVar4 + 4);" (assignment_expression "uVar1 = *(uint *)(psVar4 + 4)" identifier = (pointer_expression "*(uint *)(psVar4 + 4)" * (cast_expression "(uint *)(psVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = iVar6 - *(int *)psVar4;" (assignment_expression "uVar8 = iVar6 - *(int *)psVar4" identifier = (binary_expression "iVar6 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (if_statement "if (uVar8 <= uVar1) {\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }" if (parenthesized_expression "(uVar8 <= uVar1)" ( (binary_expression "uVar8 <= uVar1" identifier <= identifier) )) (compound_statement "{\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }" { (expression_statement "uVar9 = (int)pcVar7 - iVar6;" (assignment_expression "uVar9 = (int)pcVar7 - iVar6" identifier = (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }" if (parenthesized_expression "(uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6))" ( (binary_expression "uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)" (binary_expression "uVar1 - uVar8" identifier - identifier) <= (call_expression "(uint)((int)pcVar7 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar7 - iVar6)" ( (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar9 = uVar1 - uVar8;\n    }" { (expression_statement "uVar9 = uVar1 - uVar8;" (assignment_expression "uVar9 = uVar1 - uVar8" identifier = (binary_expression "uVar1 - uVar8" identifier - identifier)) ;) })) (labeled_statement "std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);" (call_expression "_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13)" identifier (argument_list "(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13)" ( identifier , identifier , identifier , identifier , (cast_expression "(uint)pcVar13" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "(**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc);" (call_expression "(**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc)" (parenthesized_expression "(**(code **)(pcVar12 + 0x185a18))" ( (pointer_expression "**(code **)(pcVar12 + 0x185a18)" * (pointer_expression "*(code **)(pcVar12 + 0x185a18)" * (cast_expression "(code **)(pcVar12 + 0x185a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x185a18)" ( (binary_expression "pcVar12 + 0x185a18" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc)" ( (binary_expression "*(int *)(pcVar12 + 0x18520c) + -0xe00" (pointer_expression "*(int *)(pcVar12 + 0x18520c)" * (cast_expression "(int *)(pcVar12 + 0x18520c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 0x18520c)" ( (binary_expression "pcVar12 + 0x18520c" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar12 + 0x184a98) + -0x3aec" (pointer_expression "*(int *)(pcVar12 + 0x184a98)" * (cast_expression "(int *)(pcVar12 + 0x184a98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 0x184a98)" ( (binary_expression "pcVar12 + 0x184a98" identifier + number_literal) )))) + number_literal) , identifier , identifier , (binary_expression "pcVar12 + 0x18c9fc" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* std::string::insert(unsigned int, std::string const&) */\n\nvoid __thiscall std::string::insert(string *this,uint param_1,string *param_2)\n\n{\n  uint uVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  char *pcVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  code *pcVar12;\n  code *pcVar13;\n  uint in_stack_ffffff80;\n  \n  pcVar2 = *(char **)(this + 4);\n  if (param_1 <= pcVar2) {\n    _M_replace(this,param_1,0,*(char **)param_2,*(uint *)(param_2 + 4));\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  pcVar5 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);\n  if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    uVar3 = (int)*(char **)(psVar4 + 4) - (int)pcVar5;\n    if (uVar3 <= param_1) {\n      param_1 = uVar3;\n    }\n    _M_replace(psVar4,(uint)pcVar5,param_1,pcVar2,uVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185cc8);\n  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);\n  (*pcVar11)();\n  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);\n  pcVar9 = *(char **)(psVar4 + 4);\n  if (pcVar2 <= pcVar9) {\n    _M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185c10);\n  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);\n  (*pcVar12)();\n  pcVar11 = pcVar12 + 0x18cb58;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar1,pcVar9,in_stack_ffffff80);\n    return;\n  }\n  pcVar13 = *(code **)(pcVar12 + 0x185b74);\n  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);\n  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;\n  (*pcVar13)();\n  pcVar12 = pcVar13 + 0x18caec;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar9 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar9 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar9) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar9;\n    }\n    _M_replace(psVar4,(uint)pcVar9,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }\n  pcVar11 = *(code **)(pcVar13 + 0x185b08);\n  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);\n  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;\n  (*pcVar11)();\n  pcVar13 = pcVar11 + 0x18ca74;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar9 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar9 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185a90);\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);\n  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;\n  (*pcVar12)();\n  uVar1 = *(uint *)(psVar4 + 4);\n  uVar3 = iVar6 - *(int *)psVar4;\n  if (uVar3 <= uVar1) {\n    uVar8 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar3 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar8 = uVar1 - uVar3;\n    }\n    _M_replace(psVar4,uVar3,uVar8,pcVar5,(uint)pcVar13);\n    return;\n  }\n  (**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar3,\n             uVar1,pcVar12 + 0x18c9fc);\n  return;\n}\n\n" comment (function_definition "void __thiscall std::string::insert(string *this,uint param_1,string *param_2)\n\n{\n  uint uVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  char *pcVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  code *pcVar12;\n  code *pcVar13;\n  uint in_stack_ffffff80;\n  \n  pcVar2 = *(char **)(this + 4);\n  if (param_1 <= pcVar2) {\n    _M_replace(this,param_1,0,*(char **)param_2,*(uint *)(param_2 + 4));\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  pcVar5 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);\n  if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    uVar3 = (int)*(char **)(psVar4 + 4) - (int)pcVar5;\n    if (uVar3 <= param_1) {\n      param_1 = uVar3;\n    }\n    _M_replace(psVar4,(uint)pcVar5,param_1,pcVar2,uVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185cc8);\n  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);\n  (*pcVar11)();\n  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);\n  pcVar9 = *(char **)(psVar4 + 4);\n  if (pcVar2 <= pcVar9) {\n    _M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185c10);\n  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);\n  (*pcVar12)();\n  pcVar11 = pcVar12 + 0x18cb58;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar1,pcVar9,in_stack_ffffff80);\n    return;\n  }\n  pcVar13 = *(code **)(pcVar12 + 0x185b74);\n  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);\n  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;\n  (*pcVar13)();\n  pcVar12 = pcVar13 + 0x18caec;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar9 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar9 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar9) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar9;\n    }\n    _M_replace(psVar4,(uint)pcVar9,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }\n  pcVar11 = *(code **)(pcVar13 + 0x185b08);\n  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);\n  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;\n  (*pcVar11)();\n  pcVar13 = pcVar11 + 0x18ca74;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar9 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar9 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185a90);\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);\n  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;\n  (*pcVar12)();\n  uVar1 = *(uint *)(psVar4 + 4);\n  uVar3 = iVar6 - *(int *)psVar4;\n  if (uVar3 <= uVar1) {\n    uVar8 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar3 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar8 = uVar1 - uVar3;\n    }\n    _M_replace(psVar4,uVar3,uVar8,pcVar5,(uint)pcVar13);\n    return;\n  }\n  (**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar3,\n             uVar1,pcVar12 + 0x18c9fc);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::string::" identifier : : identifier : :) (function_declarator "insert(string *this,uint param_1,string *param_2)" identifier (parameter_list "(string *this,uint param_1,string *param_2)" ( (parameter_declaration "string *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "string *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  char *pcVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  code *pcVar12;\n  code *pcVar13;\n  uint in_stack_ffffff80;\n  \n  pcVar2 = *(char **)(this + 4);\n  if (param_1 <= pcVar2) {\n    _M_replace(this,param_1,0,*(char **)param_2,*(uint *)(param_2 + 4));\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  pcVar5 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);\n  if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    uVar3 = (int)*(char **)(psVar4 + 4) - (int)pcVar5;\n    if (uVar3 <= param_1) {\n      param_1 = uVar3;\n    }\n    _M_replace(psVar4,(uint)pcVar5,param_1,pcVar2,uVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185cc8);\n  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);\n  (*pcVar11)();\n  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);\n  pcVar9 = *(char **)(psVar4 + 4);\n  if (pcVar2 <= pcVar9) {\n    _M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185c10);\n  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);\n  (*pcVar12)();\n  pcVar11 = pcVar12 + 0x18cb58;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar1,pcVar9,in_stack_ffffff80);\n    return;\n  }\n  pcVar13 = *(code **)(pcVar12 + 0x185b74);\n  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);\n  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;\n  (*pcVar13)();\n  pcVar12 = pcVar13 + 0x18caec;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar9 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar9 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar9) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar9;\n    }\n    _M_replace(psVar4,(uint)pcVar9,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }\n  pcVar11 = *(code **)(pcVar13 + 0x185b08);\n  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);\n  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;\n  (*pcVar11)();\n  pcVar13 = pcVar11 + 0x18ca74;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar9 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar9 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185a90);\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);\n  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;\n  (*pcVar12)();\n  uVar1 = *(uint *)(psVar4 + 4);\n  uVar3 = iVar6 - *(int *)psVar4;\n  if (uVar3 <= uVar1) {\n    uVar8 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar3 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar8 = uVar1 - uVar3;\n    }\n    _M_replace(psVar4,uVar3,uVar8,pcVar5,(uint)pcVar13);\n    return;\n  }\n  (**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar3,\n             uVar1,pcVar12 + 0x18c9fc);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "string *psVar4;" type_identifier (pointer_declarator "*psVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "uint in_stack_ffffff80;" type_identifier identifier ;) (expression_statement "pcVar2 = *(char **)(this + 4);" (assignment_expression "pcVar2 = *(char **)(this + 4)" identifier = (pointer_expression "*(char **)(this + 4)" * (cast_expression "(char **)(this + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (if_statement "if (param_1 <= pcVar2) {\n    _M_replace(this,param_1,0,*(char **)param_2,*(uint *)(param_2 + 4));\n    return;\n  }" if (parenthesized_expression "(param_1 <= pcVar2)" ( (binary_expression "param_1 <= pcVar2" identifier <= identifier) )) (compound_statement "{\n    _M_replace(this,param_1,0,*(char **)param_2,*(uint *)(param_2 + 4));\n    return;\n  }" { (expression_statement "_M_replace(this,param_1,0,*(char **)param_2,*(uint *)(param_2 + 4));" (call_expression "_M_replace(this,param_1,0,*(char **)param_2,*(uint *)(param_2 + 4))" identifier (argument_list "(this,param_1,0,*(char **)param_2,*(uint *)(param_2 + 4))" ( identifier , identifier , number_literal , (pointer_expression "*(char **)param_2" * (cast_expression "(char **)param_2" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) ))) ;) (return_statement "return;" return ;) })) (expression_statement "psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);" (assignment_expression "psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00)" identifier = (cast_expression "(string *)(PTR_s__s_004c1a50 + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s__s_004c1a50 + -0xe00)" ( (binary_expression "PTR_s__s_004c1a50 + -0xe00" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = PTR_UINT_004c12dc + -0x3aec;" (assignment_expression "pcVar5 = PTR_UINT_004c12dc + -0x3aec" identifier = (binary_expression "PTR_UINT_004c12dc + -0x3aec" identifier + number_literal)) ;) (expression_statement "puVar10 = PTR___throw_out_of_range_fmt_004c225c;" (assignment_expression "puVar10 = PTR___throw_out_of_range_fmt_004c225c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___throw_out_of_range_fmt_004c225c)();" (call_expression "(*(code *)PTR___throw_out_of_range_fmt_004c225c)()" (parenthesized_expression "(*(code *)PTR___throw_out_of_range_fmt_004c225c)" ( (pointer_expression "*(code *)PTR___throw_out_of_range_fmt_004c225c" * (cast_expression "(code *)PTR___throw_out_of_range_fmt_004c225c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);" (assignment_expression "uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2)" identifier = (call_expression "(**(code **)(puVar10 + 0x189608))(pcVar2)" (parenthesized_expression "(**(code **)(puVar10 + 0x189608))" ( (pointer_expression "**(code **)(puVar10 + 0x189608)" * (pointer_expression "*(code **)(puVar10 + 0x189608)" * (cast_expression "(code **)(puVar10 + 0x189608)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x189608)" ( (binary_expression "puVar10 + 0x189608" identifier + number_literal) ))))) )) (argument_list "(pcVar2)" ( identifier )))) ;) (if_statement "if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    uVar3 = (int)*(char **)(psVar4 + 4) - (int)pcVar5;\n    if (uVar3 <= param_1) {\n      param_1 = uVar3;\n    }\n    _M_replace(psVar4,(uint)pcVar5,param_1,pcVar2,uVar1);\n    return;\n  }" if (parenthesized_expression "(pcVar5 <= *(char **)(psVar4 + 4))" ( (binary_expression "pcVar5 <= *(char **)(psVar4 + 4)" identifier <= (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar3 = (int)*(char **)(psVar4 + 4) - (int)pcVar5;\n    if (uVar3 <= param_1) {\n      param_1 = uVar3;\n    }\n    _M_replace(psVar4,(uint)pcVar5,param_1,pcVar2,uVar1);\n    return;\n  }" { (expression_statement "uVar3 = (int)*(char **)(psVar4 + 4) - (int)pcVar5;" (assignment_expression "uVar3 = (int)*(char **)(psVar4 + 4) - (int)pcVar5" identifier = (binary_expression "(int)*(char **)(psVar4 + 4) - (int)pcVar5" (cast_expression "(int)*(char **)(psVar4 + 4)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uVar3 <= param_1) {\n      param_1 = uVar3;\n    }" if (parenthesized_expression "(uVar3 <= param_1)" ( (binary_expression "uVar3 <= param_1" identifier <= identifier) )) (compound_statement "{\n      param_1 = uVar3;\n    }" { (expression_statement "param_1 = uVar3;" (assignment_expression "param_1 = uVar3" identifier = identifier) ;) })) (expression_statement "_M_replace(psVar4,(uint)pcVar5,param_1,pcVar2,uVar1);" (call_expression "_M_replace(psVar4,(uint)pcVar5,param_1,pcVar2,uVar1)" identifier (argument_list "(psVar4,(uint)pcVar5,param_1,pcVar2,uVar1)" ( identifier , (cast_expression "(uint)pcVar5" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x185cc8);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x185cc8)" identifier = (pointer_expression "*(code **)(puVar10 + 0x185cc8)" * (cast_expression "(code **)(puVar10 + 0x185cc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x185cc8)" ( (binary_expression "puVar10 + 0x185cc8" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);" (assignment_expression "pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec)" identifier = (cast_expression "(char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x184d48) - 0x3aec)" ( (binary_expression "*(int *)(puVar10 + 0x184d48) - 0x3aec" (pointer_expression "*(int *)(puVar10 + 0x184d48)" * (cast_expression "(int *)(puVar10 + 0x184d48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x184d48)" ( (binary_expression "puVar10 + 0x184d48" identifier + number_literal) )))) - number_literal) )))) ;) (expression_statement "psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x1854bc) + -0xe00)" ( (binary_expression "*(int *)(puVar10 + 0x1854bc) + -0xe00" (pointer_expression "*(int *)(puVar10 + 0x1854bc)" * (cast_expression "(int *)(puVar10 + 0x1854bc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x1854bc)" ( (binary_expression "puVar10 + 0x1854bc" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);" (assignment_expression "uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5)" identifier = (call_expression "(**(code **)(pcVar11 + 0x189550))(pcVar5)" (parenthesized_expression "(**(code **)(pcVar11 + 0x189550))" ( (pointer_expression "**(code **)(pcVar11 + 0x189550)" * (pointer_expression "*(code **)(pcVar11 + 0x189550)" * (cast_expression "(code **)(pcVar11 + 0x189550)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x189550)" ( (binary_expression "pcVar11 + 0x189550" identifier + number_literal) ))))) )) (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "pcVar9 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar9 = *(char **)(psVar4 + 4)" identifier = (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (if_statement "if (pcVar2 <= pcVar9) {\n    _M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }" if (parenthesized_expression "(pcVar2 <= pcVar9)" ( (binary_expression "pcVar2 <= pcVar9" identifier <= identifier) )) (compound_statement "{\n    _M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }" { (expression_statement "_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);" (call_expression "_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1)" identifier (argument_list "(psVar4,(uint)pcVar2,0,pcVar5,uVar1)" ( identifier , (cast_expression "(uint)pcVar2" ( (type_descriptor "uint" type_identifier) ) identifier) , number_literal , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar12 = *(code **)(pcVar11 + 0x185c10);" (assignment_expression "pcVar12 = *(code **)(pcVar11 + 0x185c10)" identifier = (pointer_expression "*(code **)(pcVar11 + 0x185c10)" * (cast_expression "(code **)(pcVar11 + 0x185c10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x185c10)" ( (binary_expression "pcVar11 + 0x185c10" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec" identifier = (binary_expression "*(int *)(pcVar11 + 0x184c90) + -0x3aec" (pointer_expression "*(int *)(pcVar11 + 0x184c90)" * (cast_expression "(int *)(pcVar11 + 0x184c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x184c90)" ( (binary_expression "pcVar11 + 0x184c90" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(pcVar11 + 0x185404) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar11 + 0x185404) + -0xe00)" ( (binary_expression "*(int *)(pcVar11 + 0x185404) + -0xe00" (pointer_expression "*(int *)(pcVar11 + 0x185404)" * (cast_expression "(int *)(pcVar11 + 0x185404)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x185404)" ( (binary_expression "pcVar11 + 0x185404" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar11 = pcVar12 + 0x18cb58;" (assignment_expression "pcVar11 = pcVar12 + 0x18cb58" identifier = (binary_expression "pcVar12 + 0x18cb58" identifier + number_literal)) ;) (expression_statement "pcVar5 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar5 = *(char **)(psVar4 + 4)" identifier = (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar7 = (char *)(iVar6 - *(int *)psVar4);" (assignment_expression "pcVar7 = (char *)(iVar6 - *(int *)psVar4)" identifier = (cast_expression "(char *)(iVar6 - *(int *)psVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 - *(int *)psVar4)" ( (binary_expression "iVar6 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (if_statement "if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar1,pcVar9,in_stack_ffffff80);\n    return;\n  }" if (parenthesized_expression "(pcVar7 <= pcVar5)" ( (binary_expression "pcVar7 <= pcVar5" identifier <= identifier) )) (compound_statement "{\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar1,pcVar9,in_stack_ffffff80);\n    return;\n  }" { (expression_statement "uVar1 = (int)pcVar2 - iVar6;" (assignment_expression "uVar1 = (int)pcVar2 - iVar6" identifier = (binary_expression "(int)pcVar2 - iVar6" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" if (parenthesized_expression "((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6))" ( (binary_expression "(uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)" (call_expression "(uint)((int)pcVar5 - (int)pcVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar5 - (int)pcVar7)" ( (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)((int)pcVar2 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar2 - iVar6)" ( (binary_expression "(int)pcVar2 - iVar6" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" { (expression_statement "uVar1 = (int)pcVar5 - (int)pcVar7;" (assignment_expression "uVar1 = (int)pcVar5 - (int)pcVar7" identifier = (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar9,in_stack_ffffff80);" (call_expression "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar9,in_stack_ffffff80)" identifier (argument_list "(psVar4,(uint)pcVar7,uVar1,pcVar9,in_stack_ffffff80)" ( identifier , (cast_expression "(uint)pcVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar13 = *(code **)(pcVar12 + 0x185b74);" (assignment_expression "pcVar13 = *(code **)(pcVar12 + 0x185b74)" identifier = (pointer_expression "*(code **)(pcVar12 + 0x185b74)" * (cast_expression "(code **)(pcVar12 + 0x185b74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x185b74)" ( (binary_expression "pcVar12 + 0x185b74" identifier + number_literal) ))))) ;) (expression_statement "psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(pcVar12 + 0x185368) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar12 + 0x185368) + -0xe00)" ( (binary_expression "*(int *)(pcVar12 + 0x185368) + -0xe00" (pointer_expression "*(int *)(pcVar12 + 0x185368)" * (cast_expression "(int *)(pcVar12 + 0x185368)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 0x185368)" ( (binary_expression "pcVar12 + 0x185368" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec" identifier = (binary_expression "*(int *)(pcVar12 + 0x184bf4) + -0x3aec" (pointer_expression "*(int *)(pcVar12 + 0x184bf4)" * (cast_expression "(int *)(pcVar12 + 0x184bf4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 0x184bf4)" ( (binary_expression "pcVar12 + 0x184bf4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar13)();" (call_expression "(*pcVar13)()" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar12 = pcVar13 + 0x18caec;" (assignment_expression "pcVar12 = pcVar13 + 0x18caec" identifier = (binary_expression "pcVar13 + 0x18caec" identifier + number_literal)) ;) (expression_statement "pcVar2 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar2 = *(char **)(psVar4 + 4)" identifier = (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar9 = (char *)(iVar6 - *(int *)psVar4);" (assignment_expression "pcVar9 = (char *)(iVar6 - *(int *)psVar4)" identifier = (cast_expression "(char *)(iVar6 - *(int *)psVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 - *(int *)psVar4)" ( (binary_expression "iVar6 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (if_statement "if (pcVar9 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar9) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar9;\n    }\n    _M_replace(psVar4,(uint)pcVar9,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }" if (parenthesized_expression "(pcVar9 <= pcVar2)" ( (binary_expression "pcVar9 <= pcVar2" identifier <= identifier) )) (compound_statement "{\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar9) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar9;\n    }\n    _M_replace(psVar4,(uint)pcVar9,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }" { (expression_statement "uVar1 = (int)pcVar7 - iVar6;" (assignment_expression "uVar1 = (int)pcVar7 - iVar6" identifier = (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if ((uint)((int)pcVar2 - (int)pcVar9) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar9;\n    }" if (parenthesized_expression "((uint)((int)pcVar2 - (int)pcVar9) <= (uint)((int)pcVar7 - iVar6))" ( (binary_expression "(uint)((int)pcVar2 - (int)pcVar9) <= (uint)((int)pcVar7 - iVar6)" (call_expression "(uint)((int)pcVar2 - (int)pcVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar2 - (int)pcVar9)" ( (binary_expression "(int)pcVar2 - (int)pcVar9" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)((int)pcVar7 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar7 - iVar6)" ( (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar1 = (int)pcVar2 - (int)pcVar9;\n    }" { (expression_statement "uVar1 = (int)pcVar2 - (int)pcVar9;" (assignment_expression "uVar1 = (int)pcVar2 - (int)pcVar9" identifier = (binary_expression "(int)pcVar2 - (int)pcVar9" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar9" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "_M_replace(psVar4,(uint)pcVar9,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);" (call_expression "_M_replace(psVar4,(uint)pcVar9,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5)" identifier (argument_list "(psVar4,(uint)pcVar9,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5)" ( identifier , (cast_expression "(uint)pcVar9" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "(int)pcVar11 - (int)pcVar5" (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar11 = *(code **)(pcVar13 + 0x185b08);" (assignment_expression "pcVar11 = *(code **)(pcVar13 + 0x185b08)" identifier = (pointer_expression "*(code **)(pcVar13 + 0x185b08)" * (cast_expression "(code **)(pcVar13 + 0x185b08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar13 + 0x185b08)" ( (binary_expression "pcVar13 + 0x185b08" identifier + number_literal) ))))) ;) (expression_statement "psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar13 + 0x1852fc) + -0xe00)" ( (binary_expression "*(int *)(pcVar13 + 0x1852fc) + -0xe00" (pointer_expression "*(int *)(pcVar13 + 0x1852fc)" * (cast_expression "(int *)(pcVar13 + 0x1852fc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x1852fc)" ( (binary_expression "pcVar13 + 0x1852fc" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec" identifier = (binary_expression "*(int *)(pcVar13 + 0x184b88) + -0x3aec" (pointer_expression "*(int *)(pcVar13 + 0x184b88)" * (cast_expression "(int *)(pcVar13 + 0x184b88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x184b88)" ( (binary_expression "pcVar13 + 0x184b88" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar13 = pcVar11 + 0x18ca74;" (assignment_expression "pcVar13 = pcVar11 + 0x18ca74" identifier = (binary_expression "pcVar11 + 0x18ca74" identifier + number_literal)) ;) (expression_statement "pcVar5 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar5 = *(char **)(psVar4 + 4)" identifier = (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar7 = (char *)(iVar6 - *(int *)psVar4);" (assignment_expression "pcVar7 = (char *)(iVar6 - *(int *)psVar4)" identifier = (cast_expression "(char *)(iVar6 - *(int *)psVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 - *(int *)psVar4)" ( (binary_expression "iVar6 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (if_statement "if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar9 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar9 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }" if (parenthesized_expression "(pcVar7 <= pcVar5)" ( (binary_expression "pcVar7 <= pcVar5" identifier <= identifier) )) (compound_statement "{\n    uVar1 = (int)pcVar9 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar9 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }" { (expression_statement "uVar1 = (int)pcVar9 - iVar6;" (assignment_expression "uVar1 = (int)pcVar9 - iVar6" identifier = (binary_expression "(int)pcVar9 - iVar6" (cast_expression "(int)pcVar9" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar9 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" if (parenthesized_expression "((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar9 - iVar6))" ( (binary_expression "(uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar9 - iVar6)" (call_expression "(uint)((int)pcVar5 - (int)pcVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar5 - (int)pcVar7)" ( (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)((int)pcVar9 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar9 - iVar6)" ( (binary_expression "(int)pcVar9 - iVar6" (cast_expression "(int)pcVar9" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" { (expression_statement "uVar1 = (int)pcVar5 - (int)pcVar7;" (assignment_expression "uVar1 = (int)pcVar5 - (int)pcVar7" identifier = (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);" (call_expression "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2)" identifier (argument_list "(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2)" ( identifier , (cast_expression "(uint)pcVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "(int)pcVar12 - (int)pcVar2" (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar12 = *(code **)(pcVar11 + 0x185a90);" (assignment_expression "pcVar12 = *(code **)(pcVar11 + 0x185a90)" identifier = (pointer_expression "*(code **)(pcVar11 + 0x185a90)" * (cast_expression "(code **)(pcVar11 + 0x185a90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x185a90)" ( (binary_expression "pcVar11 + 0x185a90" identifier + number_literal) ))))) ;) (expression_statement "psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(pcVar11 + 0x185284) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar11 + 0x185284) + -0xe00)" ( (binary_expression "*(int *)(pcVar11 + 0x185284) + -0xe00" (pointer_expression "*(int *)(pcVar11 + 0x185284)" * (cast_expression "(int *)(pcVar11 + 0x185284)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x185284)" ( (binary_expression "pcVar11 + 0x185284" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec" identifier = (binary_expression "*(int *)(pcVar11 + 0x184b10) + -0x3aec" (pointer_expression "*(int *)(pcVar11 + 0x184b10)" * (cast_expression "(int *)(pcVar11 + 0x184b10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x184b10)" ( (binary_expression "pcVar11 + 0x184b10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar1 = *(uint *)(psVar4 + 4);" (assignment_expression "uVar1 = *(uint *)(psVar4 + 4)" identifier = (pointer_expression "*(uint *)(psVar4 + 4)" * (cast_expression "(uint *)(psVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = iVar6 - *(int *)psVar4;" (assignment_expression "uVar3 = iVar6 - *(int *)psVar4" identifier = (binary_expression "iVar6 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (if_statement "if (uVar3 <= uVar1) {\n    uVar8 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar3 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar8 = uVar1 - uVar3;\n    }\n    _M_replace(psVar4,uVar3,uVar8,pcVar5,(uint)pcVar13);\n    return;\n  }" if (parenthesized_expression "(uVar3 <= uVar1)" ( (binary_expression "uVar3 <= uVar1" identifier <= identifier) )) (compound_statement "{\n    uVar8 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar3 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar8 = uVar1 - uVar3;\n    }\n    _M_replace(psVar4,uVar3,uVar8,pcVar5,(uint)pcVar13);\n    return;\n  }" { (expression_statement "uVar8 = (int)pcVar7 - iVar6;" (assignment_expression "uVar8 = (int)pcVar7 - iVar6" identifier = (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (uVar1 - uVar3 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar8 = uVar1 - uVar3;\n    }" if (parenthesized_expression "(uVar1 - uVar3 <= (uint)((int)pcVar7 - iVar6))" ( (binary_expression "uVar1 - uVar3 <= (uint)((int)pcVar7 - iVar6)" (binary_expression "uVar1 - uVar3" identifier - identifier) <= (call_expression "(uint)((int)pcVar7 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar7 - iVar6)" ( (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar8 = uVar1 - uVar3;\n    }" { (expression_statement "uVar8 = uVar1 - uVar3;" (assignment_expression "uVar8 = uVar1 - uVar3" identifier = (binary_expression "uVar1 - uVar3" identifier - identifier)) ;) })) (expression_statement "_M_replace(psVar4,uVar3,uVar8,pcVar5,(uint)pcVar13);" (call_expression "_M_replace(psVar4,uVar3,uVar8,pcVar5,(uint)pcVar13)" identifier (argument_list "(psVar4,uVar3,uVar8,pcVar5,(uint)pcVar13)" ( identifier , identifier , identifier , identifier , (cast_expression "(uint)pcVar13" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (return_statement "return;" return ;) })) (expression_statement "(**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar3,\n             uVar1,pcVar12 + 0x18c9fc);" (call_expression "(**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar3,\n             uVar1,pcVar12 + 0x18c9fc)" (parenthesized_expression "(**(code **)(pcVar12 + 0x185a18))" ( (pointer_expression "**(code **)(pcVar12 + 0x185a18)" * (pointer_expression "*(code **)(pcVar12 + 0x185a18)" * (cast_expression "(code **)(pcVar12 + 0x185a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x185a18)" ( (binary_expression "pcVar12 + 0x185a18" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar3,\n             uVar1,pcVar12 + 0x18c9fc)" ( (binary_expression "*(int *)(pcVar12 + 0x18520c) + -0xe00" (pointer_expression "*(int *)(pcVar12 + 0x18520c)" * (cast_expression "(int *)(pcVar12 + 0x18520c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 0x18520c)" ( (binary_expression "pcVar12 + 0x18520c" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar12 + 0x184a98) + -0x3aec" (pointer_expression "*(int *)(pcVar12 + 0x184a98)" * (cast_expression "(int *)(pcVar12 + 0x184a98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 0x184a98)" ( (binary_expression "pcVar12 + 0x184a98" identifier + number_literal) )))) + number_literal) , identifier , identifier , (binary_expression "pcVar12 + 0x18c9fc" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0033c52c(string *param_1,char *param_2,undefined4 *param_3)\n\n{\n  uint uVar1;\n  char *pcVar2;\n  char *pcVar3;\n  string *psVar4;\n  char *pcVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  code *pcVar12;\n  code *pcVar13;\n  uint in_stack_ffffff80;\n  \n  pcVar2 = *(char **)(param_1 + 4);\n  if (param_2 <= pcVar2) {\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  pcVar5 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);\n  if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185cc8);\n  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);\n  (*pcVar11)();\n  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);\n  pcVar3 = *(char **)(psVar4 + 4);\n  if (pcVar2 <= pcVar3) {\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185c10);\n  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);\n  (*pcVar12)();\n  pcVar11 = pcVar12 + 0x18cb58;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }\n  pcVar13 = *(code **)(pcVar12 + 0x185b74);\n  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);\n  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;\n  (*pcVar13)();\n  pcVar12 = pcVar13 + 0x18caec;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar3 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar3 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }\n  pcVar11 = *(code **)(pcVar13 + 0x185b08);\n  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);\n  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;\n  (*pcVar11)();\n  pcVar13 = pcVar11 + 0x18ca74;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185a90);\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);\n  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;\n  (*pcVar12)();\n  uVar1 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar6 - *(int *)psVar4;\n  if (uVar8 <= uVar1) {\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }\n  (**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc);\n  return;\n}\n\n" (function_definition "void FUN_0033c52c(string *param_1,char *param_2,undefined4 *param_3)\n\n{\n  uint uVar1;\n  char *pcVar2;\n  char *pcVar3;\n  string *psVar4;\n  char *pcVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  code *pcVar12;\n  code *pcVar13;\n  uint in_stack_ffffff80;\n  \n  pcVar2 = *(char **)(param_1 + 4);\n  if (param_2 <= pcVar2) {\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  pcVar5 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);\n  if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185cc8);\n  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);\n  (*pcVar11)();\n  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);\n  pcVar3 = *(char **)(psVar4 + 4);\n  if (pcVar2 <= pcVar3) {\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185c10);\n  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);\n  (*pcVar12)();\n  pcVar11 = pcVar12 + 0x18cb58;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }\n  pcVar13 = *(code **)(pcVar12 + 0x185b74);\n  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);\n  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;\n  (*pcVar13)();\n  pcVar12 = pcVar13 + 0x18caec;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar3 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar3 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }\n  pcVar11 = *(code **)(pcVar13 + 0x185b08);\n  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);\n  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;\n  (*pcVar11)();\n  pcVar13 = pcVar11 + 0x18ca74;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185a90);\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);\n  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;\n  (*pcVar12)();\n  uVar1 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar6 - *(int *)psVar4;\n  if (uVar8 <= uVar1) {\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }\n  (**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc);\n  return;\n}" primitive_type (function_declarator "FUN_0033c52c(string *param_1,char *param_2,undefined4 *param_3)" identifier (parameter_list "(string *param_1,char *param_2,undefined4 *param_3)" ( (parameter_declaration "string *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  char *pcVar2;\n  char *pcVar3;\n  string *psVar4;\n  char *pcVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  code *pcVar12;\n  code *pcVar13;\n  uint in_stack_ffffff80;\n  \n  pcVar2 = *(char **)(param_1 + 4);\n  if (param_2 <= pcVar2) {\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  pcVar5 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);\n  if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185cc8);\n  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);\n  (*pcVar11)();\n  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);\n  pcVar3 = *(char **)(psVar4 + 4);\n  if (pcVar2 <= pcVar3) {\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185c10);\n  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);\n  (*pcVar12)();\n  pcVar11 = pcVar12 + 0x18cb58;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }\n  pcVar13 = *(code **)(pcVar12 + 0x185b74);\n  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);\n  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;\n  (*pcVar13)();\n  pcVar12 = pcVar13 + 0x18caec;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar3 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar3 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }\n  pcVar11 = *(code **)(pcVar13 + 0x185b08);\n  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);\n  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;\n  (*pcVar11)();\n  pcVar13 = pcVar11 + 0x18ca74;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185a90);\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);\n  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;\n  (*pcVar12)();\n  uVar1 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar6 - *(int *)psVar4;\n  if (uVar8 <= uVar1) {\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }\n  (**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "string *psVar4;" type_identifier (pointer_declarator "*psVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "uint in_stack_ffffff80;" type_identifier identifier ;) (expression_statement "pcVar2 = *(char **)(param_1 + 4);" (assignment_expression "pcVar2 = *(char **)(param_1 + 4)" identifier = (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (param_2 <= pcVar2) {\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }" if (parenthesized_expression "(param_2 <= pcVar2)" ( (binary_expression "param_2 <= pcVar2" identifier <= identifier) )) (compound_statement "{\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }" { (labeled_statement "std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);" (call_expression "_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1])" identifier (argument_list "(param_1,(uint)param_2,0,(char *)*param_3,param_3[1])" ( identifier , (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) , number_literal , (cast_expression "(char *)*param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)) , (subscript_expression "param_3[1]" identifier [ number_literal ]) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);" (assignment_expression "psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00)" identifier = (cast_expression "(string *)(PTR_s__s_004c1a50 + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s__s_004c1a50 + -0xe00)" ( (binary_expression "PTR_s__s_004c1a50 + -0xe00" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = PTR_UINT_004c12dc + -0x3aec;" (assignment_expression "pcVar5 = PTR_UINT_004c12dc + -0x3aec" identifier = (binary_expression "PTR_UINT_004c12dc + -0x3aec" identifier + number_literal)) ;) (expression_statement "puVar10 = PTR___throw_out_of_range_fmt_004c225c;" (assignment_expression "puVar10 = PTR___throw_out_of_range_fmt_004c225c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___throw_out_of_range_fmt_004c225c)();" (call_expression "(*(code *)PTR___throw_out_of_range_fmt_004c225c)()" (parenthesized_expression "(*(code *)PTR___throw_out_of_range_fmt_004c225c)" ( (pointer_expression "*(code *)PTR___throw_out_of_range_fmt_004c225c" * (cast_expression "(code *)PTR___throw_out_of_range_fmt_004c225c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);" (assignment_expression "uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2)" identifier = (call_expression "(**(code **)(puVar10 + 0x189608))(pcVar2)" (parenthesized_expression "(**(code **)(puVar10 + 0x189608))" ( (pointer_expression "**(code **)(puVar10 + 0x189608)" * (pointer_expression "*(code **)(puVar10 + 0x189608)" * (cast_expression "(code **)(puVar10 + 0x189608)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x189608)" ( (binary_expression "puVar10 + 0x189608" identifier + number_literal) ))))) )) (argument_list "(pcVar2)" ( identifier )))) ;) (if_statement "if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }" if (parenthesized_expression "(pcVar5 <= *(char **)(psVar4 + 4))" ( (binary_expression "pcVar5 <= *(char **)(psVar4 + 4)" identifier <= (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }" { (expression_statement "pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;" (assignment_expression "pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5" identifier = (binary_expression "*(char **)(psVar4 + 4) + -(int)pcVar5" (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) )))) + (unary_expression "-(int)pcVar5" - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (if_statement "if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }" if (parenthesized_expression "(pcVar3 <= param_2)" ( (binary_expression "pcVar3 <= param_2" identifier <= identifier) )) (compound_statement "{\n      param_2 = pcVar3;\n    }" { (expression_statement "param_2 = pcVar3;" (assignment_expression "param_2 = pcVar3" identifier = identifier) ;) })) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);" (call_expression "_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1)" identifier (argument_list "(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1)" ( identifier , (cast_expression "(uint)pcVar5" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x185cc8);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x185cc8)" identifier = (pointer_expression "*(code **)(puVar10 + 0x185cc8)" * (cast_expression "(code **)(puVar10 + 0x185cc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x185cc8)" ( (binary_expression "puVar10 + 0x185cc8" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);" (assignment_expression "pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec)" identifier = (cast_expression "(char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x184d48) - 0x3aec)" ( (binary_expression "*(int *)(puVar10 + 0x184d48) - 0x3aec" (pointer_expression "*(int *)(puVar10 + 0x184d48)" * (cast_expression "(int *)(puVar10 + 0x184d48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x184d48)" ( (binary_expression "puVar10 + 0x184d48" identifier + number_literal) )))) - number_literal) )))) ;) (expression_statement "psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x1854bc) + -0xe00)" ( (binary_expression "*(int *)(puVar10 + 0x1854bc) + -0xe00" (pointer_expression "*(int *)(puVar10 + 0x1854bc)" * (cast_expression "(int *)(puVar10 + 0x1854bc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x1854bc)" ( (binary_expression "puVar10 + 0x1854bc" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);" (assignment_expression "uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5)" identifier = (call_expression "(**(code **)(pcVar11 + 0x189550))(pcVar5)" (parenthesized_expression "(**(code **)(pcVar11 + 0x189550))" ( (pointer_expression "**(code **)(pcVar11 + 0x189550)" * (pointer_expression "*(code **)(pcVar11 + 0x189550)" * (cast_expression "(code **)(pcVar11 + 0x189550)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x189550)" ( (binary_expression "pcVar11 + 0x189550" identifier + number_literal) ))))) )) (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "pcVar3 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar3 = *(char **)(psVar4 + 4)" identifier = (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (if_statement "if (pcVar2 <= pcVar3) {\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }" if (parenthesized_expression "(pcVar2 <= pcVar3)" ( (binary_expression "pcVar2 <= pcVar3" identifier <= identifier) )) (compound_statement "{\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }" { (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);" (call_expression "_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1)" identifier (argument_list "(psVar4,(uint)pcVar2,0,pcVar5,uVar1)" ( identifier , (cast_expression "(uint)pcVar2" ( (type_descriptor "uint" type_identifier) ) identifier) , number_literal , identifier , identifier ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar12 = *(code **)(pcVar11 + 0x185c10);" (assignment_expression "pcVar12 = *(code **)(pcVar11 + 0x185c10)" identifier = (pointer_expression "*(code **)(pcVar11 + 0x185c10)" * (cast_expression "(code **)(pcVar11 + 0x185c10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x185c10)" ( (binary_expression "pcVar11 + 0x185c10" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec" identifier = (binary_expression "*(int *)(pcVar11 + 0x184c90) + -0x3aec" (pointer_expression "*(int *)(pcVar11 + 0x184c90)" * (cast_expression "(int *)(pcVar11 + 0x184c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x184c90)" ( (binary_expression "pcVar11 + 0x184c90" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(pcVar11 + 0x185404) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar11 + 0x185404) + -0xe00)" ( (binary_expression "*(int *)(pcVar11 + 0x185404) + -0xe00" (pointer_expression "*(int *)(pcVar11 + 0x185404)" * (cast_expression "(int *)(pcVar11 + 0x185404)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x185404)" ( (binary_expression "pcVar11 + 0x185404" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar11 = pcVar12 + 0x18cb58;" (assignment_expression "pcVar11 = pcVar12 + 0x18cb58" identifier = (binary_expression "pcVar12 + 0x18cb58" identifier + number_literal)) ;) (expression_statement "pcVar5 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar5 = *(char **)(psVar4 + 4)" identifier = (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar7 = (char *)(iVar6 - *(int *)psVar4);" (assignment_expression "pcVar7 = (char *)(iVar6 - *(int *)psVar4)" identifier = (cast_expression "(char *)(iVar6 - *(int *)psVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 - *(int *)psVar4)" ( (binary_expression "iVar6 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (if_statement "if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }" if (parenthesized_expression "(pcVar7 <= pcVar5)" ( (binary_expression "pcVar7 <= pcVar5" identifier <= identifier) )) (compound_statement "{\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }" { (expression_statement "uVar1 = (int)pcVar2 - iVar6;" (assignment_expression "uVar1 = (int)pcVar2 - iVar6" identifier = (binary_expression "(int)pcVar2 - iVar6" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" if (parenthesized_expression "((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6))" ( (binary_expression "(uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)" (call_expression "(uint)((int)pcVar5 - (int)pcVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar5 - (int)pcVar7)" ( (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)((int)pcVar2 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar2 - iVar6)" ( (binary_expression "(int)pcVar2 - iVar6" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" { (expression_statement "uVar1 = (int)pcVar5 - (int)pcVar7;" (assignment_expression "uVar1 = (int)pcVar5 - (int)pcVar7" identifier = (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);" (call_expression "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80)" identifier (argument_list "(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80)" ( identifier , (cast_expression "(uint)pcVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , identifier ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar13 = *(code **)(pcVar12 + 0x185b74);" (assignment_expression "pcVar13 = *(code **)(pcVar12 + 0x185b74)" identifier = (pointer_expression "*(code **)(pcVar12 + 0x185b74)" * (cast_expression "(code **)(pcVar12 + 0x185b74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x185b74)" ( (binary_expression "pcVar12 + 0x185b74" identifier + number_literal) ))))) ;) (expression_statement "psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(pcVar12 + 0x185368) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar12 + 0x185368) + -0xe00)" ( (binary_expression "*(int *)(pcVar12 + 0x185368) + -0xe00" (pointer_expression "*(int *)(pcVar12 + 0x185368)" * (cast_expression "(int *)(pcVar12 + 0x185368)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 0x185368)" ( (binary_expression "pcVar12 + 0x185368" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec" identifier = (binary_expression "*(int *)(pcVar12 + 0x184bf4) + -0x3aec" (pointer_expression "*(int *)(pcVar12 + 0x184bf4)" * (cast_expression "(int *)(pcVar12 + 0x184bf4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 0x184bf4)" ( (binary_expression "pcVar12 + 0x184bf4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar13)();" (call_expression "(*pcVar13)()" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar12 = pcVar13 + 0x18caec;" (assignment_expression "pcVar12 = pcVar13 + 0x18caec" identifier = (binary_expression "pcVar13 + 0x18caec" identifier + number_literal)) ;) (expression_statement "pcVar2 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar2 = *(char **)(psVar4 + 4)" identifier = (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = (char *)(iVar6 - *(int *)psVar4);" (assignment_expression "pcVar3 = (char *)(iVar6 - *(int *)psVar4)" identifier = (cast_expression "(char *)(iVar6 - *(int *)psVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 - *(int *)psVar4)" ( (binary_expression "iVar6 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (if_statement "if (pcVar3 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }" if (parenthesized_expression "(pcVar3 <= pcVar2)" ( (binary_expression "pcVar3 <= pcVar2" identifier <= identifier) )) (compound_statement "{\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }" { (expression_statement "uVar1 = (int)pcVar7 - iVar6;" (assignment_expression "uVar1 = (int)pcVar7 - iVar6" identifier = (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }" if (parenthesized_expression "((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6))" ( (binary_expression "(uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)" (call_expression "(uint)((int)pcVar2 - (int)pcVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar2 - (int)pcVar3)" ( (binary_expression "(int)pcVar2 - (int)pcVar3" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)((int)pcVar7 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar7 - iVar6)" ( (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }" { (expression_statement "uVar1 = (int)pcVar2 - (int)pcVar3;" (assignment_expression "uVar1 = (int)pcVar2 - (int)pcVar3" identifier = (binary_expression "(int)pcVar2 - (int)pcVar3" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);" (call_expression "_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5)" identifier (argument_list "(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5)" ( identifier , (cast_expression "(uint)pcVar3" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "(int)pcVar11 - (int)pcVar5" (cast_expression "(int)pcVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar11 = *(code **)(pcVar13 + 0x185b08);" (assignment_expression "pcVar11 = *(code **)(pcVar13 + 0x185b08)" identifier = (pointer_expression "*(code **)(pcVar13 + 0x185b08)" * (cast_expression "(code **)(pcVar13 + 0x185b08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar13 + 0x185b08)" ( (binary_expression "pcVar13 + 0x185b08" identifier + number_literal) ))))) ;) (expression_statement "psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar13 + 0x1852fc) + -0xe00)" ( (binary_expression "*(int *)(pcVar13 + 0x1852fc) + -0xe00" (pointer_expression "*(int *)(pcVar13 + 0x1852fc)" * (cast_expression "(int *)(pcVar13 + 0x1852fc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x1852fc)" ( (binary_expression "pcVar13 + 0x1852fc" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec" identifier = (binary_expression "*(int *)(pcVar13 + 0x184b88) + -0x3aec" (pointer_expression "*(int *)(pcVar13 + 0x184b88)" * (cast_expression "(int *)(pcVar13 + 0x184b88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x184b88)" ( (binary_expression "pcVar13 + 0x184b88" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar13 = pcVar11 + 0x18ca74;" (assignment_expression "pcVar13 = pcVar11 + 0x18ca74" identifier = (binary_expression "pcVar11 + 0x18ca74" identifier + number_literal)) ;) (expression_statement "pcVar5 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar5 = *(char **)(psVar4 + 4)" identifier = (pointer_expression "*(char **)(psVar4 + 4)" * (cast_expression "(char **)(psVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar7 = (char *)(iVar6 - *(int *)psVar4);" (assignment_expression "pcVar7 = (char *)(iVar6 - *(int *)psVar4)" identifier = (cast_expression "(char *)(iVar6 - *(int *)psVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 - *(int *)psVar4)" ( (binary_expression "iVar6 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (if_statement "if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }" if (parenthesized_expression "(pcVar7 <= pcVar5)" ( (binary_expression "pcVar7 <= pcVar5" identifier <= identifier) )) (compound_statement "{\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }" { (expression_statement "uVar1 = (int)pcVar3 - iVar6;" (assignment_expression "uVar1 = (int)pcVar3 - iVar6" identifier = (binary_expression "(int)pcVar3 - iVar6" (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" if (parenthesized_expression "((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6))" ( (binary_expression "(uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)" (call_expression "(uint)((int)pcVar5 - (int)pcVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar5 - (int)pcVar7)" ( (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)((int)pcVar3 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar3 - iVar6)" ( (binary_expression "(int)pcVar3 - iVar6" (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" { (expression_statement "uVar1 = (int)pcVar5 - (int)pcVar7;" (assignment_expression "uVar1 = (int)pcVar5 - (int)pcVar7" identifier = (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);" (call_expression "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2)" identifier (argument_list "(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2)" ( identifier , (cast_expression "(uint)pcVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "(int)pcVar12 - (int)pcVar2" (cast_expression "(int)pcVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar12 = *(code **)(pcVar11 + 0x185a90);" (assignment_expression "pcVar12 = *(code **)(pcVar11 + 0x185a90)" identifier = (pointer_expression "*(code **)(pcVar11 + 0x185a90)" * (cast_expression "(code **)(pcVar11 + 0x185a90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x185a90)" ( (binary_expression "pcVar11 + 0x185a90" identifier + number_literal) ))))) ;) (expression_statement "psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(pcVar11 + 0x185284) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar11 + 0x185284) + -0xe00)" ( (binary_expression "*(int *)(pcVar11 + 0x185284) + -0xe00" (pointer_expression "*(int *)(pcVar11 + 0x185284)" * (cast_expression "(int *)(pcVar11 + 0x185284)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x185284)" ( (binary_expression "pcVar11 + 0x185284" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec" identifier = (binary_expression "*(int *)(pcVar11 + 0x184b10) + -0x3aec" (pointer_expression "*(int *)(pcVar11 + 0x184b10)" * (cast_expression "(int *)(pcVar11 + 0x184b10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x184b10)" ( (binary_expression "pcVar11 + 0x184b10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar1 = *(uint *)(psVar4 + 4);" (assignment_expression "uVar1 = *(uint *)(psVar4 + 4)" identifier = (pointer_expression "*(uint *)(psVar4 + 4)" * (cast_expression "(uint *)(psVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar4 + 4)" ( (binary_expression "psVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = iVar6 - *(int *)psVar4;" (assignment_expression "uVar8 = iVar6 - *(int *)psVar4" identifier = (binary_expression "iVar6 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (if_statement "if (uVar8 <= uVar1) {\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }" if (parenthesized_expression "(uVar8 <= uVar1)" ( (binary_expression "uVar8 <= uVar1" identifier <= identifier) )) (compound_statement "{\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }" { (expression_statement "uVar9 = (int)pcVar7 - iVar6;" (assignment_expression "uVar9 = (int)pcVar7 - iVar6" identifier = (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }" if (parenthesized_expression "(uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6))" ( (binary_expression "uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)" (binary_expression "uVar1 - uVar8" identifier - identifier) <= (call_expression "(uint)((int)pcVar7 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar7 - iVar6)" ( (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar9 = uVar1 - uVar8;\n    }" { (expression_statement "uVar9 = uVar1 - uVar8;" (assignment_expression "uVar9 = uVar1 - uVar8" identifier = (binary_expression "uVar1 - uVar8" identifier - identifier)) ;) })) (labeled_statement "std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);" (call_expression "_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13)" identifier (argument_list "(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13)" ( identifier , identifier , identifier , identifier , (cast_expression "(uint)pcVar13" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "(**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc);" (call_expression "(**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc)" (parenthesized_expression "(**(code **)(pcVar12 + 0x185a18))" ( (pointer_expression "**(code **)(pcVar12 + 0x185a18)" * (pointer_expression "*(code **)(pcVar12 + 0x185a18)" * (cast_expression "(code **)(pcVar12 + 0x185a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x185a18)" ( (binary_expression "pcVar12 + 0x185a18" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc)" ( (binary_expression "*(int *)(pcVar12 + 0x18520c) + -0xe00" (pointer_expression "*(int *)(pcVar12 + 0x18520c)" * (cast_expression "(int *)(pcVar12 + 0x18520c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 0x18520c)" ( (binary_expression "pcVar12 + 0x18520c" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar12 + 0x184a98) + -0x3aec" (pointer_expression "*(int *)(pcVar12 + 0x184a98)" * (cast_expression "(int *)(pcVar12 + 0x184a98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 0x184a98)" ( (binary_expression "pcVar12 + 0x184a98" identifier + number_literal) )))) + number_literal) , identifier , identifier , (binary_expression "pcVar12 + 0x18c9fc" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (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 , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (subscript_expression 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 = (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 )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= 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) , (cast_expression ( (type_descriptor TYPE) ) 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 = (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 = (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (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 , 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 = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (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)) ))) <= (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (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 = (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 IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (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)) ))) <= (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) 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 = (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 IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (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)) ))) <= (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) <= (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;))) (return_statement return ;) })) (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) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })))
(function_definition "void FUN_0033c52c(string *param_1,char *param_2,undefined4 *param_3)\n\n{\n  uint uVar1;\n  char *pcVar2;\n  char *pcVar3;\n  string *psVar4;\n  char *pcVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  code *pcVar12;\n  code *pcVar13;\n  uint in_stack_ffffff80;\n  \n  pcVar2 = *(char **)(param_1 + 4);\n  if (param_2 <= pcVar2) {\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  pcVar5 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);\n  if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185cc8);\n  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);\n  (*pcVar11)();\n  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);\n  pcVar3 = *(char **)(psVar4 + 4);\n  if (pcVar2 <= pcVar3) {\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185c10);\n  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);\n  (*pcVar12)();\n  pcVar11 = pcVar12 + 0x18cb58;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }\n  pcVar13 = *(code **)(pcVar12 + 0x185b74);\n  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);\n  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;\n  (*pcVar13)();\n  pcVar12 = pcVar13 + 0x18caec;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar3 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar3 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }\n  pcVar11 = *(code **)(pcVar13 + 0x185b08);\n  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);\n  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;\n  (*pcVar11)();\n  pcVar13 = pcVar11 + 0x18ca74;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185a90);\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);\n  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;\n  (*pcVar12)();\n  uVar1 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar6 - *(int *)psVar4;\n  if (uVar8 <= uVar1) {\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }\n  (**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0033c52c(string *param_1,char *param_2,undefined4 *param_3)" (identifier "FUN_0033c52c") (parameter_list "(string *param_1,char *param_2,undefined4 *param_3)" (( "(") (parameter_declaration "string *param_1" (type_identifier "string") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  char *pcVar2;\n  char *pcVar3;\n  string *psVar4;\n  char *pcVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  code *pcVar12;\n  code *pcVar13;\n  uint in_stack_ffffff80;\n  \n  pcVar2 = *(char **)(param_1 + 4);\n  if (param_2 <= pcVar2) {\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  pcVar5 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);\n  if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185cc8);\n  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);\n  (*pcVar11)();\n  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);\n  pcVar3 = *(char **)(psVar4 + 4);\n  if (pcVar2 <= pcVar3) {\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185c10);\n  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);\n  (*pcVar12)();\n  pcVar11 = pcVar12 + 0x18cb58;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }\n  pcVar13 = *(code **)(pcVar12 + 0x185b74);\n  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);\n  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;\n  (*pcVar13)();\n  pcVar12 = pcVar13 + 0x18caec;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar3 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar3 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }\n  pcVar11 = *(code **)(pcVar13 + 0x185b08);\n  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);\n  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;\n  (*pcVar11)();\n  pcVar13 = pcVar11 + 0x18ca74;\n  pcVar5 = *(char **)(psVar4 + 4);\n  pcVar7 = (char *)(iVar6 - *(int *)psVar4);\n  if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }\n  pcVar12 = *(code **)(pcVar11 + 0x185a90);\n  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);\n  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;\n  (*pcVar12)();\n  uVar1 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar6 - *(int *)psVar4;\n  if (uVar8 <= uVar1) {\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }\n  (**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc);\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "string *psVar4;" (type_identifier "string") (pointer_declarator "*psVar4" (* "*") (identifier "psVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "code *pcVar11;" (type_identifier "code") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "code *pcVar12;" (type_identifier "code") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "code *pcVar13;" (type_identifier "code") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (declaration "uint in_stack_ffffff80;" (type_identifier "uint") (identifier "in_stack_ffffff80") (; ";")) (expression_statement "pcVar2 = *(char **)(param_1 + 4);" (assignment_expression "pcVar2 = *(char **)(param_1 + 4)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_1 + 4)" (* "*") (cast_expression "(char **)(param_1 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (param_2 <= pcVar2) {\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }" (if "if") (parenthesized_expression "(param_2 <= pcVar2)" (( "(") (binary_expression "param_2 <= pcVar2" (identifier "param_2") (<= "<=") (identifier "pcVar2")) () ")")) (compound_statement "{\n    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);\n    return;\n  }" ({ "{") (labeled_statement "std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);" (call_expression "_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1])" (identifier "_M_replace") (argument_list "(param_1,(uint)param_2,0,(char *)*param_3,param_3[1])" (( "(") (identifier "param_1") (, ",") (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2")) (, ",") (number_literal "0") (, ",") (cast_expression "(char *)*param_3" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (, ",") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);" (assignment_expression "psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00)" (identifier "psVar4") (= "=") (cast_expression "(string *)(PTR_s__s_004c1a50 + -0xe00)" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s__s_004c1a50 + -0xe00)" (( "(") (binary_expression "PTR_s__s_004c1a50 + -0xe00" (identifier "PTR_s__s_004c1a50") (+ "+") (number_literal "-0xe00")) () ")")))) (; ";")) (expression_statement "pcVar5 = PTR_UINT_004c12dc + -0x3aec;" (assignment_expression "pcVar5 = PTR_UINT_004c12dc + -0x3aec" (identifier "pcVar5") (= "=") (binary_expression "PTR_UINT_004c12dc + -0x3aec" (identifier "PTR_UINT_004c12dc") (+ "+") (number_literal "-0x3aec"))) (; ";")) (expression_statement "puVar10 = PTR___throw_out_of_range_fmt_004c225c;" (assignment_expression "puVar10 = PTR___throw_out_of_range_fmt_004c225c" (identifier "puVar10") (= "=") (identifier "PTR___throw_out_of_range_fmt_004c225c")) (; ";")) (expression_statement "(*(code *)PTR___throw_out_of_range_fmt_004c225c)();" (call_expression "(*(code *)PTR___throw_out_of_range_fmt_004c225c)()" (parenthesized_expression "(*(code *)PTR___throw_out_of_range_fmt_004c225c)" (( "(") (pointer_expression "*(code *)PTR___throw_out_of_range_fmt_004c225c" (* "*") (cast_expression "(code *)PTR___throw_out_of_range_fmt_004c225c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___throw_out_of_range_fmt_004c225c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);" (assignment_expression "uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2)" (identifier "uVar1") (= "=") (call_expression "(**(code **)(puVar10 + 0x189608))(pcVar2)" (parenthesized_expression "(**(code **)(puVar10 + 0x189608))" (( "(") (pointer_expression "**(code **)(puVar10 + 0x189608)" (* "*") (pointer_expression "*(code **)(puVar10 + 0x189608)" (* "*") (cast_expression "(code **)(puVar10 + 0x189608)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x189608)" (( "(") (binary_expression "puVar10 + 0x189608" (identifier "puVar10") (+ "+") (number_literal "0x189608")) () ")"))))) () ")")) (argument_list "(pcVar2)" (( "(") (identifier "pcVar2") () ")")))) (; ";")) (if_statement "if (pcVar5 <= *(char **)(psVar4 + 4)) {\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }" (if "if") (parenthesized_expression "(pcVar5 <= *(char **)(psVar4 + 4))" (( "(") (binary_expression "pcVar5 <= *(char **)(psVar4 + 4)" (identifier "pcVar5") (<= "<=") (pointer_expression "*(char **)(psVar4 + 4)" (* "*") (cast_expression "(char **)(psVar4 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(psVar4 + 4)" (( "(") (binary_expression "psVar4 + 4" (identifier "psVar4") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;\n    if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);\n    return;\n  }" ({ "{") (expression_statement "pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;" (assignment_expression "pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5" (identifier "pcVar3") (= "=") (binary_expression "*(char **)(psVar4 + 4) + -(int)pcVar5" (pointer_expression "*(char **)(psVar4 + 4)" (* "*") (cast_expression "(char **)(psVar4 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(psVar4 + 4)" (( "(") (binary_expression "psVar4 + 4" (identifier "psVar4") (+ "+") (number_literal "4")) () ")")))) (+ "+") (unary_expression "-(int)pcVar5" (- "-") (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5"))))) (; ";")) (if_statement "if (pcVar3 <= param_2) {\n      param_2 = pcVar3;\n    }" (if "if") (parenthesized_expression "(pcVar3 <= param_2)" (( "(") (binary_expression "pcVar3 <= param_2" (identifier "pcVar3") (<= "<=") (identifier "param_2")) () ")")) (compound_statement "{\n      param_2 = pcVar3;\n    }" ({ "{") (expression_statement "param_2 = pcVar3;" (assignment_expression "param_2 = pcVar3" (identifier "param_2") (= "=") (identifier "pcVar3")) (; ";")) (} "}"))) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);" (call_expression "_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1)" (identifier "_M_replace") (argument_list "(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1)" (( "(") (identifier "psVar4") (, ",") (cast_expression "(uint)pcVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar5")) (, ",") (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2")) (, ",") (identifier "pcVar2") (, ",") (identifier "uVar1") () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x185cc8);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x185cc8)" (identifier "pcVar11") (= "=") (pointer_expression "*(code **)(puVar10 + 0x185cc8)" (* "*") (cast_expression "(code **)(puVar10 + 0x185cc8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x185cc8)" (( "(") (binary_expression "puVar10 + 0x185cc8" (identifier "puVar10") (+ "+") (number_literal "0x185cc8")) () ")"))))) (; ";")) (expression_statement "pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);" (assignment_expression "pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec)" (identifier "pcVar2") (= "=") (cast_expression "(char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0x184d48) - 0x3aec)" (( "(") (binary_expression "*(int *)(puVar10 + 0x184d48) - 0x3aec" (pointer_expression "*(int *)(puVar10 + 0x184d48)" (* "*") (cast_expression "(int *)(puVar10 + 0x184d48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x184d48)" (( "(") (binary_expression "puVar10 + 0x184d48" (identifier "puVar10") (+ "+") (number_literal "0x184d48")) () ")")))) (- "-") (number_literal "0x3aec")) () ")")))) (; ";")) (expression_statement "psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00)" (identifier "psVar4") (= "=") (cast_expression "(string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00)" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0x1854bc) + -0xe00)" (( "(") (binary_expression "*(int *)(puVar10 + 0x1854bc) + -0xe00" (pointer_expression "*(int *)(puVar10 + 0x1854bc)" (* "*") (cast_expression "(int *)(puVar10 + 0x1854bc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x1854bc)" (( "(") (binary_expression "puVar10 + 0x1854bc" (identifier "puVar10") (+ "+") (number_literal "0x1854bc")) () ")")))) (+ "+") (number_literal "-0xe00")) () ")")))) (; ";")) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" (( "(") (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);" (assignment_expression "uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5)" (identifier "uVar1") (= "=") (call_expression "(**(code **)(pcVar11 + 0x189550))(pcVar5)" (parenthesized_expression "(**(code **)(pcVar11 + 0x189550))" (( "(") (pointer_expression "**(code **)(pcVar11 + 0x189550)" (* "*") (pointer_expression "*(code **)(pcVar11 + 0x189550)" (* "*") (cast_expression "(code **)(pcVar11 + 0x189550)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar11 + 0x189550)" (( "(") (binary_expression "pcVar11 + 0x189550" (identifier "pcVar11") (+ "+") (number_literal "0x189550")) () ")"))))) () ")")) (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")")))) (; ";")) (expression_statement "pcVar3 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar3 = *(char **)(psVar4 + 4)" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)(psVar4 + 4)" (* "*") (cast_expression "(char **)(psVar4 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(psVar4 + 4)" (( "(") (binary_expression "psVar4 + 4" (identifier "psVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (pcVar2 <= pcVar3) {\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }" (if "if") (parenthesized_expression "(pcVar2 <= pcVar3)" (( "(") (binary_expression "pcVar2 <= pcVar3" (identifier "pcVar2") (<= "<=") (identifier "pcVar3")) () ")")) (compound_statement "{\n    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);\n    return;\n  }" ({ "{") (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);" (call_expression "_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1)" (identifier "_M_replace") (argument_list "(psVar4,(uint)pcVar2,0,pcVar5,uVar1)" (( "(") (identifier "psVar4") (, ",") (cast_expression "(uint)pcVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar2")) (, ",") (number_literal "0") (, ",") (identifier "pcVar5") (, ",") (identifier "uVar1") () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar12 = *(code **)(pcVar11 + 0x185c10);" (assignment_expression "pcVar12 = *(code **)(pcVar11 + 0x185c10)" (identifier "pcVar12") (= "=") (pointer_expression "*(code **)(pcVar11 + 0x185c10)" (* "*") (cast_expression "(code **)(pcVar11 + 0x185c10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar11 + 0x185c10)" (( "(") (binary_expression "pcVar11 + 0x185c10" (identifier "pcVar11") (+ "+") (number_literal "0x185c10")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec" (identifier "iVar6") (= "=") (binary_expression "*(int *)(pcVar11 + 0x184c90) + -0x3aec" (pointer_expression "*(int *)(pcVar11 + 0x184c90)" (* "*") (cast_expression "(int *)(pcVar11 + 0x184c90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x184c90)" (( "(") (binary_expression "pcVar11 + 0x184c90" (identifier "pcVar11") (+ "+") (number_literal "0x184c90")) () ")")))) (+ "+") (number_literal "-0x3aec"))) (; ";")) (expression_statement "psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00)" (identifier "psVar4") (= "=") (cast_expression "(string *)(*(int *)(pcVar11 + 0x185404) + -0xe00)" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar11 + 0x185404) + -0xe00)" (( "(") (binary_expression "*(int *)(pcVar11 + 0x185404) + -0xe00" (pointer_expression "*(int *)(pcVar11 + 0x185404)" (* "*") (cast_expression "(int *)(pcVar11 + 0x185404)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x185404)" (( "(") (binary_expression "pcVar11 + 0x185404" (identifier "pcVar11") (+ "+") (number_literal "0x185404")) () ")")))) (+ "+") (number_literal "-0xe00")) () ")")))) (; ";")) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar11 = pcVar12 + 0x18cb58;" (assignment_expression "pcVar11 = pcVar12 + 0x18cb58" (identifier "pcVar11") (= "=") (binary_expression "pcVar12 + 0x18cb58" (identifier "pcVar12") (+ "+") (number_literal "0x18cb58"))) (; ";")) (expression_statement "pcVar5 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar5 = *(char **)(psVar4 + 4)" (identifier "pcVar5") (= "=") (pointer_expression "*(char **)(psVar4 + 4)" (* "*") (cast_expression "(char **)(psVar4 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(psVar4 + 4)" (( "(") (binary_expression "psVar4 + 4" (identifier "psVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar7 = (char *)(iVar6 - *(int *)psVar4);" (assignment_expression "pcVar7 = (char *)(iVar6 - *(int *)psVar4)" (identifier "pcVar7") (= "=") (cast_expression "(char *)(iVar6 - *(int *)psVar4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 - *(int *)psVar4)" (( "(") (binary_expression "iVar6 - *(int *)psVar4" (identifier "iVar6") (- "-") (pointer_expression "*(int *)psVar4" (* "*") (cast_expression "(int *)psVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar4")))) () ")")))) (; ";")) (if_statement "if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }" (if "if") (parenthesized_expression "(pcVar7 <= pcVar5)" (( "(") (binary_expression "pcVar7 <= pcVar5" (identifier "pcVar7") (<= "<=") (identifier "pcVar5")) () ")")) (compound_statement "{\n    uVar1 = (int)pcVar2 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);\n    return;\n  }" ({ "{") (expression_statement "uVar1 = (int)pcVar2 - iVar6;" (assignment_expression "uVar1 = (int)pcVar2 - iVar6" (identifier "uVar1") (= "=") (binary_expression "(int)pcVar2 - iVar6" (cast_expression "(int)pcVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar2")) (- "-") (identifier "iVar6"))) (; ";")) (if_statement "if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" (if "if") (parenthesized_expression "((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6))" (( "(") (binary_expression "(uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)" (call_expression "(uint)((int)pcVar5 - (int)pcVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar5 - (int)pcVar7)" (( "(") (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5")) (- "-") (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7"))) () ")"))) (<= "<=") (call_expression "(uint)((int)pcVar2 - iVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar2 - iVar6)" (( "(") (binary_expression "(int)pcVar2 - iVar6" (cast_expression "(int)pcVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar2")) (- "-") (identifier "iVar6")) () ")")))) () ")")) (compound_statement "{\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" ({ "{") (expression_statement "uVar1 = (int)pcVar5 - (int)pcVar7;" (assignment_expression "uVar1 = (int)pcVar5 - (int)pcVar7" (identifier "uVar1") (= "=") (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5")) (- "-") (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")))) (; ";")) (} "}"))) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);" (call_expression "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80)" (identifier "_M_replace") (argument_list "(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80)" (( "(") (identifier "psVar4") (, ",") (cast_expression "(uint)pcVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar7")) (, ",") (identifier "uVar1") (, ",") (identifier "pcVar3") (, ",") (identifier "in_stack_ffffff80") () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar13 = *(code **)(pcVar12 + 0x185b74);" (assignment_expression "pcVar13 = *(code **)(pcVar12 + 0x185b74)" (identifier "pcVar13") (= "=") (pointer_expression "*(code **)(pcVar12 + 0x185b74)" (* "*") (cast_expression "(code **)(pcVar12 + 0x185b74)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar12 + 0x185b74)" (( "(") (binary_expression "pcVar12 + 0x185b74" (identifier "pcVar12") (+ "+") (number_literal "0x185b74")) () ")"))))) (; ";")) (expression_statement "psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00)" (identifier "psVar4") (= "=") (cast_expression "(string *)(*(int *)(pcVar12 + 0x185368) + -0xe00)" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar12 + 0x185368) + -0xe00)" (( "(") (binary_expression "*(int *)(pcVar12 + 0x185368) + -0xe00" (pointer_expression "*(int *)(pcVar12 + 0x185368)" (* "*") (cast_expression "(int *)(pcVar12 + 0x185368)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar12 + 0x185368)" (( "(") (binary_expression "pcVar12 + 0x185368" (identifier "pcVar12") (+ "+") (number_literal "0x185368")) () ")")))) (+ "+") (number_literal "-0xe00")) () ")")))) (; ";")) (expression_statement "iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec" (identifier "iVar6") (= "=") (binary_expression "*(int *)(pcVar12 + 0x184bf4) + -0x3aec" (pointer_expression "*(int *)(pcVar12 + 0x184bf4)" (* "*") (cast_expression "(int *)(pcVar12 + 0x184bf4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar12 + 0x184bf4)" (( "(") (binary_expression "pcVar12 + 0x184bf4" (identifier "pcVar12") (+ "+") (number_literal "0x184bf4")) () ")")))) (+ "+") (number_literal "-0x3aec"))) (; ";")) (expression_statement "(*pcVar13)();" (call_expression "(*pcVar13)()" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar12 = pcVar13 + 0x18caec;" (assignment_expression "pcVar12 = pcVar13 + 0x18caec" (identifier "pcVar12") (= "=") (binary_expression "pcVar13 + 0x18caec" (identifier "pcVar13") (+ "+") (number_literal "0x18caec"))) (; ";")) (expression_statement "pcVar2 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar2 = *(char **)(psVar4 + 4)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(psVar4 + 4)" (* "*") (cast_expression "(char **)(psVar4 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(psVar4 + 4)" (( "(") (binary_expression "psVar4 + 4" (identifier "psVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar3 = (char *)(iVar6 - *(int *)psVar4);" (assignment_expression "pcVar3 = (char *)(iVar6 - *(int *)psVar4)" (identifier "pcVar3") (= "=") (cast_expression "(char *)(iVar6 - *(int *)psVar4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 - *(int *)psVar4)" (( "(") (binary_expression "iVar6 - *(int *)psVar4" (identifier "iVar6") (- "-") (pointer_expression "*(int *)psVar4" (* "*") (cast_expression "(int *)psVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar4")))) () ")")))) (; ";")) (if_statement "if (pcVar3 <= pcVar2) {\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }" (if "if") (parenthesized_expression "(pcVar3 <= pcVar2)" (( "(") (binary_expression "pcVar3 <= pcVar2" (identifier "pcVar3") (<= "<=") (identifier "pcVar2")) () ")")) (compound_statement "{\n    uVar1 = (int)pcVar7 - iVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);\n    return;\n  }" ({ "{") (expression_statement "uVar1 = (int)pcVar7 - iVar6;" (assignment_expression "uVar1 = (int)pcVar7 - iVar6" (identifier "uVar1") (= "=") (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")) (- "-") (identifier "iVar6"))) (; ";")) (if_statement "if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }" (if "if") (parenthesized_expression "((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6))" (( "(") (binary_expression "(uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)" (call_expression "(uint)((int)pcVar2 - (int)pcVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar2 - (int)pcVar3)" (( "(") (binary_expression "(int)pcVar2 - (int)pcVar3" (cast_expression "(int)pcVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar2")) (- "-") (cast_expression "(int)pcVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar3"))) () ")"))) (<= "<=") (call_expression "(uint)((int)pcVar7 - iVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar7 - iVar6)" (( "(") (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")) (- "-") (identifier "iVar6")) () ")")))) () ")")) (compound_statement "{\n      uVar1 = (int)pcVar2 - (int)pcVar3;\n    }" ({ "{") (expression_statement "uVar1 = (int)pcVar2 - (int)pcVar3;" (assignment_expression "uVar1 = (int)pcVar2 - (int)pcVar3" (identifier "uVar1") (= "=") (binary_expression "(int)pcVar2 - (int)pcVar3" (cast_expression "(int)pcVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar2")) (- "-") (cast_expression "(int)pcVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar3")))) (; ";")) (} "}"))) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);" (call_expression "_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5)" (identifier "_M_replace") (argument_list "(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5)" (( "(") (identifier "psVar4") (, ",") (cast_expression "(uint)pcVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar3")) (, ",") (identifier "uVar1") (, ",") (identifier "pcVar5") (, ",") (binary_expression "(int)pcVar11 - (int)pcVar5" (cast_expression "(int)pcVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar11")) (- "-") (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5"))) () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar11 = *(code **)(pcVar13 + 0x185b08);" (assignment_expression "pcVar11 = *(code **)(pcVar13 + 0x185b08)" (identifier "pcVar11") (= "=") (pointer_expression "*(code **)(pcVar13 + 0x185b08)" (* "*") (cast_expression "(code **)(pcVar13 + 0x185b08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar13 + 0x185b08)" (( "(") (binary_expression "pcVar13 + 0x185b08" (identifier "pcVar13") (+ "+") (number_literal "0x185b08")) () ")"))))) (; ";")) (expression_statement "psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00)" (identifier "psVar4") (= "=") (cast_expression "(string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00)" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar13 + 0x1852fc) + -0xe00)" (( "(") (binary_expression "*(int *)(pcVar13 + 0x1852fc) + -0xe00" (pointer_expression "*(int *)(pcVar13 + 0x1852fc)" (* "*") (cast_expression "(int *)(pcVar13 + 0x1852fc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar13 + 0x1852fc)" (( "(") (binary_expression "pcVar13 + 0x1852fc" (identifier "pcVar13") (+ "+") (number_literal "0x1852fc")) () ")")))) (+ "+") (number_literal "-0xe00")) () ")")))) (; ";")) (expression_statement "iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec" (identifier "iVar6") (= "=") (binary_expression "*(int *)(pcVar13 + 0x184b88) + -0x3aec" (pointer_expression "*(int *)(pcVar13 + 0x184b88)" (* "*") (cast_expression "(int *)(pcVar13 + 0x184b88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar13 + 0x184b88)" (( "(") (binary_expression "pcVar13 + 0x184b88" (identifier "pcVar13") (+ "+") (number_literal "0x184b88")) () ")")))) (+ "+") (number_literal "-0x3aec"))) (; ";")) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" (( "(") (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar13 = pcVar11 + 0x18ca74;" (assignment_expression "pcVar13 = pcVar11 + 0x18ca74" (identifier "pcVar13") (= "=") (binary_expression "pcVar11 + 0x18ca74" (identifier "pcVar11") (+ "+") (number_literal "0x18ca74"))) (; ";")) (expression_statement "pcVar5 = *(char **)(psVar4 + 4);" (assignment_expression "pcVar5 = *(char **)(psVar4 + 4)" (identifier "pcVar5") (= "=") (pointer_expression "*(char **)(psVar4 + 4)" (* "*") (cast_expression "(char **)(psVar4 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(psVar4 + 4)" (( "(") (binary_expression "psVar4 + 4" (identifier "psVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar7 = (char *)(iVar6 - *(int *)psVar4);" (assignment_expression "pcVar7 = (char *)(iVar6 - *(int *)psVar4)" (identifier "pcVar7") (= "=") (cast_expression "(char *)(iVar6 - *(int *)psVar4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 - *(int *)psVar4)" (( "(") (binary_expression "iVar6 - *(int *)psVar4" (identifier "iVar6") (- "-") (pointer_expression "*(int *)psVar4" (* "*") (cast_expression "(int *)psVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar4")))) () ")")))) (; ";")) (if_statement "if (pcVar7 <= pcVar5) {\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }" (if "if") (parenthesized_expression "(pcVar7 <= pcVar5)" (( "(") (binary_expression "pcVar7 <= pcVar5" (identifier "pcVar7") (<= "<=") (identifier "pcVar5")) () ")")) (compound_statement "{\n    uVar1 = (int)pcVar3 - iVar6;\n    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);\n    return;\n  }" ({ "{") (expression_statement "uVar1 = (int)pcVar3 - iVar6;" (assignment_expression "uVar1 = (int)pcVar3 - iVar6" (identifier "uVar1") (= "=") (binary_expression "(int)pcVar3 - iVar6" (cast_expression "(int)pcVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar3")) (- "-") (identifier "iVar6"))) (; ";")) (if_statement "if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" (if "if") (parenthesized_expression "((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6))" (( "(") (binary_expression "(uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)" (call_expression "(uint)((int)pcVar5 - (int)pcVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar5 - (int)pcVar7)" (( "(") (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5")) (- "-") (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7"))) () ")"))) (<= "<=") (call_expression "(uint)((int)pcVar3 - iVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar3 - iVar6)" (( "(") (binary_expression "(int)pcVar3 - iVar6" (cast_expression "(int)pcVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar3")) (- "-") (identifier "iVar6")) () ")")))) () ")")) (compound_statement "{\n      uVar1 = (int)pcVar5 - (int)pcVar7;\n    }" ({ "{") (expression_statement "uVar1 = (int)pcVar5 - (int)pcVar7;" (assignment_expression "uVar1 = (int)pcVar5 - (int)pcVar7" (identifier "uVar1") (= "=") (binary_expression "(int)pcVar5 - (int)pcVar7" (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5")) (- "-") (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")))) (; ";")) (} "}"))) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);" (call_expression "_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2)" (identifier "_M_replace") (argument_list "(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2)" (( "(") (identifier "psVar4") (, ",") (cast_expression "(uint)pcVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar7")) (, ",") (identifier "uVar1") (, ",") (identifier "pcVar2") (, ",") (binary_expression "(int)pcVar12 - (int)pcVar2" (cast_expression "(int)pcVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar12")) (- "-") (cast_expression "(int)pcVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar2"))) () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar12 = *(code **)(pcVar11 + 0x185a90);" (assignment_expression "pcVar12 = *(code **)(pcVar11 + 0x185a90)" (identifier "pcVar12") (= "=") (pointer_expression "*(code **)(pcVar11 + 0x185a90)" (* "*") (cast_expression "(code **)(pcVar11 + 0x185a90)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar11 + 0x185a90)" (( "(") (binary_expression "pcVar11 + 0x185a90" (identifier "pcVar11") (+ "+") (number_literal "0x185a90")) () ")"))))) (; ";")) (expression_statement "psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00)" (identifier "psVar4") (= "=") (cast_expression "(string *)(*(int *)(pcVar11 + 0x185284) + -0xe00)" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar11 + 0x185284) + -0xe00)" (( "(") (binary_expression "*(int *)(pcVar11 + 0x185284) + -0xe00" (pointer_expression "*(int *)(pcVar11 + 0x185284)" (* "*") (cast_expression "(int *)(pcVar11 + 0x185284)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x185284)" (( "(") (binary_expression "pcVar11 + 0x185284" (identifier "pcVar11") (+ "+") (number_literal "0x185284")) () ")")))) (+ "+") (number_literal "-0xe00")) () ")")))) (; ";")) (expression_statement "iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;" (assignment_expression "iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec" (identifier "iVar6") (= "=") (binary_expression "*(int *)(pcVar11 + 0x184b10) + -0x3aec" (pointer_expression "*(int *)(pcVar11 + 0x184b10)" (* "*") (cast_expression "(int *)(pcVar11 + 0x184b10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x184b10)" (( "(") (binary_expression "pcVar11 + 0x184b10" (identifier "pcVar11") (+ "+") (number_literal "0x184b10")) () ")")))) (+ "+") (number_literal "-0x3aec"))) (; ";")) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar1 = *(uint *)(psVar4 + 4);" (assignment_expression "uVar1 = *(uint *)(psVar4 + 4)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(psVar4 + 4)" (* "*") (cast_expression "(uint *)(psVar4 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(psVar4 + 4)" (( "(") (binary_expression "psVar4 + 4" (identifier "psVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar8 = iVar6 - *(int *)psVar4;" (assignment_expression "uVar8 = iVar6 - *(int *)psVar4" (identifier "uVar8") (= "=") (binary_expression "iVar6 - *(int *)psVar4" (identifier "iVar6") (- "-") (pointer_expression "*(int *)psVar4" (* "*") (cast_expression "(int *)psVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar4"))))) (; ";")) (if_statement "if (uVar8 <= uVar1) {\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }" (if "if") (parenthesized_expression "(uVar8 <= uVar1)" (( "(") (binary_expression "uVar8 <= uVar1" (identifier "uVar8") (<= "<=") (identifier "uVar1")) () ")")) (compound_statement "{\n    uVar9 = (int)pcVar7 - iVar6;\n    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);\n    return;\n  }" ({ "{") (expression_statement "uVar9 = (int)pcVar7 - iVar6;" (assignment_expression "uVar9 = (int)pcVar7 - iVar6" (identifier "uVar9") (= "=") (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")) (- "-") (identifier "iVar6"))) (; ";")) (if_statement "if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {\n      uVar9 = uVar1 - uVar8;\n    }" (if "if") (parenthesized_expression "(uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6))" (( "(") (binary_expression "uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)" (binary_expression "uVar1 - uVar8" (identifier "uVar1") (- "-") (identifier "uVar8")) (<= "<=") (call_expression "(uint)((int)pcVar7 - iVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar7 - iVar6)" (( "(") (binary_expression "(int)pcVar7 - iVar6" (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")) (- "-") (identifier "iVar6")) () ")")))) () ")")) (compound_statement "{\n      uVar9 = uVar1 - uVar8;\n    }" ({ "{") (expression_statement "uVar9 = uVar1 - uVar8;" (assignment_expression "uVar9 = uVar1 - uVar8" (identifier "uVar9") (= "=") (binary_expression "uVar1 - uVar8" (identifier "uVar1") (- "-") (identifier "uVar8"))) (; ";")) (} "}"))) (labeled_statement "std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);" (call_expression "_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13)" (identifier "_M_replace") (argument_list "(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13)" (( "(") (identifier "psVar4") (, ",") (identifier "uVar8") (, ",") (identifier "uVar9") (, ",") (identifier "pcVar5") (, ",") (cast_expression "(uint)pcVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar13")) () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "(**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc);" (call_expression "(**(code **)(pcVar12 + 0x185a18))\n            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc)" (parenthesized_expression "(**(code **)(pcVar12 + 0x185a18))" (( "(") (pointer_expression "**(code **)(pcVar12 + 0x185a18)" (* "*") (pointer_expression "*(code **)(pcVar12 + 0x185a18)" (* "*") (cast_expression "(code **)(pcVar12 + 0x185a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar12 + 0x185a18)" (( "(") (binary_expression "pcVar12 + 0x185a18" (identifier "pcVar12") (+ "+") (number_literal "0x185a18")) () ")"))))) () ")")) (argument_list "(*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,\n             uVar1,pcVar12 + 0x18c9fc)" (( "(") (binary_expression "*(int *)(pcVar12 + 0x18520c) + -0xe00" (pointer_expression "*(int *)(pcVar12 + 0x18520c)" (* "*") (cast_expression "(int *)(pcVar12 + 0x18520c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar12 + 0x18520c)" (( "(") (binary_expression "pcVar12 + 0x18520c" (identifier "pcVar12") (+ "+") (number_literal "0x18520c")) () ")")))) (+ "+") (number_literal "-0xe00")) (, ",") (binary_expression "*(int *)(pcVar12 + 0x184a98) + -0x3aec" (pointer_expression "*(int *)(pcVar12 + 0x184a98)" (* "*") (cast_expression "(int *)(pcVar12 + 0x184a98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar12 + 0x184a98)" (( "(") (binary_expression "pcVar12 + 0x184a98" (identifier "pcVar12") (+ "+") (number_literal "0x184a98")) () ")")))) (+ "+") (number_literal "-0x3aec")) (, ",") (identifier "uVar8") (, ",") (identifier "uVar1") (, ",") (binary_expression "pcVar12 + 0x18c9fc" (identifier "pcVar12") (+ "+") (number_literal "0x18c9fc")) () ")"))) (; ";")) (return_statement "return;" (return "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: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (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)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_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) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (subscript_expression argument: (identifier) index: (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: (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (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)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (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: (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: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_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) (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: (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: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (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: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_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) (identifier) (identifier) (identifier) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (return_statement))) (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)) (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) (binary_expression left: (identifier) right: (number_literal))))) (return_statement))))

void MASKED(string *param_1,char *param_2,undefined4 *param_3)

{
  uint uVar1;
  char *pcVar2;
  char *pcVar3;
  string *psVar4;
  char *pcVar5;
  int iVar6;
  char *pcVar7;
  uint uVar8;
  uint uVar9;
  undefined *puVar10;
  code *pcVar11;
  code *pcVar12;
  code *pcVar13;
  uint in_stack_ffffff80;
  
  pcVar2 = *(char **)(param_1 + 4);
  if (param_2 <= pcVar2) {
    std::string::_M_replace(param_1,(uint)param_2,0,(char *)*param_3,param_3[1]);
    return;
  }
  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);
  pcVar5 = PTR_UINT_004c12dc + -0x3aec;
  puVar10 = PTR___throw_out_of_range_fmt_004c225c;
  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();
  uVar1 = (**(code **)(puVar10 + 0x189608))(pcVar2);
  if (pcVar5 <= *(char **)(psVar4 + 4)) {
    pcVar3 = *(char **)(psVar4 + 4) + -(int)pcVar5;
    if (pcVar3 <= param_2) {
      param_2 = pcVar3;
    }
    std::string::_M_replace(psVar4,(uint)pcVar5,(uint)param_2,pcVar2,uVar1);
    return;
  }
  pcVar11 = *(code **)(puVar10 + 0x185cc8);
  pcVar2 = (char *)(*(int *)(puVar10 + 0x184d48) - 0x3aec);
  psVar4 = (string *)(*(int *)(puVar10 + 0x1854bc) + -0xe00);
  (*pcVar11)();
  uVar1 = (**(code **)(pcVar11 + 0x189550))(pcVar5);
  pcVar3 = *(char **)(psVar4 + 4);
  if (pcVar2 <= pcVar3) {
    std::string::_M_replace(psVar4,(uint)pcVar2,0,pcVar5,uVar1);
    return;
  }
  pcVar12 = *(code **)(pcVar11 + 0x185c10);
  iVar6 = *(int *)(pcVar11 + 0x184c90) + -0x3aec;
  psVar4 = (string *)(*(int *)(pcVar11 + 0x185404) + -0xe00);
  (*pcVar12)();
  pcVar11 = pcVar12 + 0x18cb58;
  pcVar5 = *(char **)(psVar4 + 4);
  pcVar7 = (char *)(iVar6 - *(int *)psVar4);
  if (pcVar7 <= pcVar5) {
    uVar1 = (int)pcVar2 - iVar6;
    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar2 - iVar6)) {
      uVar1 = (int)pcVar5 - (int)pcVar7;
    }
    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar3,in_stack_ffffff80);
    return;
  }
  pcVar13 = *(code **)(pcVar12 + 0x185b74);
  psVar4 = (string *)(*(int *)(pcVar12 + 0x185368) + -0xe00);
  iVar6 = *(int *)(pcVar12 + 0x184bf4) + -0x3aec;
  (*pcVar13)();
  pcVar12 = pcVar13 + 0x18caec;
  pcVar2 = *(char **)(psVar4 + 4);
  pcVar3 = (char *)(iVar6 - *(int *)psVar4);
  if (pcVar3 <= pcVar2) {
    uVar1 = (int)pcVar7 - iVar6;
    if ((uint)((int)pcVar2 - (int)pcVar3) <= (uint)((int)pcVar7 - iVar6)) {
      uVar1 = (int)pcVar2 - (int)pcVar3;
    }
    std::string::_M_replace(psVar4,(uint)pcVar3,uVar1,pcVar5,(int)pcVar11 - (int)pcVar5);
    return;
  }
  pcVar11 = *(code **)(pcVar13 + 0x185b08);
  psVar4 = (string *)(*(int *)(pcVar13 + 0x1852fc) + -0xe00);
  iVar6 = *(int *)(pcVar13 + 0x184b88) + -0x3aec;
  (*pcVar11)();
  pcVar13 = pcVar11 + 0x18ca74;
  pcVar5 = *(char **)(psVar4 + 4);
  pcVar7 = (char *)(iVar6 - *(int *)psVar4);
  if (pcVar7 <= pcVar5) {
    uVar1 = (int)pcVar3 - iVar6;
    if ((uint)((int)pcVar5 - (int)pcVar7) <= (uint)((int)pcVar3 - iVar6)) {
      uVar1 = (int)pcVar5 - (int)pcVar7;
    }
    std::string::_M_replace(psVar4,(uint)pcVar7,uVar1,pcVar2,(int)pcVar12 - (int)pcVar2);
    return;
  }
  pcVar12 = *(code **)(pcVar11 + 0x185a90);
  psVar4 = (string *)(*(int *)(pcVar11 + 0x185284) + -0xe00);
  iVar6 = *(int *)(pcVar11 + 0x184b10) + -0x3aec;
  (*pcVar12)();
  uVar1 = *(uint *)(psVar4 + 4);
  uVar8 = iVar6 - *(int *)psVar4;
  if (uVar8 <= uVar1) {
    uVar9 = (int)pcVar7 - iVar6;
    if (uVar1 - uVar8 <= (uint)((int)pcVar7 - iVar6)) {
      uVar9 = uVar1 - uVar8;
    }
    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar5,(uint)pcVar13);
    return;
  }
  (**(code **)(pcVar12 + 0x185a18))
            (*(int *)(pcVar12 + 0x18520c) + -0xe00,*(int *)(pcVar12 + 0x184a98) + -0x3aec,uVar8,
             uVar1,pcVar12 + 0x18c9fc);
  return;
}

