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

void __thiscall std::string::replace(string *this,int param_2,int param_3,char *param_4,int param_5)

{
  char *pcVar1;
  char *pcVar2;
  uint uVar3;
  string *psVar4;
  char *pcVar5;
  undefined *puVar6;
  char *pcVar7;
  uint uVar8;
  uint uVar9;
  undefined *puVar10;
  code *pcVar11;
  undefined *puVar12;
  int iVar13;
  
  iVar13 = 0x4c9240;
  pcVar1 = *(char **)(this + 4);
  pcVar5 = (char *)(param_2 - *(int *)this);
  if (pcVar5 <= pcVar1) {
    uVar3 = param_3 - param_2;
    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {
      uVar3 = (int)pcVar1 - (int)pcVar5;
    }
    _M_replace(this,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);
    return;
  }
  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);
  puVar6 = PTR_UINT_004c12dc + -0x3aec;
  puVar10 = PTR___throw_out_of_range_fmt_004c225c;
  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();
  puVar12 = puVar10 + 0x18ca74;
  pcVar2 = *(char **)(psVar4 + 4);
  pcVar7 = puVar6 + -*(int *)psVar4;
  if (pcVar7 <= pcVar2) {
    uVar3 = (int)pcVar5 - (int)puVar6;
    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {
      uVar3 = (int)pcVar2 - (int)pcVar7;
    }
    _M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);
    return;
  }
  pcVar11 = *(code **)(puVar10 + 0x185a90);
  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);
  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;
  (*pcVar11)();
  uVar3 = *(uint *)(psVar4 + 4);
  uVar8 = iVar13 - *(int *)psVar4;
  if (uVar8 <= uVar3) {
    uVar9 = (int)pcVar7 - iVar13;
    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {
      uVar9 = uVar3 - uVar8;
    }
    _M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);
    return;
  }
  (**(code **)(pcVar11 + 0x185a18))
            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,
             uVar3,pcVar11 + 0x18c9fc);
  return;
}



void FUN_0033c754(string *param_1,int param_2,int param_3,char *param_4,int param_5)

{
  char *pcVar1;
  char *pcVar2;
  uint uVar3;
  string *psVar4;
  char *pcVar5;
  undefined *puVar6;
  char *pcVar7;
  uint uVar8;
  uint uVar9;
  undefined *puVar10;
  code *pcVar11;
  undefined *puVar12;
  int iVar13;
  
  iVar13 = 0x4c9240;
  pcVar1 = *(char **)(param_1 + 4);
  pcVar5 = (char *)(param_2 - *(int *)param_1);
  if (pcVar5 <= pcVar1) {
    uVar3 = param_3 - param_2;
    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {
      uVar3 = (int)pcVar1 - (int)pcVar5;
    }
    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);
    return;
  }
  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);
  puVar6 = PTR_UINT_004c12dc + -0x3aec;
  puVar10 = PTR___throw_out_of_range_fmt_004c225c;
  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();
  puVar12 = puVar10 + 0x18ca74;
  pcVar2 = *(char **)(psVar4 + 4);
  pcVar7 = puVar6 + -*(int *)psVar4;
  if (pcVar7 <= pcVar2) {
    uVar3 = (int)pcVar5 - (int)puVar6;
    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {
      uVar3 = (int)pcVar2 - (int)pcVar7;
    }
    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);
    return;
  }
  pcVar11 = *(code **)(puVar10 + 0x185a90);
  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);
  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;
  (*pcVar11)();
  uVar3 = *(uint *)(psVar4 + 4);
  uVar8 = iVar13 - *(int *)psVar4;
  if (uVar8 <= uVar3) {
    uVar9 = (int)pcVar7 - iVar13;
    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {
      uVar9 = uVar3 - uVar8;
    }
    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);
    return;
  }
  (**(code **)(pcVar11 + 0x185a18))
            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,
             uVar3,pcVar11 + 0x18c9fc);
  return;
}


lui gp,0x19
addiu gp,gp,-0x3514
addu gp,gp,t9
addiu sp,sp,-0x20
subu a2,a2,a1
lw v1,0x30(sp)
sw gp,0x10(sp)
sw ra,0x1c(sp)
lw t0,0x0(a0)
lw v0,0x4(a0)
subu a1,a1,t0
sltu t0,v0,a1
bne t0,zero,0x0033c7ac
_subu v1,v1,a3
subu v0,v0,a1
lw ra,0x1c(sp)
lw t9,-0x71a0(gp)
sw v1,0x30(sp)
sltu v1,a2,v0
movz a2,v0,v1
b 0x0033bed4
_addiu sp,sp,0x20
or a2,a1,zero
lw a0,-0x77f0(gp)
lw a1,-0x7f64(gp)
or a3,v0,zero
lw t9,-0x6fe4(gp)
addiu a0,a0,-0xe00
jalr t9
_addiu a1,a1,-0x3aec
(translation_unit "void FUN_0033c754(string *param_1,int param_2,int param_3,char *param_4,int param_5)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar13 = 0x4c9240;\n  pcVar1 = *(char **)(param_1 + 4);\n  pcVar5 = (char *)(param_2 - *(int *)param_1);\n  if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  puVar6 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  puVar12 = puVar10 + 0x18ca74;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar7 = puVar6 + -*(int *)psVar4;\n  if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185a90);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);\n  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;\n  (*pcVar11)();\n  uVar3 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar13 - *(int *)psVar4;\n  if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }\n  (**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);\n  return;\n}\n\n" (function_definition "void FUN_0033c754(string *param_1,int param_2,int param_3,char *param_4,int param_5)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar13 = 0x4c9240;\n  pcVar1 = *(char **)(param_1 + 4);\n  pcVar5 = (char *)(param_2 - *(int *)param_1);\n  if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  puVar6 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  puVar12 = puVar10 + 0x18ca74;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar7 = puVar6 + -*(int *)psVar4;\n  if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185a90);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);\n  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;\n  (*pcVar11)();\n  uVar3 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar13 - *(int *)psVar4;\n  if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }\n  (**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);\n  return;\n}" primitive_type (function_declarator "FUN_0033c754(string *param_1,int param_2,int param_3,char *param_4,int param_5)" identifier (parameter_list "(string *param_1,int param_2,int param_3,char *param_4,int param_5)" ( (parameter_declaration "string *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar13 = 0x4c9240;\n  pcVar1 = *(char **)(param_1 + 4);\n  pcVar5 = (char *)(param_2 - *(int *)param_1);\n  if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  puVar6 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  puVar12 = puVar10 + 0x18ca74;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar7 = puVar6 + -*(int *)psVar4;\n  if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185a90);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);\n  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;\n  (*pcVar11)();\n  uVar3 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar13 - *(int *)psVar4;\n  if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }\n  (**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * 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 "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * 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 "undefined *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (expression_statement "iVar13 = 0x4c9240;" (assignment_expression "iVar13 = 0x4c9240" identifier = number_literal) ;) (expression_statement "pcVar1 = *(char **)(param_1 + 4);" (assignment_expression "pcVar1 = *(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) ))))) ;) (expression_statement "pcVar5 = (char *)(param_2 - *(int *)param_1);" (assignment_expression "pcVar5 = (char *)(param_2 - *(int *)param_1)" identifier = (cast_expression "(char *)(param_2 - *(int *)param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 - *(int *)param_1)" ( (binary_expression "param_2 - *(int *)param_1" identifier - (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (if_statement "if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }" if (parenthesized_expression "(pcVar5 <= pcVar1)" ( (binary_expression "pcVar5 <= pcVar1" identifier <= identifier) )) (compound_statement "{\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }" { (expression_statement "uVar3 = param_3 - param_2;" (assignment_expression "uVar3 = param_3 - param_2" identifier = (binary_expression "param_3 - param_2" identifier - identifier)) ;) (if_statement "if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }" if (parenthesized_expression "((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2))" ( (binary_expression "(uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)" (call_expression "(uint)((int)pcVar1 - (int)pcVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar1 - (int)pcVar5)" ( (binary_expression "(int)pcVar1 - (int)pcVar5" (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)(param_3 - param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 - param_2)" ( (binary_expression "param_3 - param_2" identifier - identifier) )))) )) (compound_statement "{\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }" { (expression_statement "uVar3 = (int)pcVar1 - (int)pcVar5;" (assignment_expression "uVar3 = (int)pcVar1 - (int)pcVar5" identifier = (binary_expression "(int)pcVar1 - (int)pcVar5" (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);" (call_expression "_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4)" identifier (argument_list "(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4)" ( identifier , (cast_expression "(uint)pcVar5" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "param_5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;))) (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 "puVar6 = PTR_UINT_004c12dc + -0x3aec;" (assignment_expression "puVar6 = 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 "puVar12 = puVar10 + 0x18ca74;" (assignment_expression "puVar12 = puVar10 + 0x18ca74" identifier = (binary_expression "puVar10 + 0x18ca74" 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 "pcVar7 = puVar6 + -*(int *)psVar4;" (assignment_expression "pcVar7 = puVar6 + -*(int *)psVar4" identifier = (binary_expression "puVar6 + -*(int *)psVar4" identifier + (unary_expression "-*(int *)psVar4" - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))))) ;) (if_statement "if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }" if (parenthesized_expression "(pcVar7 <= pcVar2)" ( (binary_expression "pcVar7 <= pcVar2" identifier <= identifier) )) (compound_statement "{\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }" { (expression_statement "uVar3 = (int)pcVar5 - (int)puVar6;" (assignment_expression "uVar3 = (int)pcVar5 - (int)puVar6" identifier = (binary_expression "(int)pcVar5 - (int)puVar6" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }" if (parenthesized_expression "((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6))" ( (binary_expression "(uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)" (call_expression "(uint)((int)pcVar2 - (int)pcVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar2 - (int)pcVar7)" ( (binary_expression "(int)pcVar2 - (int)pcVar7" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)((int)pcVar5 - (int)puVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar5 - (int)puVar6)" ( (binary_expression "(int)pcVar5 - (int)puVar6" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }" { (expression_statement "uVar3 = (int)pcVar2 - (int)pcVar7;" (assignment_expression "uVar3 = (int)pcVar2 - (int)pcVar7" identifier = (binary_expression "(int)pcVar2 - (int)pcVar7" (cast_expression "(int)pcVar2" ( (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,uVar3,pcVar1,iVar13 - (int)pcVar1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);" (call_expression "_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1)" identifier (argument_list "(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1)" ( identifier , (cast_expression "(uint)pcVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "iVar13 - (int)pcVar1" identifier - (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x185a90);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x185a90)" identifier = (pointer_expression "*(code **)(puVar10 + 0x185a90)" * (cast_expression "(code **)(puVar10 + 0x185a90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x185a90)" ( (binary_expression "puVar10 + 0x185a90" identifier + number_literal) ))))) ;) (expression_statement "psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(puVar10 + 0x185284) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x185284) + -0xe00)" ( (binary_expression "*(int *)(puVar10 + 0x185284) + -0xe00" (pointer_expression "*(int *)(puVar10 + 0x185284)" * (cast_expression "(int *)(puVar10 + 0x185284)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x185284)" ( (binary_expression "puVar10 + 0x185284" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;" (assignment_expression "iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec" identifier = (binary_expression "*(int *)(puVar10 + 0x184b10) + -0x3aec" (pointer_expression "*(int *)(puVar10 + 0x184b10)" * (cast_expression "(int *)(puVar10 + 0x184b10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x184b10)" ( (binary_expression "puVar10 + 0x184b10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar3 = *(uint *)(psVar4 + 4);" (assignment_expression "uVar3 = *(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 = iVar13 - *(int *)psVar4;" (assignment_expression "uVar8 = iVar13 - *(int *)psVar4" identifier = (binary_expression "iVar13 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (if_statement "if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }" if (parenthesized_expression "(uVar8 <= uVar3)" ( (binary_expression "uVar8 <= uVar3" identifier <= identifier) )) (compound_statement "{\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }" { (expression_statement "uVar9 = (int)pcVar7 - iVar13;" (assignment_expression "uVar9 = (int)pcVar7 - iVar13" identifier = (binary_expression "(int)pcVar7 - iVar13" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }" if (parenthesized_expression "(uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13))" ( (binary_expression "uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)" (binary_expression "uVar3 - uVar8" identifier - identifier) <= (call_expression "(uint)((int)pcVar7 - iVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar7 - iVar13)" ( (binary_expression "(int)pcVar7 - iVar13" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar9 = uVar3 - uVar8;\n    }" { (expression_statement "uVar9 = uVar3 - uVar8;" (assignment_expression "uVar9 = uVar3 - uVar8" identifier = (binary_expression "uVar3 - uVar8" identifier - identifier)) ;) })) (labeled_statement "std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);" (call_expression "_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12)" identifier (argument_list "(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12)" ( identifier , identifier , identifier , identifier , (cast_expression "(uint)puVar12" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "(**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);" (call_expression "(**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc)" (parenthesized_expression "(**(code **)(pcVar11 + 0x185a18))" ( (pointer_expression "**(code **)(pcVar11 + 0x185a18)" * (pointer_expression "*(code **)(pcVar11 + 0x185a18)" * (cast_expression "(code **)(pcVar11 + 0x185a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x185a18)" ( (binary_expression "pcVar11 + 0x185a18" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc)" ( (binary_expression "*(int *)(pcVar11 + 0x18520c) + -0xe00" (pointer_expression "*(int *)(pcVar11 + 0x18520c)" * (cast_expression "(int *)(pcVar11 + 0x18520c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x18520c)" ( (binary_expression "pcVar11 + 0x18520c" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar11 + 0x184a98) + -0x3aec" (pointer_expression "*(int *)(pcVar11 + 0x184a98)" * (cast_expression "(int *)(pcVar11 + 0x184a98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x184a98)" ( (binary_expression "pcVar11 + 0x184a98" identifier + number_literal) )))) + number_literal) , identifier , identifier , (binary_expression "pcVar11 + 0x18c9fc" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* std::string::replace(__normal_iterator<char const*, std::string >, __normal_iterator<char const*,\n   std::string >, char*, char*) */\n\nvoid __thiscall std::string::replace(string *this,int param_2,int param_3,char *param_4,int param_5)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar13 = 0x4c9240;\n  pcVar1 = *(char **)(this + 4);\n  pcVar5 = (char *)(param_2 - *(int *)this);\n  if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    _M_replace(this,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  puVar6 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  puVar12 = puVar10 + 0x18ca74;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar7 = puVar6 + -*(int *)psVar4;\n  if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185a90);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);\n  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;\n  (*pcVar11)();\n  uVar3 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar13 - *(int *)psVar4;\n  if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    _M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }\n  (**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);\n  return;\n}\n\n" comment comment comment comment comment comment comment (function_definition "void __thiscall std::string::replace(string *this,int param_2,int param_3,char *param_4,int param_5)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar13 = 0x4c9240;\n  pcVar1 = *(char **)(this + 4);\n  pcVar5 = (char *)(param_2 - *(int *)this);\n  if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    _M_replace(this,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  puVar6 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  puVar12 = puVar10 + 0x18ca74;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar7 = puVar6 + -*(int *)psVar4;\n  if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185a90);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);\n  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;\n  (*pcVar11)();\n  uVar3 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar13 - *(int *)psVar4;\n  if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    _M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }\n  (**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::string::" identifier : : identifier : :) (function_declarator "replace(string *this,int param_2,int param_3,char *param_4,int param_5)" identifier (parameter_list "(string *this,int param_2,int param_3,char *param_4,int param_5)" ( (parameter_declaration "string *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar13 = 0x4c9240;\n  pcVar1 = *(char **)(this + 4);\n  pcVar5 = (char *)(param_2 - *(int *)this);\n  if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    _M_replace(this,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  puVar6 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  puVar12 = puVar10 + 0x18ca74;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar7 = puVar6 + -*(int *)psVar4;\n  if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185a90);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);\n  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;\n  (*pcVar11)();\n  uVar3 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar13 - *(int *)psVar4;\n  if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    _M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }\n  (**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * 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 "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * 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 "undefined *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (expression_statement "iVar13 = 0x4c9240;" (assignment_expression "iVar13 = 0x4c9240" identifier = number_literal) ;) (expression_statement "pcVar1 = *(char **)(this + 4);" (assignment_expression "pcVar1 = *(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) ))))) ;) (expression_statement "pcVar5 = (char *)(param_2 - *(int *)this);" (assignment_expression "pcVar5 = (char *)(param_2 - *(int *)this)" identifier = (cast_expression "(char *)(param_2 - *(int *)this)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 - *(int *)this)" ( (binary_expression "param_2 - *(int *)this" identifier - (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (if_statement "if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    _M_replace(this,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }" if (parenthesized_expression "(pcVar5 <= pcVar1)" ( (binary_expression "pcVar5 <= pcVar1" identifier <= identifier) )) (compound_statement "{\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    _M_replace(this,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }" { (expression_statement "uVar3 = param_3 - param_2;" (assignment_expression "uVar3 = param_3 - param_2" identifier = (binary_expression "param_3 - param_2" identifier - identifier)) ;) (if_statement "if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }" if (parenthesized_expression "((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2))" ( (binary_expression "(uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)" (call_expression "(uint)((int)pcVar1 - (int)pcVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar1 - (int)pcVar5)" ( (binary_expression "(int)pcVar1 - (int)pcVar5" (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)(param_3 - param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 - param_2)" ( (binary_expression "param_3 - param_2" identifier - identifier) )))) )) (compound_statement "{\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }" { (expression_statement "uVar3 = (int)pcVar1 - (int)pcVar5;" (assignment_expression "uVar3 = (int)pcVar1 - (int)pcVar5" identifier = (binary_expression "(int)pcVar1 - (int)pcVar5" (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "_M_replace(this,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);" (call_expression "_M_replace(this,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4)" identifier (argument_list "(this,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4)" ( identifier , (cast_expression "(uint)pcVar5" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "param_5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (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 "puVar6 = PTR_UINT_004c12dc + -0x3aec;" (assignment_expression "puVar6 = 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 "puVar12 = puVar10 + 0x18ca74;" (assignment_expression "puVar12 = puVar10 + 0x18ca74" identifier = (binary_expression "puVar10 + 0x18ca74" 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 "pcVar7 = puVar6 + -*(int *)psVar4;" (assignment_expression "pcVar7 = puVar6 + -*(int *)psVar4" identifier = (binary_expression "puVar6 + -*(int *)psVar4" identifier + (unary_expression "-*(int *)psVar4" - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))))) ;) (if_statement "if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }" if (parenthesized_expression "(pcVar7 <= pcVar2)" ( (binary_expression "pcVar7 <= pcVar2" identifier <= identifier) )) (compound_statement "{\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    _M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }" { (expression_statement "uVar3 = (int)pcVar5 - (int)puVar6;" (assignment_expression "uVar3 = (int)pcVar5 - (int)puVar6" identifier = (binary_expression "(int)pcVar5 - (int)puVar6" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }" if (parenthesized_expression "((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6))" ( (binary_expression "(uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)" (call_expression "(uint)((int)pcVar2 - (int)pcVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar2 - (int)pcVar7)" ( (binary_expression "(int)pcVar2 - (int)pcVar7" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)((int)pcVar5 - (int)puVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar5 - (int)puVar6)" ( (binary_expression "(int)pcVar5 - (int)puVar6" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }" { (expression_statement "uVar3 = (int)pcVar2 - (int)pcVar7;" (assignment_expression "uVar3 = (int)pcVar2 - (int)pcVar7" identifier = (binary_expression "(int)pcVar2 - (int)pcVar7" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);" (call_expression "_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1)" identifier (argument_list "(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1)" ( identifier , (cast_expression "(uint)pcVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "iVar13 - (int)pcVar1" identifier - (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x185a90);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x185a90)" identifier = (pointer_expression "*(code **)(puVar10 + 0x185a90)" * (cast_expression "(code **)(puVar10 + 0x185a90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x185a90)" ( (binary_expression "puVar10 + 0x185a90" identifier + number_literal) ))))) ;) (expression_statement "psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(puVar10 + 0x185284) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x185284) + -0xe00)" ( (binary_expression "*(int *)(puVar10 + 0x185284) + -0xe00" (pointer_expression "*(int *)(puVar10 + 0x185284)" * (cast_expression "(int *)(puVar10 + 0x185284)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x185284)" ( (binary_expression "puVar10 + 0x185284" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;" (assignment_expression "iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec" identifier = (binary_expression "*(int *)(puVar10 + 0x184b10) + -0x3aec" (pointer_expression "*(int *)(puVar10 + 0x184b10)" * (cast_expression "(int *)(puVar10 + 0x184b10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x184b10)" ( (binary_expression "puVar10 + 0x184b10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar3 = *(uint *)(psVar4 + 4);" (assignment_expression "uVar3 = *(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 = iVar13 - *(int *)psVar4;" (assignment_expression "uVar8 = iVar13 - *(int *)psVar4" identifier = (binary_expression "iVar13 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (if_statement "if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    _M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }" if (parenthesized_expression "(uVar8 <= uVar3)" ( (binary_expression "uVar8 <= uVar3" identifier <= identifier) )) (compound_statement "{\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    _M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }" { (expression_statement "uVar9 = (int)pcVar7 - iVar13;" (assignment_expression "uVar9 = (int)pcVar7 - iVar13" identifier = (binary_expression "(int)pcVar7 - iVar13" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }" if (parenthesized_expression "(uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13))" ( (binary_expression "uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)" (binary_expression "uVar3 - uVar8" identifier - identifier) <= (call_expression "(uint)((int)pcVar7 - iVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar7 - iVar13)" ( (binary_expression "(int)pcVar7 - iVar13" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar9 = uVar3 - uVar8;\n    }" { (expression_statement "uVar9 = uVar3 - uVar8;" (assignment_expression "uVar9 = uVar3 - uVar8" identifier = (binary_expression "uVar3 - uVar8" identifier - identifier)) ;) })) (expression_statement "_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);" (call_expression "_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12)" identifier (argument_list "(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12)" ( identifier , identifier , identifier , identifier , (cast_expression "(uint)puVar12" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (return_statement "return;" return ;) })) (expression_statement "(**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);" (call_expression "(**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc)" (parenthesized_expression "(**(code **)(pcVar11 + 0x185a18))" ( (pointer_expression "**(code **)(pcVar11 + 0x185a18)" * (pointer_expression "*(code **)(pcVar11 + 0x185a18)" * (cast_expression "(code **)(pcVar11 + 0x185a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x185a18)" ( (binary_expression "pcVar11 + 0x185a18" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc)" ( (binary_expression "*(int *)(pcVar11 + 0x18520c) + -0xe00" (pointer_expression "*(int *)(pcVar11 + 0x18520c)" * (cast_expression "(int *)(pcVar11 + 0x18520c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x18520c)" ( (binary_expression "pcVar11 + 0x18520c" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar11 + 0x184a98) + -0x3aec" (pointer_expression "*(int *)(pcVar11 + 0x184a98)" * (cast_expression "(int *)(pcVar11 + 0x184a98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x184a98)" ( (binary_expression "pcVar11 + 0x184a98" identifier + number_literal) )))) + number_literal) , identifier , identifier , (binary_expression "pcVar11 + 0x18c9fc" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0033c754(string *param_1,int param_2,int param_3,char *param_4,int param_5)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar13 = 0x4c9240;\n  pcVar1 = *(char **)(param_1 + 4);\n  pcVar5 = (char *)(param_2 - *(int *)param_1);\n  if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  puVar6 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  puVar12 = puVar10 + 0x18ca74;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar7 = puVar6 + -*(int *)psVar4;\n  if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185a90);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);\n  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;\n  (*pcVar11)();\n  uVar3 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar13 - *(int *)psVar4;\n  if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }\n  (**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);\n  return;\n}\n\n" (function_definition "void FUN_0033c754(string *param_1,int param_2,int param_3,char *param_4,int param_5)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar13 = 0x4c9240;\n  pcVar1 = *(char **)(param_1 + 4);\n  pcVar5 = (char *)(param_2 - *(int *)param_1);\n  if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  puVar6 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  puVar12 = puVar10 + 0x18ca74;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar7 = puVar6 + -*(int *)psVar4;\n  if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185a90);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);\n  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;\n  (*pcVar11)();\n  uVar3 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar13 - *(int *)psVar4;\n  if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }\n  (**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);\n  return;\n}" primitive_type (function_declarator "FUN_0033c754(string *param_1,int param_2,int param_3,char *param_4,int param_5)" identifier (parameter_list "(string *param_1,int param_2,int param_3,char *param_4,int param_5)" ( (parameter_declaration "string *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar13 = 0x4c9240;\n  pcVar1 = *(char **)(param_1 + 4);\n  pcVar5 = (char *)(param_2 - *(int *)param_1);\n  if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  puVar6 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  puVar12 = puVar10 + 0x18ca74;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar7 = puVar6 + -*(int *)psVar4;\n  if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185a90);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);\n  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;\n  (*pcVar11)();\n  uVar3 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar13 - *(int *)psVar4;\n  if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }\n  (**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * 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 "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * 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 "undefined *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (expression_statement "iVar13 = 0x4c9240;" (assignment_expression "iVar13 = 0x4c9240" identifier = number_literal) ;) (expression_statement "pcVar1 = *(char **)(param_1 + 4);" (assignment_expression "pcVar1 = *(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) ))))) ;) (expression_statement "pcVar5 = (char *)(param_2 - *(int *)param_1);" (assignment_expression "pcVar5 = (char *)(param_2 - *(int *)param_1)" identifier = (cast_expression "(char *)(param_2 - *(int *)param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 - *(int *)param_1)" ( (binary_expression "param_2 - *(int *)param_1" identifier - (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (if_statement "if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }" if (parenthesized_expression "(pcVar5 <= pcVar1)" ( (binary_expression "pcVar5 <= pcVar1" identifier <= identifier) )) (compound_statement "{\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }" { (expression_statement "uVar3 = param_3 - param_2;" (assignment_expression "uVar3 = param_3 - param_2" identifier = (binary_expression "param_3 - param_2" identifier - identifier)) ;) (if_statement "if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }" if (parenthesized_expression "((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2))" ( (binary_expression "(uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)" (call_expression "(uint)((int)pcVar1 - (int)pcVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar1 - (int)pcVar5)" ( (binary_expression "(int)pcVar1 - (int)pcVar5" (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)(param_3 - param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 - param_2)" ( (binary_expression "param_3 - param_2" identifier - identifier) )))) )) (compound_statement "{\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }" { (expression_statement "uVar3 = (int)pcVar1 - (int)pcVar5;" (assignment_expression "uVar3 = (int)pcVar1 - (int)pcVar5" identifier = (binary_expression "(int)pcVar1 - (int)pcVar5" (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);" (call_expression "_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4)" identifier (argument_list "(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4)" ( identifier , (cast_expression "(uint)pcVar5" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "param_5 - (int)param_4" identifier - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;))) (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 "puVar6 = PTR_UINT_004c12dc + -0x3aec;" (assignment_expression "puVar6 = 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 "puVar12 = puVar10 + 0x18ca74;" (assignment_expression "puVar12 = puVar10 + 0x18ca74" identifier = (binary_expression "puVar10 + 0x18ca74" 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 "pcVar7 = puVar6 + -*(int *)psVar4;" (assignment_expression "pcVar7 = puVar6 + -*(int *)psVar4" identifier = (binary_expression "puVar6 + -*(int *)psVar4" identifier + (unary_expression "-*(int *)psVar4" - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))))) ;) (if_statement "if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }" if (parenthesized_expression "(pcVar7 <= pcVar2)" ( (binary_expression "pcVar7 <= pcVar2" identifier <= identifier) )) (compound_statement "{\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }" { (expression_statement "uVar3 = (int)pcVar5 - (int)puVar6;" (assignment_expression "uVar3 = (int)pcVar5 - (int)puVar6" identifier = (binary_expression "(int)pcVar5 - (int)puVar6" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }" if (parenthesized_expression "((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6))" ( (binary_expression "(uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)" (call_expression "(uint)((int)pcVar2 - (int)pcVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar2 - (int)pcVar7)" ( (binary_expression "(int)pcVar2 - (int)pcVar7" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (call_expression "(uint)((int)pcVar5 - (int)puVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar5 - (int)puVar6)" ( (binary_expression "(int)pcVar5 - (int)puVar6" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }" { (expression_statement "uVar3 = (int)pcVar2 - (int)pcVar7;" (assignment_expression "uVar3 = (int)pcVar2 - (int)pcVar7" identifier = (binary_expression "(int)pcVar2 - (int)pcVar7" (cast_expression "(int)pcVar2" ( (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,uVar3,pcVar1,iVar13 - (int)pcVar1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);" (call_expression "_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1)" identifier (argument_list "(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1)" ( identifier , (cast_expression "(uint)pcVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , identifier , (binary_expression "iVar13 - (int)pcVar1" identifier - (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x185a90);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x185a90)" identifier = (pointer_expression "*(code **)(puVar10 + 0x185a90)" * (cast_expression "(code **)(puVar10 + 0x185a90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x185a90)" ( (binary_expression "puVar10 + 0x185a90" identifier + number_literal) ))))) ;) (expression_statement "psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00)" identifier = (cast_expression "(string *)(*(int *)(puVar10 + 0x185284) + -0xe00)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x185284) + -0xe00)" ( (binary_expression "*(int *)(puVar10 + 0x185284) + -0xe00" (pointer_expression "*(int *)(puVar10 + 0x185284)" * (cast_expression "(int *)(puVar10 + 0x185284)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x185284)" ( (binary_expression "puVar10 + 0x185284" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;" (assignment_expression "iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec" identifier = (binary_expression "*(int *)(puVar10 + 0x184b10) + -0x3aec" (pointer_expression "*(int *)(puVar10 + 0x184b10)" * (cast_expression "(int *)(puVar10 + 0x184b10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x184b10)" ( (binary_expression "puVar10 + 0x184b10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar3 = *(uint *)(psVar4 + 4);" (assignment_expression "uVar3 = *(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 = iVar13 - *(int *)psVar4;" (assignment_expression "uVar8 = iVar13 - *(int *)psVar4" identifier = (binary_expression "iVar13 - *(int *)psVar4" identifier - (pointer_expression "*(int *)psVar4" * (cast_expression "(int *)psVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (if_statement "if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }" if (parenthesized_expression "(uVar8 <= uVar3)" ( (binary_expression "uVar8 <= uVar3" identifier <= identifier) )) (compound_statement "{\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }" { (expression_statement "uVar9 = (int)pcVar7 - iVar13;" (assignment_expression "uVar9 = (int)pcVar7 - iVar13" identifier = (binary_expression "(int)pcVar7 - iVar13" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }" if (parenthesized_expression "(uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13))" ( (binary_expression "uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)" (binary_expression "uVar3 - uVar8" identifier - identifier) <= (call_expression "(uint)((int)pcVar7 - iVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pcVar7 - iVar13)" ( (binary_expression "(int)pcVar7 - iVar13" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) )) (compound_statement "{\n      uVar9 = uVar3 - uVar8;\n    }" { (expression_statement "uVar9 = uVar3 - uVar8;" (assignment_expression "uVar9 = uVar3 - uVar8" identifier = (binary_expression "uVar3 - uVar8" identifier - identifier)) ;) })) (labeled_statement "std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);" (call_expression "_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12)" identifier (argument_list "(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12)" ( identifier , identifier , identifier , identifier , (cast_expression "(uint)puVar12" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "(**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);" (call_expression "(**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc)" (parenthesized_expression "(**(code **)(pcVar11 + 0x185a18))" ( (pointer_expression "**(code **)(pcVar11 + 0x185a18)" * (pointer_expression "*(code **)(pcVar11 + 0x185a18)" * (cast_expression "(code **)(pcVar11 + 0x185a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x185a18)" ( (binary_expression "pcVar11 + 0x185a18" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc)" ( (binary_expression "*(int *)(pcVar11 + 0x18520c) + -0xe00" (pointer_expression "*(int *)(pcVar11 + 0x18520c)" * (cast_expression "(int *)(pcVar11 + 0x18520c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x18520c)" ( (binary_expression "pcVar11 + 0x18520c" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar11 + 0x184a98) + -0x3aec" (pointer_expression "*(int *)(pcVar11 + 0x184a98)" * (cast_expression "(int *)(pcVar11 + 0x184a98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x184a98)" ( (binary_expression "pcVar11 + 0x184a98" identifier + number_literal) )))) + number_literal) , identifier , identifier , (binary_expression "pcVar11 + 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 IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_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 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 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 IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;))) (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 = (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 = (binary_expression IDENT + (unary_expression - (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) - (cast_expression ( (type_descriptor TYPE) ) 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) - (cast_expression ( (type_descriptor TYPE) ) 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 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_0033c754(string *param_1,int param_2,int param_3,char *param_4,int param_5)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar13 = 0x4c9240;\n  pcVar1 = *(char **)(param_1 + 4);\n  pcVar5 = (char *)(param_2 - *(int *)param_1);\n  if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  puVar6 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  puVar12 = puVar10 + 0x18ca74;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar7 = puVar6 + -*(int *)psVar4;\n  if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185a90);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);\n  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;\n  (*pcVar11)();\n  uVar3 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar13 - *(int *)psVar4;\n  if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }\n  (**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0033c754(string *param_1,int param_2,int param_3,char *param_4,int param_5)" (identifier "FUN_0033c754") (parameter_list "(string *param_1,int param_2,int param_3,char *param_4,int param_5)" (( "(") (parameter_declaration "string *param_1" (type_identifier "string") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "char *param_4" (primitive_type "char") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  char *pcVar1;\n  char *pcVar2;\n  uint uVar3;\n  string *psVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  char *pcVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar13 = 0x4c9240;\n  pcVar1 = *(char **)(param_1 + 4);\n  pcVar5 = (char *)(param_2 - *(int *)param_1);\n  if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }\n  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);\n  puVar6 = PTR_UINT_004c12dc + -0x3aec;\n  puVar10 = PTR___throw_out_of_range_fmt_004c225c;\n  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();\n  puVar12 = puVar10 + 0x18ca74;\n  pcVar2 = *(char **)(psVar4 + 4);\n  pcVar7 = puVar6 + -*(int *)psVar4;\n  if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x185a90);\n  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);\n  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;\n  (*pcVar11)();\n  uVar3 = *(uint *)(psVar4 + 4);\n  uVar8 = iVar13 - *(int *)psVar4;\n  if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }\n  (**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);\n  return;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "string *psVar4;" (type_identifier "string") (pointer_declarator "*psVar4" (* "*") (identifier "psVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined *puVar6;" (type_identifier "undefined") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (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 "undefined *puVar12;" (type_identifier "undefined") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (expression_statement "iVar13 = 0x4c9240;" (assignment_expression "iVar13 = 0x4c9240" (identifier "iVar13") (= "=") (number_literal "0x4c9240")) (; ";")) (expression_statement "pcVar1 = *(char **)(param_1 + 4);" (assignment_expression "pcVar1 = *(char **)(param_1 + 4)" (identifier "pcVar1") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "pcVar5 = (char *)(param_2 - *(int *)param_1);" (assignment_expression "pcVar5 = (char *)(param_2 - *(int *)param_1)" (identifier "pcVar5") (= "=") (cast_expression "(char *)(param_2 - *(int *)param_1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 - *(int *)param_1)" (( "(") (binary_expression "param_2 - *(int *)param_1" (identifier "param_2") (- "-") (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) () ")")))) (; ";")) (if_statement "if (pcVar5 <= pcVar1) {\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }" (if "if") (parenthesized_expression "(pcVar5 <= pcVar1)" (( "(") (binary_expression "pcVar5 <= pcVar1" (identifier "pcVar5") (<= "<=") (identifier "pcVar1")) () ")")) (compound_statement "{\n    uVar3 = param_3 - param_2;\n    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }\n    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);\n    return;\n  }" ({ "{") (expression_statement "uVar3 = param_3 - param_2;" (assignment_expression "uVar3 = param_3 - param_2" (identifier "uVar3") (= "=") (binary_expression "param_3 - param_2" (identifier "param_3") (- "-") (identifier "param_2"))) (; ";")) (if_statement "if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }" (if "if") (parenthesized_expression "((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2))" (( "(") (binary_expression "(uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)" (call_expression "(uint)((int)pcVar1 - (int)pcVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar1 - (int)pcVar5)" (( "(") (binary_expression "(int)pcVar1 - (int)pcVar5" (cast_expression "(int)pcVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar1")) (- "-") (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5"))) () ")"))) (<= "<=") (call_expression "(uint)(param_3 - param_2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_3 - param_2)" (( "(") (binary_expression "param_3 - param_2" (identifier "param_3") (- "-") (identifier "param_2")) () ")")))) () ")")) (compound_statement "{\n      uVar3 = (int)pcVar1 - (int)pcVar5;\n    }" ({ "{") (expression_statement "uVar3 = (int)pcVar1 - (int)pcVar5;" (assignment_expression "uVar3 = (int)pcVar1 - (int)pcVar5" (identifier "uVar3") (= "=") (binary_expression "(int)pcVar1 - (int)pcVar5" (cast_expression "(int)pcVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar1")) (- "-") (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5")))) (; ";")) (} "}"))) (labeled_statement "std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);" (call_expression "_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4)" (identifier "_M_replace") (argument_list "(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4)" (( "(") (identifier "param_1") (, ",") (cast_expression "(uint)pcVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar5")) (, ",") (identifier "uVar3") (, ",") (identifier "param_4") (, ",") (binary_expression "param_5 - (int)param_4" (identifier "param_5") (- "-") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) () ")"))) (; ";")))) (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 "puVar6 = PTR_UINT_004c12dc + -0x3aec;" (assignment_expression "puVar6 = PTR_UINT_004c12dc + -0x3aec" (identifier "puVar6") (= "=") (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 "puVar12 = puVar10 + 0x18ca74;" (assignment_expression "puVar12 = puVar10 + 0x18ca74" (identifier "puVar12") (= "=") (binary_expression "puVar10 + 0x18ca74" (identifier "puVar10") (+ "+") (number_literal "0x18ca74"))) (; ";")) (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 "pcVar7 = puVar6 + -*(int *)psVar4;" (assignment_expression "pcVar7 = puVar6 + -*(int *)psVar4" (identifier "pcVar7") (= "=") (binary_expression "puVar6 + -*(int *)psVar4" (identifier "puVar6") (+ "+") (unary_expression "-*(int *)psVar4" (- "-") (pointer_expression "*(int *)psVar4" (* "*") (cast_expression "(int *)psVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar4")))))) (; ";")) (if_statement "if (pcVar7 <= pcVar2) {\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }" (if "if") (parenthesized_expression "(pcVar7 <= pcVar2)" (( "(") (binary_expression "pcVar7 <= pcVar2" (identifier "pcVar7") (<= "<=") (identifier "pcVar2")) () ")")) (compound_statement "{\n    uVar3 = (int)pcVar5 - (int)puVar6;\n    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }\n    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);\n    return;\n  }" ({ "{") (expression_statement "uVar3 = (int)pcVar5 - (int)puVar6;" (assignment_expression "uVar3 = (int)pcVar5 - (int)puVar6" (identifier "uVar3") (= "=") (binary_expression "(int)pcVar5 - (int)puVar6" (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5")) (- "-") (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")))) (; ";")) (if_statement "if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }" (if "if") (parenthesized_expression "((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6))" (( "(") (binary_expression "(uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)" (call_expression "(uint)((int)pcVar2 - (int)pcVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar2 - (int)pcVar7)" (( "(") (binary_expression "(int)pcVar2 - (int)pcVar7" (cast_expression "(int)pcVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar2")) (- "-") (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7"))) () ")"))) (<= "<=") (call_expression "(uint)((int)pcVar5 - (int)puVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar5 - (int)puVar6)" (( "(") (binary_expression "(int)pcVar5 - (int)puVar6" (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5")) (- "-") (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6"))) () ")")))) () ")")) (compound_statement "{\n      uVar3 = (int)pcVar2 - (int)pcVar7;\n    }" ({ "{") (expression_statement "uVar3 = (int)pcVar2 - (int)pcVar7;" (assignment_expression "uVar3 = (int)pcVar2 - (int)pcVar7" (identifier "uVar3") (= "=") (binary_expression "(int)pcVar2 - (int)pcVar7" (cast_expression "(int)pcVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar2")) (- "-") (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")))) (; ";")) (} "}"))) (labeled_statement "std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);" (call_expression "_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1)" (identifier "_M_replace") (argument_list "(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1)" (( "(") (identifier "psVar4") (, ",") (cast_expression "(uint)pcVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar7")) (, ",") (identifier "uVar3") (, ",") (identifier "pcVar1") (, ",") (binary_expression "iVar13 - (int)pcVar1" (identifier "iVar13") (- "-") (cast_expression "(int)pcVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar1"))) () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x185a90);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x185a90)" (identifier "pcVar11") (= "=") (pointer_expression "*(code **)(puVar10 + 0x185a90)" (* "*") (cast_expression "(code **)(puVar10 + 0x185a90)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x185a90)" (( "(") (binary_expression "puVar10 + 0x185a90" (identifier "puVar10") (+ "+") (number_literal "0x185a90")) () ")"))))) (; ";")) (expression_statement "psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);" (assignment_expression "psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00)" (identifier "psVar4") (= "=") (cast_expression "(string *)(*(int *)(puVar10 + 0x185284) + -0xe00)" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0x185284) + -0xe00)" (( "(") (binary_expression "*(int *)(puVar10 + 0x185284) + -0xe00" (pointer_expression "*(int *)(puVar10 + 0x185284)" (* "*") (cast_expression "(int *)(puVar10 + 0x185284)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x185284)" (( "(") (binary_expression "puVar10 + 0x185284" (identifier "puVar10") (+ "+") (number_literal "0x185284")) () ")")))) (+ "+") (number_literal "-0xe00")) () ")")))) (; ";")) (expression_statement "iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;" (assignment_expression "iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec" (identifier "iVar13") (= "=") (binary_expression "*(int *)(puVar10 + 0x184b10) + -0x3aec" (pointer_expression "*(int *)(puVar10 + 0x184b10)" (* "*") (cast_expression "(int *)(puVar10 + 0x184b10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x184b10)" (( "(") (binary_expression "puVar10 + 0x184b10" (identifier "puVar10") (+ "+") (number_literal "0x184b10")) () ")")))) (+ "+") (number_literal "-0x3aec"))) (; ";")) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" (( "(") (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar3 = *(uint *)(psVar4 + 4);" (assignment_expression "uVar3 = *(uint *)(psVar4 + 4)" (identifier "uVar3") (= "=") (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 = iVar13 - *(int *)psVar4;" (assignment_expression "uVar8 = iVar13 - *(int *)psVar4" (identifier "uVar8") (= "=") (binary_expression "iVar13 - *(int *)psVar4" (identifier "iVar13") (- "-") (pointer_expression "*(int *)psVar4" (* "*") (cast_expression "(int *)psVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar4"))))) (; ";")) (if_statement "if (uVar8 <= uVar3) {\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }" (if "if") (parenthesized_expression "(uVar8 <= uVar3)" (( "(") (binary_expression "uVar8 <= uVar3" (identifier "uVar8") (<= "<=") (identifier "uVar3")) () ")")) (compound_statement "{\n    uVar9 = (int)pcVar7 - iVar13;\n    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }\n    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);\n    return;\n  }" ({ "{") (expression_statement "uVar9 = (int)pcVar7 - iVar13;" (assignment_expression "uVar9 = (int)pcVar7 - iVar13" (identifier "uVar9") (= "=") (binary_expression "(int)pcVar7 - iVar13" (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")) (- "-") (identifier "iVar13"))) (; ";")) (if_statement "if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {\n      uVar9 = uVar3 - uVar8;\n    }" (if "if") (parenthesized_expression "(uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13))" (( "(") (binary_expression "uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)" (binary_expression "uVar3 - uVar8" (identifier "uVar3") (- "-") (identifier "uVar8")) (<= "<=") (call_expression "(uint)((int)pcVar7 - iVar13)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pcVar7 - iVar13)" (( "(") (binary_expression "(int)pcVar7 - iVar13" (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")) (- "-") (identifier "iVar13")) () ")")))) () ")")) (compound_statement "{\n      uVar9 = uVar3 - uVar8;\n    }" ({ "{") (expression_statement "uVar9 = uVar3 - uVar8;" (assignment_expression "uVar9 = uVar3 - uVar8" (identifier "uVar9") (= "=") (binary_expression "uVar3 - uVar8" (identifier "uVar3") (- "-") (identifier "uVar8"))) (; ";")) (} "}"))) (labeled_statement "std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);" (call_expression "_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12)" (identifier "_M_replace") (argument_list "(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12)" (( "(") (identifier "psVar4") (, ",") (identifier "uVar8") (, ",") (identifier "uVar9") (, ",") (identifier "pcVar2") (, ",") (cast_expression "(uint)puVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar12")) () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "(**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc);" (call_expression "(**(code **)(pcVar11 + 0x185a18))\n            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc)" (parenthesized_expression "(**(code **)(pcVar11 + 0x185a18))" (( "(") (pointer_expression "**(code **)(pcVar11 + 0x185a18)" (* "*") (pointer_expression "*(code **)(pcVar11 + 0x185a18)" (* "*") (cast_expression "(code **)(pcVar11 + 0x185a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar11 + 0x185a18)" (( "(") (binary_expression "pcVar11 + 0x185a18" (identifier "pcVar11") (+ "+") (number_literal "0x185a18")) () ")"))))) () ")")) (argument_list "(*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,\n             uVar3,pcVar11 + 0x18c9fc)" (( "(") (binary_expression "*(int *)(pcVar11 + 0x18520c) + -0xe00" (pointer_expression "*(int *)(pcVar11 + 0x18520c)" (* "*") (cast_expression "(int *)(pcVar11 + 0x18520c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x18520c)" (( "(") (binary_expression "pcVar11 + 0x18520c" (identifier "pcVar11") (+ "+") (number_literal "0x18520c")) () ")")))) (+ "+") (number_literal "-0xe00")) (, ",") (binary_expression "*(int *)(pcVar11 + 0x184a98) + -0x3aec" (pointer_expression "*(int *)(pcVar11 + 0x184a98)" (* "*") (cast_expression "(int *)(pcVar11 + 0x184a98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x184a98)" (( "(") (binary_expression "pcVar11 + 0x184a98" (identifier "pcVar11") (+ "+") (number_literal "0x184a98")) () ")")))) (+ "+") (number_literal "-0x3aec")) (, ",") (identifier "uVar8") (, ",") (identifier "uVar3") (, ",") (binary_expression "pcVar11 + 0x18c9fc" (identifier "pcVar11") (+ "+") (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: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (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: (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: (primitive_type) declarator: (identifier)) (expression_statement (assignment_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: (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: (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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (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: (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: (binary_expression left: (identifier) right: (unary_expression argument: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (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,int param_2,int param_3,char *param_4,int param_5)

{
  char *pcVar1;
  char *pcVar2;
  uint uVar3;
  string *psVar4;
  char *pcVar5;
  undefined *puVar6;
  char *pcVar7;
  uint uVar8;
  uint uVar9;
  undefined *puVar10;
  code *pcVar11;
  undefined *puVar12;
  int iVar13;
  
  iVar13 = 0x4c9240;
  pcVar1 = *(char **)(param_1 + 4);
  pcVar5 = (char *)(param_2 - *(int *)param_1);
  if (pcVar5 <= pcVar1) {
    uVar3 = param_3 - param_2;
    if ((uint)((int)pcVar1 - (int)pcVar5) <= (uint)(param_3 - param_2)) {
      uVar3 = (int)pcVar1 - (int)pcVar5;
    }
    std::string::_M_replace(param_1,(uint)pcVar5,uVar3,param_4,param_5 - (int)param_4);
    return;
  }
  psVar4 = (string *)(PTR_s__s_004c1a50 + -0xe00);
  puVar6 = PTR_UINT_004c12dc + -0x3aec;
  puVar10 = PTR___throw_out_of_range_fmt_004c225c;
  (*(code *)PTR___throw_out_of_range_fmt_004c225c)();
  puVar12 = puVar10 + 0x18ca74;
  pcVar2 = *(char **)(psVar4 + 4);
  pcVar7 = puVar6 + -*(int *)psVar4;
  if (pcVar7 <= pcVar2) {
    uVar3 = (int)pcVar5 - (int)puVar6;
    if ((uint)((int)pcVar2 - (int)pcVar7) <= (uint)((int)pcVar5 - (int)puVar6)) {
      uVar3 = (int)pcVar2 - (int)pcVar7;
    }
    std::string::_M_replace(psVar4,(uint)pcVar7,uVar3,pcVar1,iVar13 - (int)pcVar1);
    return;
  }
  pcVar11 = *(code **)(puVar10 + 0x185a90);
  psVar4 = (string *)(*(int *)(puVar10 + 0x185284) + -0xe00);
  iVar13 = *(int *)(puVar10 + 0x184b10) + -0x3aec;
  (*pcVar11)();
  uVar3 = *(uint *)(psVar4 + 4);
  uVar8 = iVar13 - *(int *)psVar4;
  if (uVar8 <= uVar3) {
    uVar9 = (int)pcVar7 - iVar13;
    if (uVar3 - uVar8 <= (uint)((int)pcVar7 - iVar13)) {
      uVar9 = uVar3 - uVar8;
    }
    std::string::_M_replace(psVar4,uVar8,uVar9,pcVar2,(uint)puVar12);
    return;
  }
  (**(code **)(pcVar11 + 0x185a18))
            (*(int *)(pcVar11 + 0x18520c) + -0xe00,*(int *)(pcVar11 + 0x184a98) + -0x3aec,uVar8,
             uVar3,pcVar11 + 0x18c9fc);
  return;
}

