
/* std::string::replace(__normal_iterator<char*, std::string >, __normal_iterator<char*, std::string
   >, char const*) */

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

{
  size_t sVar1;
  
  sVar1 = strlen(param_4);
  replace(this,param_2 - *(long *)this,param_3 - param_2,param_4,sVar1);
  return;
}



void FUN_002d72b0(long *param_1,long param_2,long param_3,char *param_4)

{
  size_t sVar1;
  
  sVar1 = strlen(param_4);
  FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);
  return;
}


PUSH R13
MOV R13,RCX
PUSH R12
MOV R12,RDI
MOV RDI,RCX
PUSH RBP
MOV RBP,RDX
PUSH RBX
MOV RBX,RSI
SUB RSP,0x8
CALL 0x00144490
MOV RDX,RBP
MOV RCX,R13
MOV RDI,R12
SUB RDX,RBX
SUB RBX,qword ptr [R12]
ADD RSP,0x8
MOV R8,RAX
MOV RSI,RBX
POP RBX
POP RBP
POP R12
POP R13
JMP 0x002d7010
(translation_unit "void FUN_002d72b0(long *param_1,long param_2,long param_3,char *param_4)\n\n{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_4);\n  FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);\n  return;\n}\n\n" (function_definition "void FUN_002d72b0(long *param_1,long param_2,long param_3,char *param_4)\n\n{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_4);\n  FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);\n  return;\n}" primitive_type (function_declarator "FUN_002d72b0(long *param_1,long param_2,long param_3,char *param_4)" identifier (parameter_list "(long *param_1,long param_2,long param_3,char *param_4)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_4);\n  FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);\n  return;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (expression_statement "sVar1 = strlen(param_4);" (assignment_expression "sVar1 = strlen(param_4)" identifier = (call_expression "strlen(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);" (call_expression "FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1)" identifier (argument_list "(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1)" ( identifier , (binary_expression "param_2 - *param_1" identifier - (pointer_expression "*param_1" * identifier)) , (binary_expression "param_3 - param_2" identifier - identifier) , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* std::string::replace(__normal_iterator<char*, std::string >, __normal_iterator<char*, std::string\n   >, char const*) */\n\nvoid __thiscall std::string::replace(string *this,long param_2,long param_3,char *param_4)\n\n{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_4);\n  replace(this,param_2 - *(long *)this,param_3 - param_2,param_4,sVar1);\n  return;\n}\n\n" comment (function_definition "void __thiscall std::string::replace(string *this,long param_2,long param_3,char *param_4)\n\n{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_4);\n  replace(this,param_2 - *(long *)this,param_3 - param_2,param_4,sVar1);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::string::" identifier : : identifier : :) (function_declarator "replace(string *this,long param_2,long param_3,char *param_4)" identifier (parameter_list "(string *this,long param_2,long param_3,char *param_4)" ( (parameter_declaration "string *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_4);\n  replace(this,param_2 - *(long *)this,param_3 - param_2,param_4,sVar1);\n  return;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (expression_statement "sVar1 = strlen(param_4);" (assignment_expression "sVar1 = strlen(param_4)" identifier = (call_expression "strlen(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "replace(this,param_2 - *(long *)this,param_3 - param_2,param_4,sVar1);" (call_expression "replace(this,param_2 - *(long *)this,param_3 - param_2,param_4,sVar1)" identifier (argument_list "(this,param_2 - *(long *)this,param_3 - param_2,param_4,sVar1)" ( identifier , (binary_expression "param_2 - *(long *)this" identifier - (pointer_expression "*(long *)this" * (cast_expression "(long *)this" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier))) , (binary_expression "param_3 - param_2" identifier - identifier) , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002d72b0(long *param_1,long param_2,long param_3,char *param_4)\n\n{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_4);\n  FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);\n  return;\n}\n\n" (function_definition "void FUN_002d72b0(long *param_1,long param_2,long param_3,char *param_4)\n\n{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_4);\n  FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);\n  return;\n}" primitive_type (function_declarator "FUN_002d72b0(long *param_1,long param_2,long param_3,char *param_4)" identifier (parameter_list "(long *param_1,long param_2,long param_3,char *param_4)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_4);\n  FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);\n  return;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (expression_statement "sVar1 = strlen(param_4);" (assignment_expression "sVar1 = strlen(param_4)" identifier = (call_expression "strlen(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);" (call_expression "FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1)" identifier (argument_list "(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1)" ( identifier , (binary_expression "param_2 - *param_1" identifier - (pointer_expression "*param_1" * identifier)) , (binary_expression "param_3 - param_2" identifier - identifier) , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT - (pointer_expression * IDENT)) , (binary_expression IDENT - IDENT) , IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_002d72b0(long *param_1,long param_2,long param_3,char *param_4)\n\n{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_4);\n  FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002d72b0(long *param_1,long param_2,long param_3,char *param_4)" (identifier "FUN_002d72b0") (parameter_list "(long *param_1,long param_2,long param_3,char *param_4)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "char *param_4" (primitive_type "char") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_4);\n  FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);\n  return;\n}" ({ "{") (declaration "size_t sVar1;" (primitive_type "size_t") (identifier "sVar1") (; ";")) (expression_statement "sVar1 = strlen(param_4);" (assignment_expression "sVar1 = strlen(param_4)" (identifier "sVar1") (= "=") (call_expression "strlen(param_4)" (identifier "strlen") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (expression_statement "FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);" (call_expression "FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1)" (identifier "FUN_002d7010") (argument_list "(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_2 - *param_1" (identifier "param_2") (- "-") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (, ",") (binary_expression "param_3 - param_2" (identifier "param_3") (- "-") (identifier "param_2")) (, ",") (identifier "param_4") (, ",") (identifier "sVar1") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* std::string::replace(__normal_iterator<char*, std::string >, __normal_iterator<char*, std::string
   >, char const*) */

void __thiscall std::type_1::function_1(type_1 *this,long var_2,long var_3,char *param_4)

{
  size_t sVar1;
  
  sVar1 = var_1(param_4);
  function_1(this,var_2 - *(long *)this,var_3 - var_2,param_4,sVar1);
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) (binary_expression left: (identifier) right: (identifier)) (identifier) (identifier)))) (return_statement))))

void MASKED(long *param_1,long param_2,long param_3,char *param_4)

{
  size_t sVar1;
  
  sVar1 = strlen(param_4);
  FUN_002d7010(param_1,param_2 - *param_1,param_3 - param_2,param_4,sVar1);
  return;
}

