
/* std::wostream::TEMPNAMEPLACEHOLDERVALUE(std::wios& (*)(std::wios&)) */

wostream * __thiscall std::wostream::operator<<(wostream *this,_func_wios_ptr_wios_ptr *param_1)

{
  (*param_1)((wios *)(this + *(int *)(*(int *)this + -0xc)));
  return this;
}



int * FUN_0020df90(int *param_1,code *param_2)

{
  (*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);
  return param_1;
}


PUSH EBX
SUB ESP,0x14
MOV EBX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EBX]
MOV EDX,dword ptr [EAX + -0xc]
ADD EDX,EBX
PUSH EDX
CALL dword ptr [ESP + 0x24]
MOV EAX,EBX
ADD ESP,0x18
POP EBX
RET
(translation_unit "int * FUN_0020df90(int *param_1,code *param_2)\n\n{\n  (*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);\n  return param_1;\n}\n\n" (function_definition "int * FUN_0020df90(int *param_1,code *param_2)\n\n{\n  (*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);\n  return param_1;\n}" primitive_type (pointer_declarator "* FUN_0020df90(int *param_1,code *param_2)" * (function_declarator "FUN_0020df90(int *param_1,code *param_2)" identifier (parameter_list "(int *param_1,code *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "code *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  (*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);\n  return param_1;\n}" { (expression_statement "(*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);" (call_expression "(*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1)" (parenthesized_expression "(*param_2)" ( (pointer_expression "*param_2" * identifier) )) (argument_list "(*(int *)(*param_1 + -0xc) + (int)param_1)" ( (binary_expression "*(int *)(*param_1 + -0xc) + (int)param_1" (pointer_expression "*(int *)(*param_1 + -0xc)" * (cast_expression "(int *)(*param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + -0xc)" ( (binary_expression "*param_1 + -0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) + (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* std::wostream::TEMPNAMEPLACEHOLDERVALUE(std::wios& (*)(std::wios&)) */\n\nwostream * __thiscall std::wostream::operator<<(wostream *this,_func_wios_ptr_wios_ptr *param_1)\n\n{\n  (*param_1)((wios *)(this + *(int *)(*(int *)this + -0xc)));\n  return this;\n}\n\n" comment (expression_statement "wostream * __thiscall std::wostream::operator<<(wostream *this,_func_wios_ptr_wios_ptr *param_1)\n\n{\n  (*param_1)((wios *)(this + *(int *)(*(int *)this + -0xc)));" (update_expression "wostream * __thiscall std::wostream::operator<<(wostream *this,_func_wios_ptr_wios_ptr *param_1)\n\n{\n  (*param_1)((wios *)(this + *(int *)(*(int *)this + -0xc)))" (binary_expression "wostream * __thiscall std::wostream::operator<<(wostream *this,_func_wios_ptr_wios_ptr *param_1)\n\n{\n  (*param_1)((wios *)(this + *(int *)(*(int *)this + -0xc)))" (binary_expression "wostream * __thiscall" identifier * identifier) (ERROR "std::wostream::operator" identifier : : identifier : : identifier) << (call_expression "(wostream *this,_func_wios_ptr_wios_ptr *param_1)\n\n{\n  (*param_1)((wios *)(this + *(int *)(*(int *)this + -0xc)))" (call_expression "(wostream *this,_func_wios_ptr_wios_ptr *param_1)\n\n{\n  (*param_1)" (parenthesized_expression "(wostream *this,_func_wios_ptr_wios_ptr *param_1)" ( (comma_expression "wostream *this,_func_wios_ptr_wios_ptr *param_1" (binary_expression "wostream *this" identifier * identifier) , (binary_expression "_func_wios_ptr_wios_ptr *param_1" identifier * identifier)) )) (ERROR "{" {) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) (argument_list "((wios *)(this + *(int *)(*(int *)this + -0xc)))" ( (cast_expression "(wios *)(this + *(int *)(*(int *)this + -0xc))" ( (type_descriptor "wios *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + *(int *)(*(int *)this + -0xc))" ( (binary_expression "this + *(int *)(*(int *)this + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)this + -0xc)" * (cast_expression "(int *)(*(int *)this + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)this + -0xc)" ( (binary_expression "*(int *)this + -0xc" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ))) )))) --) ;) (return_statement "return this;" return identifier ;) (ERROR "}" }))
(translation_unit "int * FUN_0020df90(int *param_1,code *param_2)\n\n{\n  (*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);\n  return param_1;\n}\n\n" (function_definition "int * FUN_0020df90(int *param_1,code *param_2)\n\n{\n  (*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);\n  return param_1;\n}" primitive_type (pointer_declarator "* FUN_0020df90(int *param_1,code *param_2)" * (function_declarator "FUN_0020df90(int *param_1,code *param_2)" identifier (parameter_list "(int *param_1,code *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "code *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  (*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);\n  return param_1;\n}" { (expression_statement "(*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);" (call_expression "(*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1)" (parenthesized_expression "(*param_2)" ( (pointer_expression "*param_2" * identifier) )) (argument_list "(*(int *)(*param_1 + -0xc) + (int)param_1)" ( (binary_expression "*(int *)(*param_1 + -0xc) + (int)param_1" (pointer_expression "*(int *)(*param_1 + -0xc)" * (cast_expression "(int *)(*param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + -0xc)" ( (binary_expression "*param_1 + -0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) + (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) 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)) )))) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) (return_statement return IDENT ;) })))
(function_definition "int * FUN_0020df90(int *param_1,code *param_2)\n\n{\n  (*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);\n  return param_1;\n}" (primitive_type "int") (pointer_declarator "* FUN_0020df90(int *param_1,code *param_2)" (* "*") (function_declarator "FUN_0020df90(int *param_1,code *param_2)" (identifier "FUN_0020df90") (parameter_list "(int *param_1,code *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "code *param_2" (type_identifier "code") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  (*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);\n  return param_1;\n}" ({ "{") (expression_statement "(*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);" (call_expression "(*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1)" (parenthesized_expression "(*param_2)" (( "(") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")")) (argument_list "(*(int *)(*param_1 + -0xc) + (int)param_1)" (( "(") (binary_expression "*(int *)(*param_1 + -0xc) + (int)param_1" (pointer_expression "*(int *)(*param_1 + -0xc)" (* "*") (cast_expression "(int *)(*param_1 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + -0xc)" (( "(") (binary_expression "*param_1 + -0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "-0xc")) () ")")))) (+ "+") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

/* std::wostream::TEMPNAMEPLACEHOLDERVALUE(std::wios& (*)(std::wios&)) */

var_1 * var_2 std::var_1::operator<<(var_1 *var_3,var_4 *var_5)

{
  (*var_5)((type_1 *)(var_3 + *(int *)(*(int *)var_3 + -0xc)));
  return var_3;
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) 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: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (return_statement (identifier)))))

int * MASKED(int *param_1,code *param_2)

{
  (*param_2)(*(int *)(*param_1 + -0xc) + (int)param_1);
  return param_1;
}

