
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* std::wstring std::TEMPNAMEPLACEHOLDERVALUE(wchar_t const*, std::wstring const&) */

wchar_t * std::operator+(wchar_t *param_1,wstring *param_2)

{
  size_t sVar1;
  wstring *in_RDX;
  
  sVar1 = wcslen((wchar_t *)param_2);
  *(undefined **)param_1 = &DAT_0044bdd8;
                    /* try { // try from 003571cc to 003571e9 has its CatchHandler @ 003571fa */
  wstring::reserve((wstring *)param_1,*(long *)(*(long *)in_RDX + -0x18) + sVar1);
  wstring::append((wstring *)param_1,(wchar_t *)param_2,sVar1);
  wstring::append((wstring *)param_1,in_RDX);
  return param_1;
}



undefined8 * FUN_00357190(undefined8 *param_1,wchar_t *param_2,long *param_3)

{
  size_t sVar1;
  
  sVar1 = wcslen(param_2);
  *param_1 = &DAT_0044bdd8;
                    /* try { // try from 003571cc to 003571e9 has its CatchHandler @ 003571fa */
  FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);
  FUN_00356c60(param_1,param_2,sVar1);
  FUN_00356ad0(param_1,param_3);
  return param_1;
}


PUSH R14
PUSH R13
PUSH R12
MOV R12,RSI
PUSH RBP
MOV RBP,RDX
PUSH RBX
MOV RBX,RDI
MOV RDI,RSI
SUB RSP,0x10
CALL 0x00147150
LEA R14,[0x44bdc0]
MOV RDI,RBX
MOV R13,RAX
LEA RAX,[R14 + 0x18]
MOV qword ptr [RBX],RAX
MOV RAX,qword ptr [RBP]
MOV RSI,qword ptr [RAX + -0x18]
ADD RSI,R13
CALL 0x003569f0
MOV RDX,R13
MOV RSI,R12
MOV RDI,RBX
CALL 0x00356c60
MOV RSI,RBP
MOV RDI,RBX
CALL 0x00356ad0
ADD RSP,0x10
MOV RAX,RBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
(translation_unit "undefined8 * FUN_00357190(undefined8 *param_1,wchar_t *param_2,long *param_3)\n\n{\n  size_t sVar1;\n  \n  sVar1 = wcslen(param_2);\n  *param_1 = &DAT_0044bdd8;\n                    /* try { // try from 003571cc to 003571e9 has its CatchHandler @ 003571fa */\n  FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);\n  FUN_00356c60(param_1,param_2,sVar1);\n  FUN_00356ad0(param_1,param_3);\n  return param_1;\n}\n\n" (function_definition "undefined8 * FUN_00357190(undefined8 *param_1,wchar_t *param_2,long *param_3)\n\n{\n  size_t sVar1;\n  \n  sVar1 = wcslen(param_2);\n  *param_1 = &DAT_0044bdd8;\n                    /* try { // try from 003571cc to 003571e9 has its CatchHandler @ 003571fa */\n  FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);\n  FUN_00356c60(param_1,param_2,sVar1);\n  FUN_00356ad0(param_1,param_3);\n  return param_1;\n}" type_identifier (pointer_declarator "* FUN_00357190(undefined8 *param_1,wchar_t *param_2,long *param_3)" * (function_declarator "FUN_00357190(undefined8 *param_1,wchar_t *param_2,long *param_3)" identifier (parameter_list "(undefined8 *param_1,wchar_t *param_2,long *param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "wchar_t *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  size_t sVar1;\n  \n  sVar1 = wcslen(param_2);\n  *param_1 = &DAT_0044bdd8;\n                    /* try { // try from 003571cc to 003571e9 has its CatchHandler @ 003571fa */\n  FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);\n  FUN_00356c60(param_1,param_2,sVar1);\n  FUN_00356ad0(param_1,param_3);\n  return param_1;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (expression_statement "sVar1 = wcslen(param_2);" (assignment_expression "sVar1 = wcslen(param_2)" identifier = (call_expression "wcslen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*param_1 = &DAT_0044bdd8;" (assignment_expression "*param_1 = &DAT_0044bdd8" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_0044bdd8" & identifier)) ;) comment (expression_statement "FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);" (call_expression "FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1)" identifier (argument_list "(param_1,*(long *)(*param_3 + -0x18) + sVar1)" ( identifier , (binary_expression "*(long *)(*param_3 + -0x18) + sVar1" (pointer_expression "*(long *)(*param_3 + -0x18)" * (cast_expression "(long *)(*param_3 + -0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + -0x18)" ( (binary_expression "*param_3 + -0x18" (pointer_expression "*param_3" * identifier) + number_literal) )))) + identifier) ))) ;) (expression_statement "FUN_00356c60(param_1,param_2,sVar1);" (call_expression "FUN_00356c60(param_1,param_2,sVar1)" identifier (argument_list "(param_1,param_2,sVar1)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00356ad0(param_1,param_3);" (call_expression "FUN_00356ad0(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* std::wstring std::TEMPNAMEPLACEHOLDERVALUE(wchar_t const*, std::wstring const&) */\n\nwchar_t * std::operator+(wchar_t *param_1,wstring *param_2)\n\n{\n  size_t sVar1;\n  wstring *in_RDX;\n  \n  sVar1 = wcslen((wchar_t *)param_2);\n  *(undefined **)param_1 = &DAT_0044bdd8;\n                    /* try { // try from 003571cc to 003571e9 has its CatchHandler @ 003571fa */\n  wstring::reserve((wstring *)param_1,*(long *)(*(long *)in_RDX + -0x18) + sVar1);\n  wstring::append((wstring *)param_1,(wchar_t *)param_2,sVar1);\n  wstring::append((wstring *)param_1,in_RDX);\n  return param_1;\n}\n\n" comment comment (ERROR "wchar_t * std::operator+(wchar_t *param_1,wstring *param_2)" (binary_expression "wchar_t * std::operator+(wchar_t *param_1,wstring *param_2)" (binary_expression "wchar_t * std" identifier * identifier) (ERROR "::operator" : : identifier) + (parenthesized_expression "(wchar_t *param_1,wstring *param_2)" ( (comma_expression "wchar_t *param_1,wstring *param_2" (binary_expression "wchar_t *param_1" identifier * identifier) , (binary_expression "wstring *param_2" identifier * identifier)) )))) (compound_statement "{\n  size_t sVar1;\n  wstring *in_RDX;\n  \n  sVar1 = wcslen((wchar_t *)param_2);\n  *(undefined **)param_1 = &DAT_0044bdd8;\n                    /* try { // try from 003571cc to 003571e9 has its CatchHandler @ 003571fa */\n  wstring::reserve((wstring *)param_1,*(long *)(*(long *)in_RDX + -0x18) + sVar1);\n  wstring::append((wstring *)param_1,(wchar_t *)param_2,sVar1);\n  wstring::append((wstring *)param_1,in_RDX);\n  return param_1;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "wstring *in_RDX;" type_identifier (pointer_declarator "*in_RDX" * identifier) ;) (expression_statement "sVar1 = wcslen((wchar_t *)param_2);" (assignment_expression "sVar1 = wcslen((wchar_t *)param_2)" identifier = (call_expression "wcslen((wchar_t *)param_2)" identifier (argument_list "((wchar_t *)param_2)" ( (cast_expression "(wchar_t *)param_2" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "*(undefined **)param_1 = &DAT_0044bdd8;" (assignment_expression "*(undefined **)param_1 = &DAT_0044bdd8" (pointer_expression "*(undefined **)param_1" * (cast_expression "(undefined **)param_1" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = (pointer_expression "&DAT_0044bdd8" & identifier)) ;) comment (labeled_statement "wstring::reserve((wstring *)param_1,*(long *)(*(long *)in_RDX + -0x18) + sVar1);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((wstring *)param_1,*(long *)(*(long *)in_RDX + -0x18) + sVar1);" (call_expression "reserve((wstring *)param_1,*(long *)(*(long *)in_RDX + -0x18) + sVar1)" identifier (argument_list "((wstring *)param_1,*(long *)(*(long *)in_RDX + -0x18) + sVar1)" ( (cast_expression "(wstring *)param_1" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "*(long *)(*(long *)in_RDX + -0x18) + sVar1" (pointer_expression "*(long *)(*(long *)in_RDX + -0x18)" * (cast_expression "(long *)(*(long *)in_RDX + -0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)in_RDX + -0x18)" ( (binary_expression "*(long *)in_RDX + -0x18" (pointer_expression "*(long *)in_RDX" * (cast_expression "(long *)in_RDX" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + identifier) ))) ;)) (labeled_statement "wstring::append((wstring *)param_1,(wchar_t *)param_2,sVar1);" statement_identifier : (ERROR ":" :) (expression_statement "append((wstring *)param_1,(wchar_t *)param_2,sVar1);" (call_expression "append((wstring *)param_1,(wchar_t *)param_2,sVar1)" identifier (argument_list "((wstring *)param_1,(wchar_t *)param_2,sVar1)" ( (cast_expression "(wstring *)param_1" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(wchar_t *)param_2" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) (labeled_statement "wstring::append((wstring *)param_1,in_RDX);" statement_identifier : (ERROR ":" :) (expression_statement "append((wstring *)param_1,in_RDX);" (call_expression "append((wstring *)param_1,in_RDX)" identifier (argument_list "((wstring *)param_1,in_RDX)" ( (cast_expression "(wstring *)param_1" ( (type_descriptor "wstring *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) (return_statement "return param_1;" return identifier ;) }))
(translation_unit "undefined8 * FUN_00357190(undefined8 *param_1,wchar_t *param_2,long *param_3)\n\n{\n  size_t sVar1;\n  \n  sVar1 = wcslen(param_2);\n  *param_1 = &DAT_0044bdd8;\n                    \n  FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);\n  FUN_00356c60(param_1,param_2,sVar1);\n  FUN_00356ad0(param_1,param_3);\n  return param_1;\n}\n\n" (function_definition "undefined8 * FUN_00357190(undefined8 *param_1,wchar_t *param_2,long *param_3)\n\n{\n  size_t sVar1;\n  \n  sVar1 = wcslen(param_2);\n  *param_1 = &DAT_0044bdd8;\n                    \n  FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);\n  FUN_00356c60(param_1,param_2,sVar1);\n  FUN_00356ad0(param_1,param_3);\n  return param_1;\n}" type_identifier (pointer_declarator "* FUN_00357190(undefined8 *param_1,wchar_t *param_2,long *param_3)" * (function_declarator "FUN_00357190(undefined8 *param_1,wchar_t *param_2,long *param_3)" identifier (parameter_list "(undefined8 *param_1,wchar_t *param_2,long *param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "wchar_t *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  size_t sVar1;\n  \n  sVar1 = wcslen(param_2);\n  *param_1 = &DAT_0044bdd8;\n                    \n  FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);\n  FUN_00356c60(param_1,param_2,sVar1);\n  FUN_00356ad0(param_1,param_3);\n  return param_1;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (expression_statement "sVar1 = wcslen(param_2);" (assignment_expression "sVar1 = wcslen(param_2)" identifier = (call_expression "wcslen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*param_1 = &DAT_0044bdd8;" (assignment_expression "*param_1 = &DAT_0044bdd8" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_0044bdd8" & identifier)) ;) (expression_statement "FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);" (call_expression "FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1)" identifier (argument_list "(param_1,*(long *)(*param_3 + -0x18) + sVar1)" ( identifier , (binary_expression "*(long *)(*param_3 + -0x18) + sVar1" (pointer_expression "*(long *)(*param_3 + -0x18)" * (cast_expression "(long *)(*param_3 + -0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + -0x18)" ( (binary_expression "*param_3 + -0x18" (pointer_expression "*param_3" * identifier) + number_literal) )))) + identifier) ))) ;) (expression_statement "FUN_00356c60(param_1,param_2,sVar1);" (call_expression "FUN_00356c60(param_1,param_2,sVar1)" identifier (argument_list "(param_1,param_2,sVar1)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00356ad0(param_1,param_3);" (call_expression "FUN_00356ad0(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined8 * FUN_00357190(undefined8 *param_1,wchar_t *param_2,long *param_3)\n\n{\n  size_t sVar1;\n  \n  sVar1 = wcslen(param_2);\n  *param_1 = &DAT_0044bdd8;\n                    \n  FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);\n  FUN_00356c60(param_1,param_2,sVar1);\n  FUN_00356ad0(param_1,param_3);\n  return param_1;\n}" (type_identifier "undefined8") (pointer_declarator "* FUN_00357190(undefined8 *param_1,wchar_t *param_2,long *param_3)" (* "*") (function_declarator "FUN_00357190(undefined8 *param_1,wchar_t *param_2,long *param_3)" (identifier "FUN_00357190") (parameter_list "(undefined8 *param_1,wchar_t *param_2,long *param_3)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "wchar_t *param_2" (type_identifier "wchar_t") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long *param_3" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")")))) (compound_statement "{\n  size_t sVar1;\n  \n  sVar1 = wcslen(param_2);\n  *param_1 = &DAT_0044bdd8;\n                    \n  FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);\n  FUN_00356c60(param_1,param_2,sVar1);\n  FUN_00356ad0(param_1,param_3);\n  return param_1;\n}" ({ "{") (declaration "size_t sVar1;" (primitive_type "size_t") (identifier "sVar1") (; ";")) (expression_statement "sVar1 = wcslen(param_2);" (assignment_expression "sVar1 = wcslen(param_2)" (identifier "sVar1") (= "=") (call_expression "wcslen(param_2)" (identifier "wcslen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "*param_1 = &DAT_0044bdd8;" (assignment_expression "*param_1 = &DAT_0044bdd8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&DAT_0044bdd8" (& "&") (identifier "DAT_0044bdd8"))) (; ";")) (expression_statement "FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);" (call_expression "FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1)" (identifier "FUN_003569f0") (argument_list "(param_1,*(long *)(*param_3 + -0x18) + sVar1)" (( "(") (identifier "param_1") (, ",") (binary_expression "*(long *)(*param_3 + -0x18) + sVar1" (pointer_expression "*(long *)(*param_3 + -0x18)" (* "*") (cast_expression "(long *)(*param_3 + -0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_3 + -0x18)" (( "(") (binary_expression "*param_3 + -0x18" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "-0x18")) () ")")))) (+ "+") (identifier "sVar1")) () ")"))) (; ";")) (expression_statement "FUN_00356c60(param_1,param_2,sVar1);" (call_expression "FUN_00356c60(param_1,param_2,sVar1)" (identifier "FUN_00356c60") (argument_list "(param_1,param_2,sVar1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "sVar1") () ")"))) (; ";")) (expression_statement "FUN_00356ad0(param_1,param_3);" (call_expression "FUN_00356ad0(param_1,param_3)" (identifier "FUN_00356ad0") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* std::wstring std::TEMPNAMEPLACEHOLDERVALUE(wchar_t const*, std::wstring const&) */

type_2 * std::operator+(type_2 *param_1,type_1 *param_2)

{
  size_t var_3;
  type_1 *in_RDX;
  
  var_3 = var_1((type_2 *)param_2);
  *(type_3 **)param_1 = &DAT_0044bdd8;
                    /* try { // try from 003571cc to 003571e9 has its CatchHandler @ 003571fa */
  wstring::var_2((type_1 *)param_1,*(long *)(*(long *)in_RDX + -0x18) + var_3);
  wstring::var_4((type_1 *)param_1,(type_2 *)param_2,var_3);
  wstring::var_4((type_1 *)param_1,in_RDX);
  return param_1;
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) 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 (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (return_statement (identifier)))))

undefined8 * MASKED(undefined8 *param_1,wchar_t *param_2,long *param_3)

{
  size_t sVar1;
  
  sVar1 = wcslen(param_2);
  *param_1 = &DAT_0044bdd8;
                    /* try { // try from 003571cc to 003571e9 has its CatchHandler @ 003571fa */
  FUN_003569f0(param_1,*(long *)(*param_3 + -0x18) + sVar1);
  FUN_00356c60(param_1,param_2,sVar1);
  FUN_00356ad0(param_1,param_3);
  return param_1;
}

