
/* std::wios::move(std::wios&) */

void __thiscall std::wios::move(wios *this,wios *param_1)

{
  wios wVar1;
  undefined8 uVar2;
  
  ios_base::_M_move((ios_base *)this,(ios_base *)param_1);
  _M_cache_locale(this,(locale *)(this + 0xd0));
  uVar2 = *(undefined8 *)(param_1 + 0xd8);
  *(undefined8 *)(param_1 + 0xd8) = 0;
  *(undefined8 *)(this + 0xd8) = uVar2;
  *(undefined4 *)(this + 0xe0) = *(undefined4 *)(param_1 + 0xe0);
  wVar1 = param_1[0xe4];
  *(undefined8 *)(this + 0xe8) = 0;
  this[0xe4] = wVar1;
  return;
}



void FUN_00301960(long param_1,long param_2)

{
  undefined1 uVar1;
  undefined8 uVar2;
  
  FUN_00318d90();
  FUN_003014c0(param_1,param_1 + 0xd0);
  uVar2 = *(undefined8 *)(param_2 + 0xd8);
  *(undefined8 *)(param_2 + 0xd8) = 0;
  *(undefined8 *)(param_1 + 0xd8) = uVar2;
  *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);
  uVar1 = *(undefined1 *)(param_2 + 0xe4);
  *(undefined8 *)(param_1 + 0xe8) = 0;
  *(undefined1 *)(param_1 + 0xe4) = uVar1;
  return;
}


PUSH RBP
MOV RBP,RSI
PUSH RBX
MOV RBX,RDI
SUB RSP,0x8
CALL 0x00318d90
LEA RSI,[RBX + 0xd0]
MOV RDI,RBX
CALL 0x003014c0
MOV RAX,qword ptr [RBP + 0xd8]
MOV qword ptr [RBP + 0xd8],0x0
MOV qword ptr [RBX + 0xd8],RAX
MOV EAX,dword ptr [RBP + 0xe0]
MOV dword ptr [RBX + 0xe0],EAX
MOVZX EAX,byte ptr [RBP + 0xe4]
MOV qword ptr [RBX + 0xe8],0x0
MOV byte ptr [RBX + 0xe4],AL
ADD RSP,0x8
POP RBX
POP RBP
RET
(translation_unit "void FUN_00301960(long param_1,long param_2)\n\n{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  \n  FUN_00318d90();\n  FUN_003014c0(param_1,param_1 + 0xd0);\n  uVar2 = *(undefined8 *)(param_2 + 0xd8);\n  *(undefined8 *)(param_2 + 0xd8) = 0;\n  *(undefined8 *)(param_1 + 0xd8) = uVar2;\n  *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);\n  uVar1 = *(undefined1 *)(param_2 + 0xe4);\n  *(undefined8 *)(param_1 + 0xe8) = 0;\n  *(undefined1 *)(param_1 + 0xe4) = uVar1;\n  return;\n}\n\n" (function_definition "void FUN_00301960(long param_1,long param_2)\n\n{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  \n  FUN_00318d90();\n  FUN_003014c0(param_1,param_1 + 0xd0);\n  uVar2 = *(undefined8 *)(param_2 + 0xd8);\n  *(undefined8 *)(param_2 + 0xd8) = 0;\n  *(undefined8 *)(param_1 + 0xd8) = uVar2;\n  *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);\n  uVar1 = *(undefined1 *)(param_2 + 0xe4);\n  *(undefined8 *)(param_1 + 0xe8) = 0;\n  *(undefined1 *)(param_1 + 0xe4) = uVar1;\n  return;\n}" primitive_type (function_declarator "FUN_00301960(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  \n  FUN_00318d90();\n  FUN_003014c0(param_1,param_1 + 0xd0);\n  uVar2 = *(undefined8 *)(param_2 + 0xd8);\n  *(undefined8 *)(param_2 + 0xd8) = 0;\n  *(undefined8 *)(param_1 + 0xd8) = uVar2;\n  *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);\n  uVar1 = *(undefined1 *)(param_2 + 0xe4);\n  *(undefined8 *)(param_1 + 0xe8) = 0;\n  *(undefined1 *)(param_1 + 0xe4) = uVar1;\n  return;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (expression_statement "FUN_00318d90();" (call_expression "FUN_00318d90()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_003014c0(param_1,param_1 + 0xd0);" (call_expression "FUN_003014c0(param_1,param_1 + 0xd0)" identifier (argument_list "(param_1,param_1 + 0xd0)" ( identifier , (binary_expression "param_1 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "uVar2 = *(undefined8 *)(param_2 + 0xd8);" (assignment_expression "uVar2 = *(undefined8 *)(param_2 + 0xd8)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0xd8)" * (cast_expression "(undefined8 *)(param_2 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xd8)" ( (binary_expression "param_2 + 0xd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_2 + 0xd8) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0xd8) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0xd8)" * (cast_expression "(undefined8 *)(param_2 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xd8)" ( (binary_expression "param_2 + 0xd8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(param_1 + 0xd8) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0xd8) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0xd8)" * (cast_expression "(undefined8 *)(param_1 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);" (assignment_expression "*(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0)" (pointer_expression "*(undefined4 *)(param_1 + 0xe0)" * (cast_expression "(undefined4 *)(param_1 + 0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 0xe0)" * (cast_expression "(undefined4 *)(param_2 + 0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xe0)" ( (binary_expression "param_2 + 0xe0" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(undefined1 *)(param_2 + 0xe4);" (assignment_expression "uVar1 = *(undefined1 *)(param_2 + 0xe4)" identifier = (pointer_expression "*(undefined1 *)(param_2 + 0xe4)" * (cast_expression "(undefined1 *)(param_2 + 0xe4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xe4)" ( (binary_expression "param_2 + 0xe4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_1 + 0xe8) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0xe8) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0xe8)" * (cast_expression "(undefined8 *)(param_1 + 0xe8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0xe4) = uVar1;" (assignment_expression "*(undefined1 *)(param_1 + 0xe4) = uVar1" (pointer_expression "*(undefined1 *)(param_1 + 0xe4)" * (cast_expression "(undefined1 *)(param_1 + 0xe4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe4)" ( (binary_expression "param_1 + 0xe4" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* std::wios::move(std::wios&) */\n\nvoid __thiscall std::wios::move(wios *this,wios *param_1)\n\n{\n  wios wVar1;\n  undefined8 uVar2;\n  \n  ios_base::_M_move((ios_base *)this,(ios_base *)param_1);\n  _M_cache_locale(this,(locale *)(this + 0xd0));\n  uVar2 = *(undefined8 *)(param_1 + 0xd8);\n  *(undefined8 *)(param_1 + 0xd8) = 0;\n  *(undefined8 *)(this + 0xd8) = uVar2;\n  *(undefined4 *)(this + 0xe0) = *(undefined4 *)(param_1 + 0xe0);\n  wVar1 = param_1[0xe4];\n  *(undefined8 *)(this + 0xe8) = 0;\n  this[0xe4] = wVar1;\n  return;\n}\n\n" comment (function_definition "void __thiscall std::wios::move(wios *this,wios *param_1)\n\n{\n  wios wVar1;\n  undefined8 uVar2;\n  \n  ios_base::_M_move((ios_base *)this,(ios_base *)param_1);\n  _M_cache_locale(this,(locale *)(this + 0xd0));\n  uVar2 = *(undefined8 *)(param_1 + 0xd8);\n  *(undefined8 *)(param_1 + 0xd8) = 0;\n  *(undefined8 *)(this + 0xd8) = uVar2;\n  *(undefined4 *)(this + 0xe0) = *(undefined4 *)(param_1 + 0xe0);\n  wVar1 = param_1[0xe4];\n  *(undefined8 *)(this + 0xe8) = 0;\n  this[0xe4] = wVar1;\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::wios::" identifier : : identifier : :) (function_declarator "move(wios *this,wios *param_1)" identifier (parameter_list "(wios *this,wios *param_1)" ( (parameter_declaration "wios *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "wios *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  wios wVar1;\n  undefined8 uVar2;\n  \n  ios_base::_M_move((ios_base *)this,(ios_base *)param_1);\n  _M_cache_locale(this,(locale *)(this + 0xd0));\n  uVar2 = *(undefined8 *)(param_1 + 0xd8);\n  *(undefined8 *)(param_1 + 0xd8) = 0;\n  *(undefined8 *)(this + 0xd8) = uVar2;\n  *(undefined4 *)(this + 0xe0) = *(undefined4 *)(param_1 + 0xe0);\n  wVar1 = param_1[0xe4];\n  *(undefined8 *)(this + 0xe8) = 0;\n  this[0xe4] = wVar1;\n  return;\n}" { (declaration "wios wVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (labeled_statement "ios_base::_M_move((ios_base *)this,(ios_base *)param_1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_move((ios_base *)this,(ios_base *)param_1);" (call_expression "_M_move((ios_base *)this,(ios_base *)param_1)" identifier (argument_list "((ios_base *)this,(ios_base *)param_1)" ( (cast_expression "(ios_base *)this" ( (type_descriptor "ios_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(ios_base *)param_1" ( (type_descriptor "ios_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "_M_cache_locale(this,(locale *)(this + 0xd0));" (call_expression "_M_cache_locale(this,(locale *)(this + 0xd0))" identifier (argument_list "(this,(locale *)(this + 0xd0))" ( identifier , (cast_expression "(locale *)(this + 0xd0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xd0)" ( (binary_expression "this + 0xd0" identifier + number_literal) ))) ))) ;) (expression_statement "uVar2 = *(undefined8 *)(param_1 + 0xd8);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 0xd8)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0xd8)" * (cast_expression "(undefined8 *)(param_1 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_1 + 0xd8) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0xd8) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0xd8)" * (cast_expression "(undefined8 *)(param_1 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0xd8) = uVar2;" (assignment_expression "*(undefined8 *)(this + 0xd8) = uVar2" (pointer_expression "*(undefined8 *)(this + 0xd8)" * (cast_expression "(undefined8 *)(this + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xd8)" ( (binary_expression "this + 0xd8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 0xe0) = *(undefined4 *)(param_1 + 0xe0);" (assignment_expression "*(undefined4 *)(this + 0xe0) = *(undefined4 *)(param_1 + 0xe0)" (pointer_expression "*(undefined4 *)(this + 0xe0)" * (cast_expression "(undefined4 *)(this + 0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xe0)" ( (binary_expression "this + 0xe0" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xe0)" * (cast_expression "(undefined4 *)(param_1 + 0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) ))))) ;) (expression_statement "wVar1 = param_1[0xe4];" (assignment_expression "wVar1 = param_1[0xe4]" identifier = (subscript_expression "param_1[0xe4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined8 *)(this + 0xe8) = 0;" (assignment_expression "*(undefined8 *)(this + 0xe8) = 0" (pointer_expression "*(undefined8 *)(this + 0xe8)" * (cast_expression "(undefined8 *)(this + 0xe8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xe8)" ( (binary_expression "this + 0xe8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0xe4] = wVar1;" (assignment_expression "this[0xe4] = wVar1" (subscript_expression "this[0xe4]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00301960(long param_1,long param_2)\n\n{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  \n  FUN_00318d90();\n  FUN_003014c0(param_1,param_1 + 0xd0);\n  uVar2 = *(undefined8 *)(param_2 + 0xd8);\n  *(undefined8 *)(param_2 + 0xd8) = 0;\n  *(undefined8 *)(param_1 + 0xd8) = uVar2;\n  *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);\n  uVar1 = *(undefined1 *)(param_2 + 0xe4);\n  *(undefined8 *)(param_1 + 0xe8) = 0;\n  *(undefined1 *)(param_1 + 0xe4) = uVar1;\n  return;\n}\n\n" (function_definition "void FUN_00301960(long param_1,long param_2)\n\n{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  \n  FUN_00318d90();\n  FUN_003014c0(param_1,param_1 + 0xd0);\n  uVar2 = *(undefined8 *)(param_2 + 0xd8);\n  *(undefined8 *)(param_2 + 0xd8) = 0;\n  *(undefined8 *)(param_1 + 0xd8) = uVar2;\n  *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);\n  uVar1 = *(undefined1 *)(param_2 + 0xe4);\n  *(undefined8 *)(param_1 + 0xe8) = 0;\n  *(undefined1 *)(param_1 + 0xe4) = uVar1;\n  return;\n}" primitive_type (function_declarator "FUN_00301960(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  \n  FUN_00318d90();\n  FUN_003014c0(param_1,param_1 + 0xd0);\n  uVar2 = *(undefined8 *)(param_2 + 0xd8);\n  *(undefined8 *)(param_2 + 0xd8) = 0;\n  *(undefined8 *)(param_1 + 0xd8) = uVar2;\n  *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);\n  uVar1 = *(undefined1 *)(param_2 + 0xe4);\n  *(undefined8 *)(param_1 + 0xe8) = 0;\n  *(undefined1 *)(param_1 + 0xe4) = uVar1;\n  return;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (expression_statement "FUN_00318d90();" (call_expression "FUN_00318d90()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_003014c0(param_1,param_1 + 0xd0);" (call_expression "FUN_003014c0(param_1,param_1 + 0xd0)" identifier (argument_list "(param_1,param_1 + 0xd0)" ( identifier , (binary_expression "param_1 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "uVar2 = *(undefined8 *)(param_2 + 0xd8);" (assignment_expression "uVar2 = *(undefined8 *)(param_2 + 0xd8)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0xd8)" * (cast_expression "(undefined8 *)(param_2 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xd8)" ( (binary_expression "param_2 + 0xd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_2 + 0xd8) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0xd8) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0xd8)" * (cast_expression "(undefined8 *)(param_2 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xd8)" ( (binary_expression "param_2 + 0xd8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(param_1 + 0xd8) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0xd8) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0xd8)" * (cast_expression "(undefined8 *)(param_1 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);" (assignment_expression "*(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0)" (pointer_expression "*(undefined4 *)(param_1 + 0xe0)" * (cast_expression "(undefined4 *)(param_1 + 0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 0xe0)" * (cast_expression "(undefined4 *)(param_2 + 0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xe0)" ( (binary_expression "param_2 + 0xe0" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(undefined1 *)(param_2 + 0xe4);" (assignment_expression "uVar1 = *(undefined1 *)(param_2 + 0xe4)" identifier = (pointer_expression "*(undefined1 *)(param_2 + 0xe4)" * (cast_expression "(undefined1 *)(param_2 + 0xe4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xe4)" ( (binary_expression "param_2 + 0xe4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_1 + 0xe8) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0xe8) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0xe8)" * (cast_expression "(undefined8 *)(param_1 + 0xe8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0xe4) = uVar1;" (assignment_expression "*(undefined1 *)(param_1 + 0xe4) = uVar1" (pointer_expression "*(undefined1 *)(param_1 + 0xe4)" * (cast_expression "(undefined1 *)(param_1 + 0xe4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe4)" ( (binary_expression "param_1 + 0xe4" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_00301960(long param_1,long param_2)\n\n{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  \n  FUN_00318d90();\n  FUN_003014c0(param_1,param_1 + 0xd0);\n  uVar2 = *(undefined8 *)(param_2 + 0xd8);\n  *(undefined8 *)(param_2 + 0xd8) = 0;\n  *(undefined8 *)(param_1 + 0xd8) = uVar2;\n  *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);\n  uVar1 = *(undefined1 *)(param_2 + 0xe4);\n  *(undefined8 *)(param_1 + 0xe8) = 0;\n  *(undefined1 *)(param_1 + 0xe4) = uVar1;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00301960(long param_1,long param_2)" (identifier "FUN_00301960") (parameter_list "(long param_1,long param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  \n  FUN_00318d90();\n  FUN_003014c0(param_1,param_1 + 0xd0);\n  uVar2 = *(undefined8 *)(param_2 + 0xd8);\n  *(undefined8 *)(param_2 + 0xd8) = 0;\n  *(undefined8 *)(param_1 + 0xd8) = uVar2;\n  *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);\n  uVar1 = *(undefined1 *)(param_2 + 0xe4);\n  *(undefined8 *)(param_1 + 0xe8) = 0;\n  *(undefined1 *)(param_1 + 0xe4) = uVar1;\n  return;\n}" ({ "{") (declaration "undefined1 uVar1;" (type_identifier "undefined1") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (expression_statement "FUN_00318d90();" (call_expression "FUN_00318d90()" (identifier "FUN_00318d90") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_003014c0(param_1,param_1 + 0xd0);" (call_expression "FUN_003014c0(param_1,param_1 + 0xd0)" (identifier "FUN_003014c0") (argument_list "(param_1,param_1 + 0xd0)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_1 + 0xd0" (identifier "param_1") (+ "+") (number_literal "0xd0")) () ")"))) (; ";")) (expression_statement "uVar2 = *(undefined8 *)(param_2 + 0xd8);" (assignment_expression "uVar2 = *(undefined8 *)(param_2 + 0xd8)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined8 *)(param_2 + 0xd8)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0xd8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xd8)" (( "(") (binary_expression "param_2 + 0xd8" (identifier "param_2") (+ "+") (number_literal "0xd8")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(param_2 + 0xd8) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0xd8) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0xd8)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0xd8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xd8)" (( "(") (binary_expression "param_2 + 0xd8" (identifier "param_2") (+ "+") (number_literal "0xd8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0xd8) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0xd8) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0xd8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0xd8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);" (assignment_expression "*(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0)" (pointer_expression "*(undefined4 *)(param_1 + 0xe0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe0)" (( "(") (binary_expression "param_1 + 0xe0" (identifier "param_1") (+ "+") (number_literal "0xe0")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0xe0)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0xe0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xe0)" (( "(") (binary_expression "param_2 + 0xe0" (identifier "param_2") (+ "+") (number_literal "0xe0")) () ")"))))) (; ";")) (expression_statement "uVar1 = *(undefined1 *)(param_2 + 0xe4);" (assignment_expression "uVar1 = *(undefined1 *)(param_2 + 0xe4)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined1 *)(param_2 + 0xe4)" (* "*") (cast_expression "(undefined1 *)(param_2 + 0xe4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xe4)" (( "(") (binary_expression "param_2 + 0xe4" (identifier "param_2") (+ "+") (number_literal "0xe4")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0xe8) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0xe8) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0xe8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0xe8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0xe4) = uVar1;" (assignment_expression "*(undefined1 *)(param_1 + 0xe4) = uVar1" (pointer_expression "*(undefined1 *)(param_1 + 0xe4)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xe4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe4)" (( "(") (binary_expression "param_1 + 0xe4" (identifier "param_1") (+ "+") (number_literal "0xe4")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* std::wios::move(std::wios&) */

void __thiscall std::type_1::function_1(type_1 *var_3,type_1 *var_4)

{
  type_1 wVar1;
  type_2 uVar2;
  
  ios_base::var_1((type_3 *)var_3,(type_3 *)var_4);
  var_2(var_3,(type_4 *)(var_3 + 0xd0));
  uVar2 = *(type_2 *)(var_4 + 0xd8);
  *(type_2 *)(var_4 + 0xd8) = 0;
  *(type_2 *)(var_3 + 0xd8) = uVar2;
  *(type_5 *)(var_3 + 0xe0) = *(type_5 *)(var_4 + 0xe0);
  wVar1 = var_4[0xe4];
  *(type_2 *)(var_3 + 0xe8) = 0;
  var_3[0xe4] = wVar1;
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal))))) (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: (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))))) right: (number_literal))) (expression_statement (assignment_expression left: (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))))) right: (identifier))) (expression_statement (assignment_expression left: (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))))) 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: (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: (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))))) right: (number_literal))) (expression_statement (assignment_expression left: (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))))) right: (identifier))) (return_statement))))

void MASKED(long param_1,long param_2)

{
  undefined1 uVar1;
  undefined8 uVar2;
  
  FUN_00318d90();
  FUN_003014c0(param_1,param_1 + 0xd0);
  uVar2 = *(undefined8 *)(param_2 + 0xd8);
  *(undefined8 *)(param_2 + 0xd8) = 0;
  *(undefined8 *)(param_1 + 0xd8) = uVar2;
  *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_2 + 0xe0);
  uVar1 = *(undefined1 *)(param_2 + 0xe4);
  *(undefined8 *)(param_1 + 0xe8) = 0;
  *(undefined1 *)(param_1 + 0xe4) = uVar1;
  return;
}

