
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::wstring::insert(unsigned int, std::wstring const&) */

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

{
  if (param_1 <= *(uint *)(this + 4)) {
    _M_replace(this,param_1,0,*(wchar_t **)param_2,*(uint *)(param_2 + 4));
    return;
  }
                    /* WARNING: Subroutine does not return */
  __throw_out_of_range_fmt
            ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",
             param_1,*(uint *)(this + 4));
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void FUN_001b1c40(int param_1,uint param_2,undefined4 *param_3)

{
  if (param_2 <= *(uint *)(param_1 + 4)) {
    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",
               param_2,*(uint *)(param_1 + 4));
}


PUSH EDI
PUSH ESI
PUSH EBX
MOV EDX,dword ptr [ESP + 0x18]
CALL 0x00035680
ADD EBX,0x18d3b4
MOV ECX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x14]
MOV EDI,dword ptr [EDX + 0x4]
MOV ESI,dword ptr [EDX]
MOV EDX,dword ptr [ECX + 0x4]
CMP EAX,EDX
JA 0x001b1c7b
SUB ESP,0xc
PUSH EDI
PUSH ESI
PUSH 0x0
PUSH EAX
PUSH ECX
CALL 0x001b16e0
ADD ESP,0x20
POP EBX
POP ESI
POP EDI
RET
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xfff2d692]
PUSH EAX
LEA EAX,[EBX + 0xfff16ab4]
PUSH EAX
CALL 0x001f1f00
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_001b1c40(int param_1,uint param_2,undefined4 *param_3)\n\n{\n  if (param_2 <= *(uint *)(param_1 + 4)) {\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4));\n}\n\n" comment (function_definition "void FUN_001b1c40(int param_1,uint param_2,undefined4 *param_3)\n\n{\n  if (param_2 <= *(uint *)(param_1 + 4)) {\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4));\n}" primitive_type (function_declarator "FUN_001b1c40(int param_1,uint param_2,undefined4 *param_3)" identifier (parameter_list "(int param_1,uint param_2,undefined4 *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  if (param_2 <= *(uint *)(param_1 + 4)) {\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4));\n}" { (if_statement "if (param_2 <= *(uint *)(param_1 + 4)) {\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }" if (parenthesized_expression "(param_2 <= *(uint *)(param_1 + 4))" ( (binary_expression "param_2 <= *(uint *)(param_1 + 4)" identifier <= (pointer_expression "*(uint *)(param_1 + 4)" * (cast_expression "(uint *)(param_1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }" { (expression_statement "FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);" (call_expression "FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1])" identifier (argument_list "(param_1,param_2,0,*param_3,param_3[1])" ( identifier , identifier , number_literal , (pointer_expression "*param_3" * identifier) , (subscript_expression "param_3[1]" identifier [ number_literal ]) ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4));" (call_expression "FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4))" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4))" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::replace"" " string_content ") , identifier , (pointer_expression "*(uint *)(param_1 + 4)" * (cast_expression "(uint *)(param_1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* std::wstring::insert(unsigned int, std::wstring const&) */\n\nvoid __thiscall std::wstring::insert(wstring *this,uint param_1,wstring *param_2)\n\n{\n  if (param_1 <= *(uint *)(this + 4)) {\n    _M_replace(this,param_1,0,*(wchar_t **)param_2,*(uint *)(param_2 + 4));\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __throw_out_of_range_fmt\n            ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n             param_1,*(uint *)(this + 4));\n}\n\n" comment comment (function_definition "void __thiscall std::wstring::insert(wstring *this,uint param_1,wstring *param_2)\n\n{\n  if (param_1 <= *(uint *)(this + 4)) {\n    _M_replace(this,param_1,0,*(wchar_t **)param_2,*(uint *)(param_2 + 4));\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __throw_out_of_range_fmt\n            ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n             param_1,*(uint *)(this + 4));\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::wstring::" identifier : : identifier : :) (function_declarator "insert(wstring *this,uint param_1,wstring *param_2)" identifier (parameter_list "(wstring *this,uint param_1,wstring *param_2)" ( (parameter_declaration "wstring *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "wstring *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  if (param_1 <= *(uint *)(this + 4)) {\n    _M_replace(this,param_1,0,*(wchar_t **)param_2,*(uint *)(param_2 + 4));\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __throw_out_of_range_fmt\n            ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n             param_1,*(uint *)(this + 4));\n}" { (if_statement "if (param_1 <= *(uint *)(this + 4)) {\n    _M_replace(this,param_1,0,*(wchar_t **)param_2,*(uint *)(param_2 + 4));\n    return;\n  }" if (parenthesized_expression "(param_1 <= *(uint *)(this + 4))" ( (binary_expression "param_1 <= *(uint *)(this + 4)" identifier <= (pointer_expression "*(uint *)(this + 4)" * (cast_expression "(uint *)(this + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) )) (compound_statement "{\n    _M_replace(this,param_1,0,*(wchar_t **)param_2,*(uint *)(param_2 + 4));\n    return;\n  }" { (expression_statement "_M_replace(this,param_1,0,*(wchar_t **)param_2,*(uint *)(param_2 + 4));" (call_expression "_M_replace(this,param_1,0,*(wchar_t **)param_2,*(uint *)(param_2 + 4))" identifier (argument_list "(this,param_1,0,*(wchar_t **)param_2,*(uint *)(param_2 + 4))" ( identifier , identifier , number_literal , (pointer_expression "*(wchar_t **)param_2" * (cast_expression "(wchar_t **)param_2" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "__throw_out_of_range_fmt\n            ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n             param_1,*(uint *)(this + 4));" (call_expression "__throw_out_of_range_fmt\n            ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n             param_1,*(uint *)(this + 4))" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n             param_1,*(uint *)(this + 4))" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::replace"" " string_content ") , identifier , (pointer_expression "*(uint *)(this + 4)" * (cast_expression "(uint *)(this + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) ))) ;) })))
(translation_unit "void FUN_001b1c40(int param_1,uint param_2,undefined4 *param_3)\n\n{\n  if (param_2 <= *(uint *)(param_1 + 4)) {\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }\n                    \n  FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4));\n}\n\n" (function_definition "void FUN_001b1c40(int param_1,uint param_2,undefined4 *param_3)\n\n{\n  if (param_2 <= *(uint *)(param_1 + 4)) {\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }\n                    \n  FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4));\n}" primitive_type (function_declarator "FUN_001b1c40(int param_1,uint param_2,undefined4 *param_3)" identifier (parameter_list "(int param_1,uint param_2,undefined4 *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  if (param_2 <= *(uint *)(param_1 + 4)) {\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }\n                    \n  FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4));\n}" { (if_statement "if (param_2 <= *(uint *)(param_1 + 4)) {\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }" if (parenthesized_expression "(param_2 <= *(uint *)(param_1 + 4))" ( (binary_expression "param_2 <= *(uint *)(param_1 + 4)" identifier <= (pointer_expression "*(uint *)(param_1 + 4)" * (cast_expression "(uint *)(param_1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }" { (expression_statement "FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);" (call_expression "FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1])" identifier (argument_list "(param_1,param_2,0,*param_3,param_3[1])" ( identifier , identifier , number_literal , (pointer_expression "*param_3" * identifier) , (subscript_expression "param_3[1]" identifier [ number_literal ]) ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4));" (call_expression "FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4))" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4))" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::replace"" " string_content ") , identifier , (pointer_expression "*(uint *)(param_1 + 4)" * (cast_expression "(uint *)(param_1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , (pointer_expression * IDENT) , (subscript_expression IDENT [ LIT ]) ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })))
(function_definition "void FUN_001b1c40(int param_1,uint param_2,undefined4 *param_3)\n\n{\n  if (param_2 <= *(uint *)(param_1 + 4)) {\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }\n                    \n  FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4));\n}" (primitive_type "void") (function_declarator "FUN_001b1c40(int param_1,uint param_2,undefined4 *param_3)" (identifier "FUN_001b1c40") (parameter_list "(int param_1,uint param_2,undefined4 *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  if (param_2 <= *(uint *)(param_1 + 4)) {\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }\n                    \n  FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4));\n}" ({ "{") (if_statement "if (param_2 <= *(uint *)(param_1 + 4)) {\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }" (if "if") (parenthesized_expression "(param_2 <= *(uint *)(param_1 + 4))" (( "(") (binary_expression "param_2 <= *(uint *)(param_1 + 4)" (identifier "param_2") (<= "<=") (pointer_expression "*(uint *)(param_1 + 4)" (* "*") (cast_expression "(uint *)(param_1 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);\n    return;\n  }" ({ "{") (expression_statement "FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);" (call_expression "FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1])" (identifier "FUN_001b16e0") (argument_list "(param_1,param_2,0,*param_3,param_3[1])" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (pointer_expression "*param_3" (* "*") (identifier "param_3")) (, ",") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4));" (call_expression "FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4))" (identifier "FUN_001f1f00") (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",\n               param_2,*(uint *)(param_1 + 4))" (( "(") (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" (" """) (string_content "%s: __pos (which is %zu) > this->size() (which is %zu)") (" """)) (, ",") (string_literal ""basic_string::replace"" (" """) (string_content "basic_string::replace") (" """)) (, ",") (identifier "param_2") (, ",") (pointer_expression "*(uint *)(param_1 + 4)" (* "*") (cast_expression "(uint *)(param_1 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::wstring::insert(unsigned int, std::wstring const&) */

void __thiscall std::type_1::function_1(type_1 *var_2,type_2 var_1,type_1 *var_4)

{
  if (var_1 <= *(type_2 *)(var_2 + 4)) {
    var_3(var_2,var_1,0,*(type_3 **)var_4,*(type_2 *)(var_4 + 4));
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_5
            ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",
             var_1,*(type_2 *)(var_2 + 4));
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_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))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (pointer_expression argument: (identifier)) (subscript_expression argument: (identifier) index: (number_literal))))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void MASKED(int param_1,uint param_2,undefined4 *param_3)

{
  if (param_2 <= *(uint *)(param_1 + 4)) {
    FUN_001b16e0(param_1,param_2,0,*param_3,param_3[1]);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_001f1f00("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::replace",
               param_2,*(uint *)(param_1 + 4));
}

