
/* std::ifstream::ifstream(std::ifstream&&) */

void __thiscall std::ifstream::ifstream(ifstream *this,ifstream *param_1)

{
  ios_base *this_00;
  ifstream iVar1;
  undefined8 uVar2;
  long lVar3;
  ios_base *piVar4;
  
  this_00 = (ios_base *)(this + 0x100);
  ios_base::ios_base(this_00);
  *(undefined **)this = &DAT_00439600;
  *(undefined2 *)(this + 0x1e0) = 0;
  *(undefined **)(this + 0x100) = &DAT_00439628;
  uVar2 = *(undefined8 *)(param_1 + 8);
  *(undefined8 *)(this + 0x1d8) = 0;
  *(undefined8 *)(this + 8) = uVar2;
  lVar3 = *(long *)param_1;
  *(undefined8 *)(this + 0x1e8) = 0;
  *(undefined8 *)(this + 0x1f0) = 0;
  lVar3 = *(long *)(lVar3 + -0x18);
  *(undefined8 *)(this + 0x1f8) = 0;
  *(undefined8 *)(this + 0x200) = 0;
  piVar4 = (ios_base *)(param_1 + lVar3);
  ios_base::_M_move(this_00,piVar4);
                    /* try { // try from 0030460a to 0030460e has its CatchHandler @ 00304694 */
  ios::_M_cache_locale((ios *)this_00,(locale *)(this + 0x1d0));
  uVar2 = *(undefined8 *)(piVar4 + 0xd8);
  *(undefined8 *)(piVar4 + 0xd8) = 0;
  *(undefined8 *)(this + 0x1d8) = uVar2;
  this[0x1e0] = *(ifstream *)(piVar4 + 0xe0);
  iVar1 = *(ifstream *)(piVar4 + 0xe1);
  *(undefined8 *)(this + 0x1e8) = 0;
  this[0x1e1] = iVar1;
  *(undefined8 *)(param_1 + 8) = 0;
  *(undefined ***)this = &PTR__ifstream_00439670;
  *(undefined ***)(this + 0x100) = &PTR__ifstream_00439698;
                    /* try { // try from 0030467f to 00304683 has its CatchHandler @ 00304699 */
  filebuf::filebuf((filebuf *)(this + 0x10),(filebuf *)(param_1 + 0x10));
  *(filebuf **)(this + 0x1e8) = (filebuf *)(this + 0x10);
  return;
}



void FUN_00304570(undefined8 *param_1,long *param_2)

{
  undefined8 *puVar1;
  undefined1 uVar2;
  undefined8 uVar3;
  long lVar4;
  
  puVar1 = param_1 + 0x20;
  FUN_003189d0(puVar1);
  *param_1 = &DAT_00439600;
  *(undefined2 *)(param_1 + 0x3c) = 0;
  param_1[0x20] = &DAT_00439628;
  lVar4 = param_2[1];
  param_1[0x3b] = 0;
  param_1[1] = lVar4;
  lVar4 = *param_2;
  param_1[0x3d] = 0;
  param_1[0x3e] = 0;
  lVar4 = *(long *)(lVar4 + -0x18);
  param_1[0x3f] = 0;
  param_1[0x40] = 0;
  lVar4 = lVar4 + (long)param_2;
  FUN_00318da0(puVar1,lVar4);
                    /* try { // try from 0030460a to 0030460e has its CatchHandler @ 00304694 */
  FUN_00300bc0(puVar1,param_1 + 0x3a);
  uVar3 = *(undefined8 *)(lVar4 + 0xd8);
  *(undefined8 *)(lVar4 + 0xd8) = 0;
  param_1[0x3b] = uVar3;
  *(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);
  uVar2 = *(undefined1 *)(lVar4 + 0xe1);
  param_1[0x3d] = 0;
  *(undefined1 *)((long)param_1 + 0x1e1) = uVar2;
  param_2[1] = 0;
  *param_1 = &PTR_FUN_00439670;
  param_1[0x20] = &PTR_FUN_00439698;
                    /* try { // try from 0030467f to 00304683 has its CatchHandler @ 00304699 */
  FUN_00303450(param_1 + 2,param_2 + 2);
  param_1[0x3d] = param_1 + 2;
  return;
}


PUSH R14
LEA R14,[0x439600]
PUSH R13
LEA R13,[RDI + 0x100]
PUSH R12
PUSH RBP
MOV RBP,RSI
PUSH RBX
MOV RBX,RDI
MOV RDI,R13
CALL 0x003189d0
XOR EAX,EAX
MOV qword ptr [RBX],R14
MOV RDI,R13
MOV word ptr [RBX + 0x1e0],AX
LEA RAX,[R14 + 0x28]
MOV qword ptr [RBX + 0x100],RAX
MOV RAX,qword ptr [RBP + 0x8]
MOV qword ptr [RBX + 0x1d8],0x0
MOV qword ptr [RBX + 0x8],RAX
MOV RAX,qword ptr [RBP]
MOV qword ptr [RBX + 0x1e8],0x0
MOV qword ptr [RBX + 0x1f0],0x0
MOV R12,qword ptr [RAX + -0x18]
MOV qword ptr [RBX + 0x1f8],0x0
MOV qword ptr [RBX + 0x200],0x0
ADD R12,RBP
MOV RSI,R12
CALL 0x00318da0
LEA RSI,[RBX + 0x1d0]
MOV RDI,R13
CALL 0x00300bc0
MOV RAX,qword ptr [R12 + 0xd8]
LEA RSI,[RBP + 0x10]
MOV qword ptr [R12 + 0xd8],0x0
MOV qword ptr [RBX + 0x1d8],RAX
MOVZX EAX,byte ptr [R12 + 0xe0]
MOV byte ptr [RBX + 0x1e0],AL
MOVZX EAX,byte ptr [R12 + 0xe1]
LEA R12,[RBX + 0x10]
MOV qword ptr [RBX + 0x1e8],0x0
MOV RDI,R12
MOV byte ptr [RBX + 0x1e1],AL
LEA RAX,[0x439658]
MOV qword ptr [RBP + 0x8],0x0
LEA RDX,[RAX + 0x18]
ADD RAX,0x40
MOV qword ptr [RBX],RDX
MOV qword ptr [RBX + 0x100],RAX
CALL 0x00303450
MOV qword ptr [RBX + 0x1e8],R12
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
(translation_unit "void FUN_00304570(undefined8 *param_1,long *param_2)\n\n{\n  undefined8 *puVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  long lVar4;\n  \n  puVar1 = param_1 + 0x20;\n  FUN_003189d0(puVar1);\n  *param_1 = &DAT_00439600;\n  *(undefined2 *)(param_1 + 0x3c) = 0;\n  param_1[0x20] = &DAT_00439628;\n  lVar4 = param_2[1];\n  param_1[0x3b] = 0;\n  param_1[1] = lVar4;\n  lVar4 = *param_2;\n  param_1[0x3d] = 0;\n  param_1[0x3e] = 0;\n  lVar4 = *(long *)(lVar4 + -0x18);\n  param_1[0x3f] = 0;\n  param_1[0x40] = 0;\n  lVar4 = lVar4 + (long)param_2;\n  FUN_00318da0(puVar1,lVar4);\n                    /* try { // try from 0030460a to 0030460e has its CatchHandler @ 00304694 */\n  FUN_00300bc0(puVar1,param_1 + 0x3a);\n  uVar3 = *(undefined8 *)(lVar4 + 0xd8);\n  *(undefined8 *)(lVar4 + 0xd8) = 0;\n  param_1[0x3b] = uVar3;\n  *(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);\n  uVar2 = *(undefined1 *)(lVar4 + 0xe1);\n  param_1[0x3d] = 0;\n  *(undefined1 *)((long)param_1 + 0x1e1) = uVar2;\n  param_2[1] = 0;\n  *param_1 = &PTR_FUN_00439670;\n  param_1[0x20] = &PTR_FUN_00439698;\n                    /* try { // try from 0030467f to 00304683 has its CatchHandler @ 00304699 */\n  FUN_00303450(param_1 + 2,param_2 + 2);\n  param_1[0x3d] = param_1 + 2;\n  return;\n}\n\n" (function_definition "void FUN_00304570(undefined8 *param_1,long *param_2)\n\n{\n  undefined8 *puVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  long lVar4;\n  \n  puVar1 = param_1 + 0x20;\n  FUN_003189d0(puVar1);\n  *param_1 = &DAT_00439600;\n  *(undefined2 *)(param_1 + 0x3c) = 0;\n  param_1[0x20] = &DAT_00439628;\n  lVar4 = param_2[1];\n  param_1[0x3b] = 0;\n  param_1[1] = lVar4;\n  lVar4 = *param_2;\n  param_1[0x3d] = 0;\n  param_1[0x3e] = 0;\n  lVar4 = *(long *)(lVar4 + -0x18);\n  param_1[0x3f] = 0;\n  param_1[0x40] = 0;\n  lVar4 = lVar4 + (long)param_2;\n  FUN_00318da0(puVar1,lVar4);\n                    /* try { // try from 0030460a to 0030460e has its CatchHandler @ 00304694 */\n  FUN_00300bc0(puVar1,param_1 + 0x3a);\n  uVar3 = *(undefined8 *)(lVar4 + 0xd8);\n  *(undefined8 *)(lVar4 + 0xd8) = 0;\n  param_1[0x3b] = uVar3;\n  *(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);\n  uVar2 = *(undefined1 *)(lVar4 + 0xe1);\n  param_1[0x3d] = 0;\n  *(undefined1 *)((long)param_1 + 0x1e1) = uVar2;\n  param_2[1] = 0;\n  *param_1 = &PTR_FUN_00439670;\n  param_1[0x20] = &PTR_FUN_00439698;\n                    /* try { // try from 0030467f to 00304683 has its CatchHandler @ 00304699 */\n  FUN_00303450(param_1 + 2,param_2 + 2);\n  param_1[0x3d] = param_1 + 2;\n  return;\n}" primitive_type (function_declarator "FUN_00304570(undefined8 *param_1,long *param_2)" identifier (parameter_list "(undefined8 *param_1,long *param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  long lVar4;\n  \n  puVar1 = param_1 + 0x20;\n  FUN_003189d0(puVar1);\n  *param_1 = &DAT_00439600;\n  *(undefined2 *)(param_1 + 0x3c) = 0;\n  param_1[0x20] = &DAT_00439628;\n  lVar4 = param_2[1];\n  param_1[0x3b] = 0;\n  param_1[1] = lVar4;\n  lVar4 = *param_2;\n  param_1[0x3d] = 0;\n  param_1[0x3e] = 0;\n  lVar4 = *(long *)(lVar4 + -0x18);\n  param_1[0x3f] = 0;\n  param_1[0x40] = 0;\n  lVar4 = lVar4 + (long)param_2;\n  FUN_00318da0(puVar1,lVar4);\n                    /* try { // try from 0030460a to 0030460e has its CatchHandler @ 00304694 */\n  FUN_00300bc0(puVar1,param_1 + 0x3a);\n  uVar3 = *(undefined8 *)(lVar4 + 0xd8);\n  *(undefined8 *)(lVar4 + 0xd8) = 0;\n  param_1[0x3b] = uVar3;\n  *(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);\n  uVar2 = *(undefined1 *)(lVar4 + 0xe1);\n  param_1[0x3d] = 0;\n  *(undefined1 *)((long)param_1 + 0x1e1) = uVar2;\n  param_2[1] = 0;\n  *param_1 = &PTR_FUN_00439670;\n  param_1[0x20] = &PTR_FUN_00439698;\n                    /* try { // try from 0030467f to 00304683 has its CatchHandler @ 00304699 */\n  FUN_00303450(param_1 + 2,param_2 + 2);\n  param_1[0x3d] = param_1 + 2;\n  return;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (expression_statement "puVar1 = param_1 + 0x20;" (assignment_expression "puVar1 = param_1 + 0x20" identifier = (binary_expression "param_1 + 0x20" identifier + number_literal)) ;) (expression_statement "FUN_003189d0(puVar1);" (call_expression "FUN_003189d0(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "*param_1 = &DAT_00439600;" (assignment_expression "*param_1 = &DAT_00439600" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_00439600" & identifier)) ;) (expression_statement "*(undefined2 *)(param_1 + 0x3c) = 0;" (assignment_expression "*(undefined2 *)(param_1 + 0x3c) = 0" (pointer_expression "*(undefined2 *)(param_1 + 0x3c)" * (cast_expression "(undefined2 *)(param_1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0x20] = &DAT_00439628;" (assignment_expression "param_1[0x20] = &DAT_00439628" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) = (pointer_expression "&DAT_00439628" & identifier)) ;) (expression_statement "lVar4 = param_2[1];" (assignment_expression "lVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x3b] = 0;" (assignment_expression "param_1[0x3b] = 0" (subscript_expression "param_1[0x3b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[1] = lVar4;" (assignment_expression "param_1[1] = lVar4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar4 = *param_2;" (assignment_expression "lVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_1[0x3d] = 0;" (assignment_expression "param_1[0x3d] = 0" (subscript_expression "param_1[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x3e] = 0;" (assignment_expression "param_1[0x3e] = 0" (subscript_expression "param_1[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar4 = *(long *)(lVar4 + -0x18);" (assignment_expression "lVar4 = *(long *)(lVar4 + -0x18)" identifier = (pointer_expression "*(long *)(lVar4 + -0x18)" * (cast_expression "(long *)(lVar4 + -0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + -0x18)" ( (binary_expression "lVar4 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "param_1[0x3f] = 0;" (assignment_expression "param_1[0x3f] = 0" (subscript_expression "param_1[0x3f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x40] = 0;" (assignment_expression "param_1[0x40] = 0" (subscript_expression "param_1[0x40]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar4 = lVar4 + (long)param_2;" (assignment_expression "lVar4 = lVar4 + (long)param_2" identifier = (binary_expression "lVar4 + (long)param_2" identifier + (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "FUN_00318da0(puVar1,lVar4);" (call_expression "FUN_00318da0(puVar1,lVar4)" identifier (argument_list "(puVar1,lVar4)" ( identifier , identifier ))) ;) comment (expression_statement "FUN_00300bc0(puVar1,param_1 + 0x3a);" (call_expression "FUN_00300bc0(puVar1,param_1 + 0x3a)" identifier (argument_list "(puVar1,param_1 + 0x3a)" ( identifier , (binary_expression "param_1 + 0x3a" identifier + number_literal) ))) ;) (expression_statement "uVar3 = *(undefined8 *)(lVar4 + 0xd8);" (assignment_expression "uVar3 = *(undefined8 *)(lVar4 + 0xd8)" identifier = (pointer_expression "*(undefined8 *)(lVar4 + 0xd8)" * (cast_expression "(undefined8 *)(lVar4 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0xd8)" ( (binary_expression "lVar4 + 0xd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(lVar4 + 0xd8) = 0;" (assignment_expression "*(undefined8 *)(lVar4 + 0xd8) = 0" (pointer_expression "*(undefined8 *)(lVar4 + 0xd8)" * (cast_expression "(undefined8 *)(lVar4 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0xd8)" ( (binary_expression "lVar4 + 0xd8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0x3b] = uVar3;" (assignment_expression "param_1[0x3b] = uVar3" (subscript_expression "param_1[0x3b]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);" (assignment_expression "*(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0)" (pointer_expression "*(undefined1 *)(param_1 + 0x3c)" * (cast_expression "(undefined1 *)(param_1 + 0x3c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(lVar4 + 0xe0)" * (cast_expression "(undefined1 *)(lVar4 + 0xe0)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0xe0)" ( (binary_expression "lVar4 + 0xe0" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(undefined1 *)(lVar4 + 0xe1);" (assignment_expression "uVar2 = *(undefined1 *)(lVar4 + 0xe1)" identifier = (pointer_expression "*(undefined1 *)(lVar4 + 0xe1)" * (cast_expression "(undefined1 *)(lVar4 + 0xe1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0xe1)" ( (binary_expression "lVar4 + 0xe1" identifier + number_literal) ))))) ;) (expression_statement "param_1[0x3d] = 0;" (assignment_expression "param_1[0x3d] = 0" (subscript_expression "param_1[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((long)param_1 + 0x1e1) = uVar2;" (assignment_expression "*(undefined1 *)((long)param_1 + 0x1e1) = uVar2" (pointer_expression "*(undefined1 *)((long)param_1 + 0x1e1)" * (cast_expression "(undefined1 *)((long)param_1 + 0x1e1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1e1)" ( (binary_expression "(long)param_1 + 0x1e1" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_1 = &PTR_FUN_00439670;" (assignment_expression "*param_1 = &PTR_FUN_00439670" (pointer_expression "*param_1" * identifier) = (pointer_expression "&PTR_FUN_00439670" & identifier)) ;) (expression_statement "param_1[0x20] = &PTR_FUN_00439698;" (assignment_expression "param_1[0x20] = &PTR_FUN_00439698" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) = (pointer_expression "&PTR_FUN_00439698" & identifier)) ;) comment (expression_statement "FUN_00303450(param_1 + 2,param_2 + 2);" (call_expression "FUN_00303450(param_1 + 2,param_2 + 2)" identifier (argument_list "(param_1 + 2,param_2 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) , (binary_expression "param_2 + 2" identifier + number_literal) ))) ;) (expression_statement "param_1[0x3d] = param_1 + 2;" (assignment_expression "param_1[0x3d] = param_1 + 2" (subscript_expression "param_1[0x3d]" identifier [ number_literal ]) = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "/* std::ifstream::ifstream(std::ifstream&&) */\n\nvoid __thiscall std::ifstream::ifstream(ifstream *this,ifstream *param_1)\n\n{\n  ios_base *this_00;\n  ifstream iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  ios_base *piVar4;\n  \n  this_00 = (ios_base *)(this + 0x100);\n  ios_base::ios_base(this_00);\n  *(undefined **)this = &DAT_00439600;\n  *(undefined2 *)(this + 0x1e0) = 0;\n  *(undefined **)(this + 0x100) = &DAT_00439628;\n  uVar2 = *(undefined8 *)(param_1 + 8);\n  *(undefined8 *)(this + 0x1d8) = 0;\n  *(undefined8 *)(this + 8) = uVar2;\n  lVar3 = *(long *)param_1;\n  *(undefined8 *)(this + 0x1e8) = 0;\n  *(undefined8 *)(this + 0x1f0) = 0;\n  lVar3 = *(long *)(lVar3 + -0x18);\n  *(undefined8 *)(this + 0x1f8) = 0;\n  *(undefined8 *)(this + 0x200) = 0;\n  piVar4 = (ios_base *)(param_1 + lVar3);\n  ios_base::_M_move(this_00,piVar4);\n                    /* try { // try from 0030460a to 0030460e has its CatchHandler @ 00304694 */\n  ios::_M_cache_locale((ios *)this_00,(locale *)(this + 0x1d0));\n  uVar2 = *(undefined8 *)(piVar4 + 0xd8);\n  *(undefined8 *)(piVar4 + 0xd8) = 0;\n  *(undefined8 *)(this + 0x1d8) = uVar2;\n  this[0x1e0] = *(ifstream *)(piVar4 + 0xe0);\n  iVar1 = *(ifstream *)(piVar4 + 0xe1);\n  *(undefined8 *)(this + 0x1e8) = 0;\n  this[0x1e1] = iVar1;\n  *(undefined8 *)(param_1 + 8) = 0;\n  *(undefined ***)this = &PTR__ifstream_00439670;\n  *(undefined ***)(this + 0x100) = &PTR__ifstream_00439698;\n                    /* try { // try from 0030467f to 00304683 has its CatchHandler @ 00304699 */\n  filebuf::filebuf((filebuf *)(this + 0x10),(filebuf *)(param_1 + 0x10));\n  *(filebuf **)(this + 0x1e8) = (filebuf *)(this + 0x10);\n  return;\n}\n\n" comment (function_definition "void __thiscall std::ifstream::ifstream(ifstream *this,ifstream *param_1)\n\n{\n  ios_base *this_00;\n  ifstream iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  ios_base *piVar4;\n  \n  this_00 = (ios_base *)(this + 0x100);\n  ios_base::ios_base(this_00);\n  *(undefined **)this = &DAT_00439600;\n  *(undefined2 *)(this + 0x1e0) = 0;\n  *(undefined **)(this + 0x100) = &DAT_00439628;\n  uVar2 = *(undefined8 *)(param_1 + 8);\n  *(undefined8 *)(this + 0x1d8) = 0;\n  *(undefined8 *)(this + 8) = uVar2;\n  lVar3 = *(long *)param_1;\n  *(undefined8 *)(this + 0x1e8) = 0;\n  *(undefined8 *)(this + 0x1f0) = 0;\n  lVar3 = *(long *)(lVar3 + -0x18);\n  *(undefined8 *)(this + 0x1f8) = 0;\n  *(undefined8 *)(this + 0x200) = 0;\n  piVar4 = (ios_base *)(param_1 + lVar3);\n  ios_base::_M_move(this_00,piVar4);\n                    /* try { // try from 0030460a to 0030460e has its CatchHandler @ 00304694 */\n  ios::_M_cache_locale((ios *)this_00,(locale *)(this + 0x1d0));\n  uVar2 = *(undefined8 *)(piVar4 + 0xd8);\n  *(undefined8 *)(piVar4 + 0xd8) = 0;\n  *(undefined8 *)(this + 0x1d8) = uVar2;\n  this[0x1e0] = *(ifstream *)(piVar4 + 0xe0);\n  iVar1 = *(ifstream *)(piVar4 + 0xe1);\n  *(undefined8 *)(this + 0x1e8) = 0;\n  this[0x1e1] = iVar1;\n  *(undefined8 *)(param_1 + 8) = 0;\n  *(undefined ***)this = &PTR__ifstream_00439670;\n  *(undefined ***)(this + 0x100) = &PTR__ifstream_00439698;\n                    /* try { // try from 0030467f to 00304683 has its CatchHandler @ 00304699 */\n  filebuf::filebuf((filebuf *)(this + 0x10),(filebuf *)(param_1 + 0x10));\n  *(filebuf **)(this + 0x1e8) = (filebuf *)(this + 0x10);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::ifstream::" identifier : : identifier : :) (function_declarator "ifstream(ifstream *this,ifstream *param_1)" identifier (parameter_list "(ifstream *this,ifstream *param_1)" ( (parameter_declaration "ifstream *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "ifstream *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  ios_base *this_00;\n  ifstream iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  ios_base *piVar4;\n  \n  this_00 = (ios_base *)(this + 0x100);\n  ios_base::ios_base(this_00);\n  *(undefined **)this = &DAT_00439600;\n  *(undefined2 *)(this + 0x1e0) = 0;\n  *(undefined **)(this + 0x100) = &DAT_00439628;\n  uVar2 = *(undefined8 *)(param_1 + 8);\n  *(undefined8 *)(this + 0x1d8) = 0;\n  *(undefined8 *)(this + 8) = uVar2;\n  lVar3 = *(long *)param_1;\n  *(undefined8 *)(this + 0x1e8) = 0;\n  *(undefined8 *)(this + 0x1f0) = 0;\n  lVar3 = *(long *)(lVar3 + -0x18);\n  *(undefined8 *)(this + 0x1f8) = 0;\n  *(undefined8 *)(this + 0x200) = 0;\n  piVar4 = (ios_base *)(param_1 + lVar3);\n  ios_base::_M_move(this_00,piVar4);\n                    /* try { // try from 0030460a to 0030460e has its CatchHandler @ 00304694 */\n  ios::_M_cache_locale((ios *)this_00,(locale *)(this + 0x1d0));\n  uVar2 = *(undefined8 *)(piVar4 + 0xd8);\n  *(undefined8 *)(piVar4 + 0xd8) = 0;\n  *(undefined8 *)(this + 0x1d8) = uVar2;\n  this[0x1e0] = *(ifstream *)(piVar4 + 0xe0);\n  iVar1 = *(ifstream *)(piVar4 + 0xe1);\n  *(undefined8 *)(this + 0x1e8) = 0;\n  this[0x1e1] = iVar1;\n  *(undefined8 *)(param_1 + 8) = 0;\n  *(undefined ***)this = &PTR__ifstream_00439670;\n  *(undefined ***)(this + 0x100) = &PTR__ifstream_00439698;\n                    /* try { // try from 0030467f to 00304683 has its CatchHandler @ 00304699 */\n  filebuf::filebuf((filebuf *)(this + 0x10),(filebuf *)(param_1 + 0x10));\n  *(filebuf **)(this + 0x1e8) = (filebuf *)(this + 0x10);\n  return;\n}" { (declaration "ios_base *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "ifstream iVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ios_base *piVar4;" type_identifier (pointer_declarator "*piVar4" * identifier) ;) (expression_statement "this_00 = (ios_base *)(this + 0x100);" (assignment_expression "this_00 = (ios_base *)(this + 0x100)" identifier = (cast_expression "(ios_base *)(this + 0x100)" ( (type_descriptor "ios_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x100)" ( (binary_expression "this + 0x100" identifier + number_literal) )))) ;) (labeled_statement "ios_base::ios_base(this_00);" statement_identifier : (ERROR ":" :) (expression_statement "ios_base(this_00);" (call_expression "ios_base(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;)) (expression_statement "*(undefined **)this = &DAT_00439600;" (assignment_expression "*(undefined **)this = &DAT_00439600" (pointer_expression "*(undefined **)this" * (cast_expression "(undefined **)this" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = (pointer_expression "&DAT_00439600" & identifier)) ;) (expression_statement "*(undefined2 *)(this + 0x1e0) = 0;" (assignment_expression "*(undefined2 *)(this + 0x1e0) = 0" (pointer_expression "*(undefined2 *)(this + 0x1e0)" * (cast_expression "(undefined2 *)(this + 0x1e0)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1e0)" ( (binary_expression "this + 0x1e0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined **)(this + 0x100) = &DAT_00439628;" (assignment_expression "*(undefined **)(this + 0x100) = &DAT_00439628" (pointer_expression "*(undefined **)(this + 0x100)" * (cast_expression "(undefined **)(this + 0x100)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x100)" ( (binary_expression "this + 0x100" identifier + number_literal) )))) = (pointer_expression "&DAT_00439628" & identifier)) ;) (expression_statement "uVar2 = *(undefined8 *)(param_1 + 8);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(this + 0x1d8) = 0;" (assignment_expression "*(undefined8 *)(this + 0x1d8) = 0" (pointer_expression "*(undefined8 *)(this + 0x1d8)" * (cast_expression "(undefined8 *)(this + 0x1d8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1d8)" ( (binary_expression "this + 0x1d8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 8) = uVar2;" (assignment_expression "*(undefined8 *)(this + 8) = uVar2" (pointer_expression "*(undefined8 *)(this + 8)" * (cast_expression "(undefined8 *)(this + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "lVar3 = *(long *)param_1;" (assignment_expression "lVar3 = *(long *)param_1" identifier = (pointer_expression "*(long *)param_1" * (cast_expression "(long *)param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined8 *)(this + 0x1e8) = 0;" (assignment_expression "*(undefined8 *)(this + 0x1e8) = 0" (pointer_expression "*(undefined8 *)(this + 0x1e8)" * (cast_expression "(undefined8 *)(this + 0x1e8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1e8)" ( (binary_expression "this + 0x1e8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x1f0) = 0;" (assignment_expression "*(undefined8 *)(this + 0x1f0) = 0" (pointer_expression "*(undefined8 *)(this + 0x1f0)" * (cast_expression "(undefined8 *)(this + 0x1f0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1f0)" ( (binary_expression "this + 0x1f0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "lVar3 = *(long *)(lVar3 + -0x18);" (assignment_expression "lVar3 = *(long *)(lVar3 + -0x18)" identifier = (pointer_expression "*(long *)(lVar3 + -0x18)" * (cast_expression "(long *)(lVar3 + -0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + -0x18)" ( (binary_expression "lVar3 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(this + 0x1f8) = 0;" (assignment_expression "*(undefined8 *)(this + 0x1f8) = 0" (pointer_expression "*(undefined8 *)(this + 0x1f8)" * (cast_expression "(undefined8 *)(this + 0x1f8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1f8)" ( (binary_expression "this + 0x1f8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x200) = 0;" (assignment_expression "*(undefined8 *)(this + 0x200) = 0" (pointer_expression "*(undefined8 *)(this + 0x200)" * (cast_expression "(undefined8 *)(this + 0x200)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x200)" ( (binary_expression "this + 0x200" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar4 = (ios_base *)(param_1 + lVar3);" (assignment_expression "piVar4 = (ios_base *)(param_1 + lVar3)" identifier = (cast_expression "(ios_base *)(param_1 + lVar3)" ( (type_descriptor "ios_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar3)" ( (binary_expression "param_1 + lVar3" identifier + identifier) )))) ;) (labeled_statement "ios_base::_M_move(this_00,piVar4);" statement_identifier : (ERROR ":" :) (expression_statement "_M_move(this_00,piVar4);" (call_expression "_M_move(this_00,piVar4)" identifier (argument_list "(this_00,piVar4)" ( identifier , identifier ))) ;)) comment (labeled_statement "ios::_M_cache_locale((ios *)this_00,(locale *)(this + 0x1d0));" statement_identifier : (ERROR ":" :) (expression_statement "_M_cache_locale((ios *)this_00,(locale *)(this + 0x1d0));" (call_expression "_M_cache_locale((ios *)this_00,(locale *)(this + 0x1d0))" identifier (argument_list "((ios *)this_00,(locale *)(this + 0x1d0))" ( (cast_expression "(ios *)this_00" ( (type_descriptor "ios *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(locale *)(this + 0x1d0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1d0)" ( (binary_expression "this + 0x1d0" identifier + number_literal) ))) ))) ;)) (expression_statement "uVar2 = *(undefined8 *)(piVar4 + 0xd8);" (assignment_expression "uVar2 = *(undefined8 *)(piVar4 + 0xd8)" identifier = (pointer_expression "*(undefined8 *)(piVar4 + 0xd8)" * (cast_expression "(undefined8 *)(piVar4 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 0xd8)" ( (binary_expression "piVar4 + 0xd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(piVar4 + 0xd8) = 0;" (assignment_expression "*(undefined8 *)(piVar4 + 0xd8) = 0" (pointer_expression "*(undefined8 *)(piVar4 + 0xd8)" * (cast_expression "(undefined8 *)(piVar4 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 0xd8)" ( (binary_expression "piVar4 + 0xd8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x1d8) = uVar2;" (assignment_expression "*(undefined8 *)(this + 0x1d8) = uVar2" (pointer_expression "*(undefined8 *)(this + 0x1d8)" * (cast_expression "(undefined8 *)(this + 0x1d8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1d8)" ( (binary_expression "this + 0x1d8" identifier + number_literal) )))) = identifier) ;) (expression_statement "this[0x1e0] = *(ifstream *)(piVar4 + 0xe0);" (assignment_expression "this[0x1e0] = *(ifstream *)(piVar4 + 0xe0)" (subscript_expression "this[0x1e0]" identifier [ number_literal ]) = (pointer_expression "*(ifstream *)(piVar4 + 0xe0)" * (cast_expression "(ifstream *)(piVar4 + 0xe0)" ( (type_descriptor "ifstream *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 0xe0)" ( (binary_expression "piVar4 + 0xe0" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(ifstream *)(piVar4 + 0xe1);" (assignment_expression "iVar1 = *(ifstream *)(piVar4 + 0xe1)" identifier = (pointer_expression "*(ifstream *)(piVar4 + 0xe1)" * (cast_expression "(ifstream *)(piVar4 + 0xe1)" ( (type_descriptor "ifstream *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 0xe1)" ( (binary_expression "piVar4 + 0xe1" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(this + 0x1e8) = 0;" (assignment_expression "*(undefined8 *)(this + 0x1e8) = 0" (pointer_expression "*(undefined8 *)(this + 0x1e8)" * (cast_expression "(undefined8 *)(this + 0x1e8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1e8)" ( (binary_expression "this + 0x1e8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x1e1] = iVar1;" (assignment_expression "this[0x1e1] = iVar1" (subscript_expression "this[0x1e1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined8 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 8) = 0" (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)this = &PTR__ifstream_00439670;" (assignment_expression "*(undefined ***)this = &PTR__ifstream_00439670" (pointer_expression "*(undefined ***)this" * (cast_expression "(undefined ***)this" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR__ifstream_00439670" & identifier)) ;) (expression_statement "*(undefined ***)(this + 0x100) = &PTR__ifstream_00439698;" (assignment_expression "*(undefined ***)(this + 0x100) = &PTR__ifstream_00439698" (pointer_expression "*(undefined ***)(this + 0x100)" * (cast_expression "(undefined ***)(this + 0x100)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(this + 0x100)" ( (binary_expression "this + 0x100" identifier + number_literal) )))) = (pointer_expression "&PTR__ifstream_00439698" & identifier)) ;) comment (labeled_statement "filebuf::filebuf((filebuf *)(this + 0x10),(filebuf *)(param_1 + 0x10));" statement_identifier : (ERROR ":" :) (expression_statement "filebuf((filebuf *)(this + 0x10),(filebuf *)(param_1 + 0x10));" (call_expression "filebuf((filebuf *)(this + 0x10),(filebuf *)(param_1 + 0x10))" identifier (argument_list "((filebuf *)(this + 0x10),(filebuf *)(param_1 + 0x10))" ( (cast_expression "(filebuf *)(this + 0x10)" ( (type_descriptor "filebuf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) ))) , (cast_expression "(filebuf *)(param_1 + 0x10)" ( (type_descriptor "filebuf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))) ))) ;)) (expression_statement "*(filebuf **)(this + 0x1e8) = (filebuf *)(this + 0x10);" (assignment_expression "*(filebuf **)(this + 0x1e8) = (filebuf *)(this + 0x10)" (pointer_expression "*(filebuf **)(this + 0x1e8)" * (cast_expression "(filebuf **)(this + 0x1e8)" ( (type_descriptor "filebuf **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x1e8)" ( (binary_expression "this + 0x1e8" identifier + number_literal) )))) = (cast_expression "(filebuf *)(this + 0x10)" ( (type_descriptor "filebuf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00304570(undefined8 *param_1,long *param_2)\n\n{\n  undefined8 *puVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  long lVar4;\n  \n  puVar1 = param_1 + 0x20;\n  FUN_003189d0(puVar1);\n  *param_1 = &DAT_00439600;\n  *(undefined2 *)(param_1 + 0x3c) = 0;\n  param_1[0x20] = &DAT_00439628;\n  lVar4 = param_2[1];\n  param_1[0x3b] = 0;\n  param_1[1] = lVar4;\n  lVar4 = *param_2;\n  param_1[0x3d] = 0;\n  param_1[0x3e] = 0;\n  lVar4 = *(long *)(lVar4 + -0x18);\n  param_1[0x3f] = 0;\n  param_1[0x40] = 0;\n  lVar4 = lVar4 + (long)param_2;\n  FUN_00318da0(puVar1,lVar4);\n                    \n  FUN_00300bc0(puVar1,param_1 + 0x3a);\n  uVar3 = *(undefined8 *)(lVar4 + 0xd8);\n  *(undefined8 *)(lVar4 + 0xd8) = 0;\n  param_1[0x3b] = uVar3;\n  *(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);\n  uVar2 = *(undefined1 *)(lVar4 + 0xe1);\n  param_1[0x3d] = 0;\n  *(undefined1 *)((long)param_1 + 0x1e1) = uVar2;\n  param_2[1] = 0;\n  *param_1 = &PTR_FUN_00439670;\n  param_1[0x20] = &PTR_FUN_00439698;\n                    \n  FUN_00303450(param_1 + 2,param_2 + 2);\n  param_1[0x3d] = param_1 + 2;\n  return;\n}\n\n" (function_definition "void FUN_00304570(undefined8 *param_1,long *param_2)\n\n{\n  undefined8 *puVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  long lVar4;\n  \n  puVar1 = param_1 + 0x20;\n  FUN_003189d0(puVar1);\n  *param_1 = &DAT_00439600;\n  *(undefined2 *)(param_1 + 0x3c) = 0;\n  param_1[0x20] = &DAT_00439628;\n  lVar4 = param_2[1];\n  param_1[0x3b] = 0;\n  param_1[1] = lVar4;\n  lVar4 = *param_2;\n  param_1[0x3d] = 0;\n  param_1[0x3e] = 0;\n  lVar4 = *(long *)(lVar4 + -0x18);\n  param_1[0x3f] = 0;\n  param_1[0x40] = 0;\n  lVar4 = lVar4 + (long)param_2;\n  FUN_00318da0(puVar1,lVar4);\n                    \n  FUN_00300bc0(puVar1,param_1 + 0x3a);\n  uVar3 = *(undefined8 *)(lVar4 + 0xd8);\n  *(undefined8 *)(lVar4 + 0xd8) = 0;\n  param_1[0x3b] = uVar3;\n  *(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);\n  uVar2 = *(undefined1 *)(lVar4 + 0xe1);\n  param_1[0x3d] = 0;\n  *(undefined1 *)((long)param_1 + 0x1e1) = uVar2;\n  param_2[1] = 0;\n  *param_1 = &PTR_FUN_00439670;\n  param_1[0x20] = &PTR_FUN_00439698;\n                    \n  FUN_00303450(param_1 + 2,param_2 + 2);\n  param_1[0x3d] = param_1 + 2;\n  return;\n}" primitive_type (function_declarator "FUN_00304570(undefined8 *param_1,long *param_2)" identifier (parameter_list "(undefined8 *param_1,long *param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  long lVar4;\n  \n  puVar1 = param_1 + 0x20;\n  FUN_003189d0(puVar1);\n  *param_1 = &DAT_00439600;\n  *(undefined2 *)(param_1 + 0x3c) = 0;\n  param_1[0x20] = &DAT_00439628;\n  lVar4 = param_2[1];\n  param_1[0x3b] = 0;\n  param_1[1] = lVar4;\n  lVar4 = *param_2;\n  param_1[0x3d] = 0;\n  param_1[0x3e] = 0;\n  lVar4 = *(long *)(lVar4 + -0x18);\n  param_1[0x3f] = 0;\n  param_1[0x40] = 0;\n  lVar4 = lVar4 + (long)param_2;\n  FUN_00318da0(puVar1,lVar4);\n                    \n  FUN_00300bc0(puVar1,param_1 + 0x3a);\n  uVar3 = *(undefined8 *)(lVar4 + 0xd8);\n  *(undefined8 *)(lVar4 + 0xd8) = 0;\n  param_1[0x3b] = uVar3;\n  *(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);\n  uVar2 = *(undefined1 *)(lVar4 + 0xe1);\n  param_1[0x3d] = 0;\n  *(undefined1 *)((long)param_1 + 0x1e1) = uVar2;\n  param_2[1] = 0;\n  *param_1 = &PTR_FUN_00439670;\n  param_1[0x20] = &PTR_FUN_00439698;\n                    \n  FUN_00303450(param_1 + 2,param_2 + 2);\n  param_1[0x3d] = param_1 + 2;\n  return;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (expression_statement "puVar1 = param_1 + 0x20;" (assignment_expression "puVar1 = param_1 + 0x20" identifier = (binary_expression "param_1 + 0x20" identifier + number_literal)) ;) (expression_statement "FUN_003189d0(puVar1);" (call_expression "FUN_003189d0(puVar1)" identifier (argument_list "(puVar1)" ( identifier ))) ;) (expression_statement "*param_1 = &DAT_00439600;" (assignment_expression "*param_1 = &DAT_00439600" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_00439600" & identifier)) ;) (expression_statement "*(undefined2 *)(param_1 + 0x3c) = 0;" (assignment_expression "*(undefined2 *)(param_1 + 0x3c) = 0" (pointer_expression "*(undefined2 *)(param_1 + 0x3c)" * (cast_expression "(undefined2 *)(param_1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0x20] = &DAT_00439628;" (assignment_expression "param_1[0x20] = &DAT_00439628" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) = (pointer_expression "&DAT_00439628" & identifier)) ;) (expression_statement "lVar4 = param_2[1];" (assignment_expression "lVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x3b] = 0;" (assignment_expression "param_1[0x3b] = 0" (subscript_expression "param_1[0x3b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[1] = lVar4;" (assignment_expression "param_1[1] = lVar4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar4 = *param_2;" (assignment_expression "lVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_1[0x3d] = 0;" (assignment_expression "param_1[0x3d] = 0" (subscript_expression "param_1[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x3e] = 0;" (assignment_expression "param_1[0x3e] = 0" (subscript_expression "param_1[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar4 = *(long *)(lVar4 + -0x18);" (assignment_expression "lVar4 = *(long *)(lVar4 + -0x18)" identifier = (pointer_expression "*(long *)(lVar4 + -0x18)" * (cast_expression "(long *)(lVar4 + -0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + -0x18)" ( (binary_expression "lVar4 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "param_1[0x3f] = 0;" (assignment_expression "param_1[0x3f] = 0" (subscript_expression "param_1[0x3f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x40] = 0;" (assignment_expression "param_1[0x40] = 0" (subscript_expression "param_1[0x40]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar4 = lVar4 + (long)param_2;" (assignment_expression "lVar4 = lVar4 + (long)param_2" identifier = (binary_expression "lVar4 + (long)param_2" identifier + (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "FUN_00318da0(puVar1,lVar4);" (call_expression "FUN_00318da0(puVar1,lVar4)" identifier (argument_list "(puVar1,lVar4)" ( identifier , identifier ))) ;) (expression_statement "FUN_00300bc0(puVar1,param_1 + 0x3a);" (call_expression "FUN_00300bc0(puVar1,param_1 + 0x3a)" identifier (argument_list "(puVar1,param_1 + 0x3a)" ( identifier , (binary_expression "param_1 + 0x3a" identifier + number_literal) ))) ;) (expression_statement "uVar3 = *(undefined8 *)(lVar4 + 0xd8);" (assignment_expression "uVar3 = *(undefined8 *)(lVar4 + 0xd8)" identifier = (pointer_expression "*(undefined8 *)(lVar4 + 0xd8)" * (cast_expression "(undefined8 *)(lVar4 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0xd8)" ( (binary_expression "lVar4 + 0xd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(lVar4 + 0xd8) = 0;" (assignment_expression "*(undefined8 *)(lVar4 + 0xd8) = 0" (pointer_expression "*(undefined8 *)(lVar4 + 0xd8)" * (cast_expression "(undefined8 *)(lVar4 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0xd8)" ( (binary_expression "lVar4 + 0xd8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0x3b] = uVar3;" (assignment_expression "param_1[0x3b] = uVar3" (subscript_expression "param_1[0x3b]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);" (assignment_expression "*(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0)" (pointer_expression "*(undefined1 *)(param_1 + 0x3c)" * (cast_expression "(undefined1 *)(param_1 + 0x3c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(lVar4 + 0xe0)" * (cast_expression "(undefined1 *)(lVar4 + 0xe0)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0xe0)" ( (binary_expression "lVar4 + 0xe0" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(undefined1 *)(lVar4 + 0xe1);" (assignment_expression "uVar2 = *(undefined1 *)(lVar4 + 0xe1)" identifier = (pointer_expression "*(undefined1 *)(lVar4 + 0xe1)" * (cast_expression "(undefined1 *)(lVar4 + 0xe1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0xe1)" ( (binary_expression "lVar4 + 0xe1" identifier + number_literal) ))))) ;) (expression_statement "param_1[0x3d] = 0;" (assignment_expression "param_1[0x3d] = 0" (subscript_expression "param_1[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((long)param_1 + 0x1e1) = uVar2;" (assignment_expression "*(undefined1 *)((long)param_1 + 0x1e1) = uVar2" (pointer_expression "*(undefined1 *)((long)param_1 + 0x1e1)" * (cast_expression "(undefined1 *)((long)param_1 + 0x1e1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1e1)" ( (binary_expression "(long)param_1 + 0x1e1" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_1 = &PTR_FUN_00439670;" (assignment_expression "*param_1 = &PTR_FUN_00439670" (pointer_expression "*param_1" * identifier) = (pointer_expression "&PTR_FUN_00439670" & identifier)) ;) (expression_statement "param_1[0x20] = &PTR_FUN_00439698;" (assignment_expression "param_1[0x20] = &PTR_FUN_00439698" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) = (pointer_expression "&PTR_FUN_00439698" & identifier)) ;) (expression_statement "FUN_00303450(param_1 + 2,param_2 + 2);" (call_expression "FUN_00303450(param_1 + 2,param_2 + 2)" identifier (argument_list "(param_1 + 2,param_2 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) , (binary_expression "param_2 + 2" identifier + number_literal) ))) ;) (expression_statement "param_1[0x3d] = param_1 + 2;" (assignment_expression "param_1[0x3d] = param_1 + 2" (subscript_expression "param_1[0x3d]" identifier [ number_literal ]) = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (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 (subscript_expression IDENT [ LIT ]) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (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 (subscript_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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (return_statement return ;) })))
(function_definition "void FUN_00304570(undefined8 *param_1,long *param_2)\n\n{\n  undefined8 *puVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  long lVar4;\n  \n  puVar1 = param_1 + 0x20;\n  FUN_003189d0(puVar1);\n  *param_1 = &DAT_00439600;\n  *(undefined2 *)(param_1 + 0x3c) = 0;\n  param_1[0x20] = &DAT_00439628;\n  lVar4 = param_2[1];\n  param_1[0x3b] = 0;\n  param_1[1] = lVar4;\n  lVar4 = *param_2;\n  param_1[0x3d] = 0;\n  param_1[0x3e] = 0;\n  lVar4 = *(long *)(lVar4 + -0x18);\n  param_1[0x3f] = 0;\n  param_1[0x40] = 0;\n  lVar4 = lVar4 + (long)param_2;\n  FUN_00318da0(puVar1,lVar4);\n                    \n  FUN_00300bc0(puVar1,param_1 + 0x3a);\n  uVar3 = *(undefined8 *)(lVar4 + 0xd8);\n  *(undefined8 *)(lVar4 + 0xd8) = 0;\n  param_1[0x3b] = uVar3;\n  *(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);\n  uVar2 = *(undefined1 *)(lVar4 + 0xe1);\n  param_1[0x3d] = 0;\n  *(undefined1 *)((long)param_1 + 0x1e1) = uVar2;\n  param_2[1] = 0;\n  *param_1 = &PTR_FUN_00439670;\n  param_1[0x20] = &PTR_FUN_00439698;\n                    \n  FUN_00303450(param_1 + 2,param_2 + 2);\n  param_1[0x3d] = param_1 + 2;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00304570(undefined8 *param_1,long *param_2)" (identifier "FUN_00304570") (parameter_list "(undefined8 *param_1,long *param_2)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  long lVar4;\n  \n  puVar1 = param_1 + 0x20;\n  FUN_003189d0(puVar1);\n  *param_1 = &DAT_00439600;\n  *(undefined2 *)(param_1 + 0x3c) = 0;\n  param_1[0x20] = &DAT_00439628;\n  lVar4 = param_2[1];\n  param_1[0x3b] = 0;\n  param_1[1] = lVar4;\n  lVar4 = *param_2;\n  param_1[0x3d] = 0;\n  param_1[0x3e] = 0;\n  lVar4 = *(long *)(lVar4 + -0x18);\n  param_1[0x3f] = 0;\n  param_1[0x40] = 0;\n  lVar4 = lVar4 + (long)param_2;\n  FUN_00318da0(puVar1,lVar4);\n                    \n  FUN_00300bc0(puVar1,param_1 + 0x3a);\n  uVar3 = *(undefined8 *)(lVar4 + 0xd8);\n  *(undefined8 *)(lVar4 + 0xd8) = 0;\n  param_1[0x3b] = uVar3;\n  *(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);\n  uVar2 = *(undefined1 *)(lVar4 + 0xe1);\n  param_1[0x3d] = 0;\n  *(undefined1 *)((long)param_1 + 0x1e1) = uVar2;\n  param_2[1] = 0;\n  *param_1 = &PTR_FUN_00439670;\n  param_1[0x20] = &PTR_FUN_00439698;\n                    \n  FUN_00303450(param_1 + 2,param_2 + 2);\n  param_1[0x3d] = param_1 + 2;\n  return;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined1 uVar2;" (type_identifier "undefined1") (identifier "uVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (expression_statement "puVar1 = param_1 + 0x20;" (assignment_expression "puVar1 = param_1 + 0x20" (identifier "puVar1") (= "=") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20"))) (; ";")) (expression_statement "FUN_003189d0(puVar1);" (call_expression "FUN_003189d0(puVar1)" (identifier "FUN_003189d0") (argument_list "(puVar1)" (( "(") (identifier "puVar1") () ")"))) (; ";")) (expression_statement "*param_1 = &DAT_00439600;" (assignment_expression "*param_1 = &DAT_00439600" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&DAT_00439600" (& "&") (identifier "DAT_00439600"))) (; ";")) (expression_statement "*(undefined2 *)(param_1 + 0x3c) = 0;" (assignment_expression "*(undefined2 *)(param_1 + 0x3c) = 0" (pointer_expression "*(undefined2 *)(param_1 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(param_1 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x20] = &DAT_00439628;" (assignment_expression "param_1[0x20] = &DAT_00439628" (subscript_expression "param_1[0x20]" (identifier "param_1") ([ "[") (number_literal "0x20") (] "]")) (= "=") (pointer_expression "&DAT_00439628" (& "&") (identifier "DAT_00439628"))) (; ";")) (expression_statement "lVar4 = param_2[1];" (assignment_expression "lVar4 = param_2[1]" (identifier "lVar4") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_1[0x3b] = 0;" (assignment_expression "param_1[0x3b] = 0" (subscript_expression "param_1[0x3b]" (identifier "param_1") ([ "[") (number_literal "0x3b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[1] = lVar4;" (assignment_expression "param_1[1] = lVar4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar4")) (; ";")) (expression_statement "lVar4 = *param_2;" (assignment_expression "lVar4 = *param_2" (identifier "lVar4") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "param_1[0x3d] = 0;" (assignment_expression "param_1[0x3d] = 0" (subscript_expression "param_1[0x3d]" (identifier "param_1") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x3e] = 0;" (assignment_expression "param_1[0x3e] = 0" (subscript_expression "param_1[0x3e]" (identifier "param_1") ([ "[") (number_literal "0x3e") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar4 = *(long *)(lVar4 + -0x18);" (assignment_expression "lVar4 = *(long *)(lVar4 + -0x18)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar4 + -0x18)" (* "*") (cast_expression "(long *)(lVar4 + -0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + -0x18)" (( "(") (binary_expression "lVar4 + -0x18" (identifier "lVar4") (+ "+") (number_literal "-0x18")) () ")"))))) (; ";")) (expression_statement "param_1[0x3f] = 0;" (assignment_expression "param_1[0x3f] = 0" (subscript_expression "param_1[0x3f]" (identifier "param_1") ([ "[") (number_literal "0x3f") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x40] = 0;" (assignment_expression "param_1[0x40] = 0" (subscript_expression "param_1[0x40]" (identifier "param_1") ([ "[") (number_literal "0x40") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar4 = lVar4 + (long)param_2;" (assignment_expression "lVar4 = lVar4 + (long)param_2" (identifier "lVar4") (= "=") (binary_expression "lVar4 + (long)param_2" (identifier "lVar4") (+ "+") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")))) (; ";")) (expression_statement "FUN_00318da0(puVar1,lVar4);" (call_expression "FUN_00318da0(puVar1,lVar4)" (identifier "FUN_00318da0") (argument_list "(puVar1,lVar4)" (( "(") (identifier "puVar1") (, ",") (identifier "lVar4") () ")"))) (; ";")) (expression_statement "FUN_00300bc0(puVar1,param_1 + 0x3a);" (call_expression "FUN_00300bc0(puVar1,param_1 + 0x3a)" (identifier "FUN_00300bc0") (argument_list "(puVar1,param_1 + 0x3a)" (( "(") (identifier "puVar1") (, ",") (binary_expression "param_1 + 0x3a" (identifier "param_1") (+ "+") (number_literal "0x3a")) () ")"))) (; ";")) (expression_statement "uVar3 = *(undefined8 *)(lVar4 + 0xd8);" (assignment_expression "uVar3 = *(undefined8 *)(lVar4 + 0xd8)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(lVar4 + 0xd8)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0xd8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0xd8)" (( "(") (binary_expression "lVar4 + 0xd8" (identifier "lVar4") (+ "+") (number_literal "0xd8")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(lVar4 + 0xd8) = 0;" (assignment_expression "*(undefined8 *)(lVar4 + 0xd8) = 0" (pointer_expression "*(undefined8 *)(lVar4 + 0xd8)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0xd8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0xd8)" (( "(") (binary_expression "lVar4 + 0xd8" (identifier "lVar4") (+ "+") (number_literal "0xd8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x3b] = uVar3;" (assignment_expression "param_1[0x3b] = uVar3" (subscript_expression "param_1[0x3b]" (identifier "param_1") ([ "[") (number_literal "0x3b") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);" (assignment_expression "*(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0)" (pointer_expression "*(undefined1 *)(param_1 + 0x3c)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x3c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(lVar4 + 0xe0)" (* "*") (cast_expression "(undefined1 *)(lVar4 + 0xe0)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0xe0)" (( "(") (binary_expression "lVar4 + 0xe0" (identifier "lVar4") (+ "+") (number_literal "0xe0")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(undefined1 *)(lVar4 + 0xe1);" (assignment_expression "uVar2 = *(undefined1 *)(lVar4 + 0xe1)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined1 *)(lVar4 + 0xe1)" (* "*") (cast_expression "(undefined1 *)(lVar4 + 0xe1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0xe1)" (( "(") (binary_expression "lVar4 + 0xe1" (identifier "lVar4") (+ "+") (number_literal "0xe1")) () ")"))))) (; ";")) (expression_statement "param_1[0x3d] = 0;" (assignment_expression "param_1[0x3d] = 0" (subscript_expression "param_1[0x3d]" (identifier "param_1") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((long)param_1 + 0x1e1) = uVar2;" (assignment_expression "*(undefined1 *)((long)param_1 + 0x1e1) = uVar2" (pointer_expression "*(undefined1 *)((long)param_1 + 0x1e1)" (* "*") (cast_expression "(undefined1 *)((long)param_1 + 0x1e1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x1e1)" (( "(") (binary_expression "(long)param_1 + 0x1e1" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1e1")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_1 = &PTR_FUN_00439670;" (assignment_expression "*param_1 = &PTR_FUN_00439670" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&PTR_FUN_00439670" (& "&") (identifier "PTR_FUN_00439670"))) (; ";")) (expression_statement "param_1[0x20] = &PTR_FUN_00439698;" (assignment_expression "param_1[0x20] = &PTR_FUN_00439698" (subscript_expression "param_1[0x20]" (identifier "param_1") ([ "[") (number_literal "0x20") (] "]")) (= "=") (pointer_expression "&PTR_FUN_00439698" (& "&") (identifier "PTR_FUN_00439698"))) (; ";")) (expression_statement "FUN_00303450(param_1 + 2,param_2 + 2);" (call_expression "FUN_00303450(param_1 + 2,param_2 + 2)" (identifier "FUN_00303450") (argument_list "(param_1 + 2,param_2 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) (, ",") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")"))) (; ";")) (expression_statement "param_1[0x3d] = param_1 + 2;" (assignment_expression "param_1[0x3d] = param_1 + 2" (subscript_expression "param_1[0x3d]" (identifier "param_1") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* std::ifstream::ifstream(std::ifstream&&) */

void __thiscall std::function_1::function_1(function_1 *var_1,function_1 *var_2)

{
  type_1 *this_00;
  function_1 iVar1;
  type_2 uVar2;
  long var_3;
  type_1 *var_6;
  
  this_00 = (type_1 *)(var_1 + 0x100);
  ios_base::type_1(this_00);
  *(type_3 **)var_1 = &DAT_00439600;
  *(type_4 *)(var_1 + 0x1e0) = 0;
  *(type_3 **)(var_1 + 0x100) = &DAT_00439628;
  uVar2 = *(type_2 *)(var_2 + 8);
  *(type_2 *)(var_1 + 0x1d8) = 0;
  *(type_2 *)(var_1 + 8) = uVar2;
  var_3 = *(long *)var_2;
  *(type_2 *)(var_1 + 0x1e8) = 0;
  *(type_2 *)(var_1 + 0x1f0) = 0;
  var_3 = *(long *)(var_3 + -0x18);
  *(type_2 *)(var_1 + 0x1f8) = 0;
  *(type_2 *)(var_1 + 0x200) = 0;
  var_6 = (type_1 *)(var_2 + var_3);
  ios_base::var_4(this_00,var_6);
                    /* try { // try from 0030460a to 0030460e has its CatchHandler @ 00304694 */
  ios::var_5((type_5 *)this_00,(type_6 *)(var_1 + 0x1d0));
  uVar2 = *(type_2 *)(var_6 + 0xd8);
  *(type_2 *)(var_6 + 0xd8) = 0;
  *(type_2 *)(var_1 + 0x1d8) = uVar2;
  var_1[0x1e0] = *(function_1 *)(var_6 + 0xe0);
  iVar1 = *(function_1 *)(var_6 + 0xe1);
  *(type_2 *)(var_1 + 0x1e8) = 0;
  var_1[0x1e1] = iVar1;
  *(type_2 *)(var_2 + 8) = 0;
  *(type_3 ***)var_1 = &PTR__ifstream_00439670;
  *(type_3 ***)(var_1 + 0x100) = &PTR__ifstream_00439698;
                    /* try { // try from 0030467f to 00304683 has its CatchHandler @ 00304699 */
  filebuf::var_7((var_7 *)(var_1 + 0x10),(var_7 *)(var_2 + 0x10));
  *(var_7 **)(var_1 + 0x1e8) = (var_7 *)(var_1 + 0x10);
  return;
}


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

void MASKED(undefined8 *param_1,long *param_2)

{
  undefined8 *puVar1;
  undefined1 uVar2;
  undefined8 uVar3;
  long lVar4;
  
  puVar1 = param_1 + 0x20;
  FUN_003189d0(puVar1);
  *param_1 = &DAT_00439600;
  *(undefined2 *)(param_1 + 0x3c) = 0;
  param_1[0x20] = &DAT_00439628;
  lVar4 = param_2[1];
  param_1[0x3b] = 0;
  param_1[1] = lVar4;
  lVar4 = *param_2;
  param_1[0x3d] = 0;
  param_1[0x3e] = 0;
  lVar4 = *(long *)(lVar4 + -0x18);
  param_1[0x3f] = 0;
  param_1[0x40] = 0;
  lVar4 = lVar4 + (long)param_2;
  FUN_00318da0(puVar1,lVar4);
                    /* try { // try from 0030460a to 0030460e has its CatchHandler @ 00304694 */
  FUN_00300bc0(puVar1,param_1 + 0x3a);
  uVar3 = *(undefined8 *)(lVar4 + 0xd8);
  *(undefined8 *)(lVar4 + 0xd8) = 0;
  param_1[0x3b] = uVar3;
  *(undefined1 *)(param_1 + 0x3c) = *(undefined1 *)(lVar4 + 0xe0);
  uVar2 = *(undefined1 *)(lVar4 + 0xe1);
  param_1[0x3d] = 0;
  *(undefined1 *)((long)param_1 + 0x1e1) = uVar2;
  param_2[1] = 0;
  *param_1 = &PTR_FUN_00439670;
  param_1[0x20] = &PTR_FUN_00439698;
                    /* try { // try from 0030467f to 00304683 has its CatchHandler @ 00304699 */
  FUN_00303450(param_1 + 2,param_2 + 2);
  param_1[0x3d] = param_1 + 2;
  return;
}

