
/* std::filebuf::close() */

filebuf * __thiscall std::filebuf::close(filebuf *this)

{
  undefined4 uVar1;
  char cVar2;
  int iVar3;
  
  __x86_get_pc_thunk_di();
  cVar2 = __basic_file<char>::is_open((__basic_file<char> *)(this + 0x38));
  if (cVar2 != '\0') {
                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */
    cVar2 = _M_terminate_output(this);
    *(undefined4 *)(this + 0x40) = 0;
    this[0x70] = (filebuf)0x0;
    _M_destroy_internal_buffer(this);
    *(undefined2 *)(this + 0x65) = 0;
    uVar1 = *(undefined4 *)(this + 0x5c);
    *(undefined4 *)(this + 0x14) = 0;
    *(undefined4 *)(this + 0x50) = *(undefined4 *)(this + 0x48);
    *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x48);
    *(undefined4 *)(this + 4) = uVar1;
    *(undefined4 *)(this + 8) = uVar1;
    *(undefined4 *)(this + 0xc) = uVar1;
    *(undefined4 *)(this + 0x10) = 0;
    *(undefined4 *)(this + 0x18) = 0;
    *(undefined4 *)(this + 0x4c) = *(undefined4 *)(this + 0x44);
    *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x44);
    iVar3 = __basic_file<char>::close((__basic_file<char> *)(this + 0x38));
    if ((iVar3 != 0) && (cVar2 == '\x01')) {
      return this;
    }
  }
  return (filebuf *)0x0;
}



int FUN_00216e90(int param_1)

{
  undefined4 uVar1;
  char cVar2;
  int iVar3;
  
  FUN_000559ee();
  cVar2 = FUN_001e73e0(param_1 + 0x38);
  if (cVar2 != '\0') {
                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */
    cVar2 = FUN_00213e00(param_1);
    *(undefined4 *)(param_1 + 0x40) = 0;
    *(undefined1 *)(param_1 + 0x70) = 0;
    FUN_00213bc0(param_1);
    *(undefined2 *)(param_1 + 0x65) = 0;
    uVar1 = *(undefined4 *)(param_1 + 0x5c);
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);
    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);
    *(undefined4 *)(param_1 + 4) = uVar1;
    *(undefined4 *)(param_1 + 8) = uVar1;
    *(undefined4 *)(param_1 + 0xc) = uVar1;
    *(undefined4 *)(param_1 + 0x10) = 0;
    *(undefined4 *)(param_1 + 0x18) = 0;
    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);
    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);
    iVar3 = FUN_001e7580(param_1 + 0x38);
    if ((iVar3 != 0) && (cVar2 == '\x01')) {
      return param_1;
    }
  }
  return 0;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x000559ee
ADD EDI,0x178167
PUSH ESI
PUSH EBX
SUB ESP,0x38
MOV EAX,dword ptr [EBP + 0x8]
ADD EAX,0x38
MOV EBX,EDI
PUSH EAX
MOV dword ptr [EBP + -0x2c],EAX
CALL 0x001e73e0
ADD ESP,0x10
MOV ESI,EAX
TEST AL,AL
JZ 0x00216f58
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
PUSH EAX
MOV dword ptr [EBP + -0x1c],EAX
CALL 0x00213e00
XOR EAX,0x1
ADD ESP,0x10
MOV ESI,EAX
MOV EAX,dword ptr [EBP + -0x1c]
SUB ESP,0xc
MOV EBX,EDI
MOV dword ptr [EAX + 0x40],0x0
MOV byte ptr [EAX + 0x70],0x0
PUSH EAX
CALL 0x00213bc0
MOV EAX,dword ptr [EBP + -0x1c]
XOR EDX,EDX
MOV ECX,dword ptr [EAX + 0x44]
MOV EBX,dword ptr [EAX + 0x48]
MOV word ptr [EAX + 0x65],DX
MOV EDX,dword ptr [EAX + 0x5c]
MOV dword ptr [EAX + 0x14],0x0
MOV dword ptr [EAX + 0x50],EBX
MOV dword ptr [EAX + 0x58],EBX
MOV EBX,EDI
MOV dword ptr [EAX + 0x4],EDX
MOV dword ptr [EAX + 0x8],EDX
MOV dword ptr [EAX + 0xc],EDX
MOV dword ptr [EAX + 0x10],0x0
MOV dword ptr [EAX + 0x18],0x0
MOV dword ptr [EAX + 0x4c],ECX
MOV dword ptr [EAX + 0x54],ECX
POP ECX
PUSH dword ptr [EBP + -0x2c]
CALL 0x001e7580
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00216f58
MOV ECX,ESI
MOV EAX,dword ptr [EBP + 0x8]
TEST CL,CL
JNZ 0x00216f58
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA ESP,[EBP + -0xc]
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "int FUN_00216e90(int param_1)\n\n{\n  undefined4 uVar1;\n  char cVar2;\n  int iVar3;\n  \n  FUN_000559ee();\n  cVar2 = FUN_001e73e0(param_1 + 0x38);\n  if (cVar2 != '\0') {\n                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */\n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int FUN_00216e90(int param_1)\n\n{\n  undefined4 uVar1;\n  char cVar2;\n  int iVar3;\n  \n  FUN_000559ee();\n  cVar2 = FUN_001e73e0(param_1 + 0x38);\n  if (cVar2 != '\0') {\n                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */\n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }\n  return 0;\n}" primitive_type (function_declarator "FUN_00216e90(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  char cVar2;\n  int iVar3;\n  \n  FUN_000559ee();\n  cVar2 = FUN_001e73e0(param_1 + 0x38);\n  if (cVar2 != '\0') {\n                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */\n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }\n  return 0;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "FUN_000559ee();" (call_expression "FUN_000559ee()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar2 = FUN_001e73e0(param_1 + 0x38);" (assignment_expression "cVar2 = FUN_001e73e0(param_1 + 0x38)" identifier = (call_expression "FUN_001e73e0(param_1 + 0x38)" identifier (argument_list "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ;) (if_statement "if (cVar2 != '\0') {\n                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */\n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */\n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }" { comment (expression_statement "cVar2 = FUN_00213e00(param_1);" (assignment_expression "cVar2 = FUN_00213e00(param_1)" identifier = (call_expression "FUN_00213e00(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x40) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x40) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x40)" * (cast_expression "(undefined4 *)(param_1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0x70) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x70) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x70)" * (cast_expression "(undefined1 *)(param_1 + 0x70)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00213bc0(param_1);" (call_expression "FUN_00213bc0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(undefined2 *)(param_1 + 0x65) = 0;" (assignment_expression "*(undefined2 *)(param_1 + 0x65) = 0" (pointer_expression "*(undefined2 *)(param_1 + 0x65)" * (cast_expression "(undefined2 *)(param_1 + 0x65)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x65)" ( (binary_expression "param_1 + 0x65" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar1 = *(undefined4 *)(param_1 + 0x5c);" (assignment_expression "uVar1 = *(undefined4 *)(param_1 + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x5c)" * (cast_expression "(undefined4 *)(param_1 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48)" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);" (assignment_expression "*(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48)" (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = uVar1;" (assignment_expression "*(undefined4 *)(param_1 + 4) = uVar1" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 8) = uVar1;" (assignment_expression "*(undefined4 *)(param_1 + 8) = uVar1" (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0xc) = uVar1;" (assignment_expression "*(undefined4 *)(param_1 + 0xc) = uVar1" (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44)" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);" (assignment_expression "*(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44)" (pointer_expression "*(undefined4 *)(param_1 + 0x54)" * (cast_expression "(undefined4 *)(param_1 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = FUN_001e7580(param_1 + 0x38);" (assignment_expression "iVar3 = FUN_001e7580(param_1 + 0x38)" identifier = (call_expression "FUN_001e7580(param_1 + 0x38)" identifier (argument_list "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ;) (if_statement "if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }" if (parenthesized_expression "((iVar3 != 0) && (cVar2 == '\x01'))" ( (binary_expression "(iVar3 != 0) && (cVar2 == '\x01')" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(cVar2 == '\x01')" ( (binary_expression "cVar2 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) ))) )) (compound_statement "{\n      return param_1;\n    }" { (return_statement "return param_1;" return identifier ;) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* std::filebuf::close() */\n\nfilebuf * __thiscall std::filebuf::close(filebuf *this)\n\n{\n  undefined4 uVar1;\n  char cVar2;\n  int iVar3;\n  \n  __x86_get_pc_thunk_di();\n  cVar2 = __basic_file<char>::is_open((__basic_file<char> *)(this + 0x38));\n  if (cVar2 != '\0') {\n                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */\n    cVar2 = _M_terminate_output(this);\n    *(undefined4 *)(this + 0x40) = 0;\n    this[0x70] = (filebuf)0x0;\n    _M_destroy_internal_buffer(this);\n    *(undefined2 *)(this + 0x65) = 0;\n    uVar1 = *(undefined4 *)(this + 0x5c);\n    *(undefined4 *)(this + 0x14) = 0;\n    *(undefined4 *)(this + 0x50) = *(undefined4 *)(this + 0x48);\n    *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x48);\n    *(undefined4 *)(this + 4) = uVar1;\n    *(undefined4 *)(this + 8) = uVar1;\n    *(undefined4 *)(this + 0xc) = uVar1;\n    *(undefined4 *)(this + 0x10) = 0;\n    *(undefined4 *)(this + 0x18) = 0;\n    *(undefined4 *)(this + 0x4c) = *(undefined4 *)(this + 0x44);\n    *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x44);\n    iVar3 = __basic_file<char>::close((__basic_file<char> *)(this + 0x38));\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return this;\n    }\n  }\n  return (filebuf *)0x0;\n}\n\n" comment (ERROR "filebuf * __thiscall std::filebuf::close(filebuf *this)" (binary_expression "filebuf * __thiscall std::filebuf::close(filebuf *this" (binary_expression "filebuf * __thiscall" identifier * identifier) (ERROR "std::filebuf::close(filebuf" identifier : : identifier : : identifier ( identifier) * identifier) )) (compound_statement "{\n  undefined4 uVar1;\n  char cVar2;\n  int iVar3;\n  \n  __x86_get_pc_thunk_di();\n  cVar2 = __basic_file<char>::is_open((__basic_file<char> *)(this + 0x38));\n  if (cVar2 != '\0') {\n                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */\n    cVar2 = _M_terminate_output(this);\n    *(undefined4 *)(this + 0x40) = 0;\n    this[0x70] = (filebuf)0x0;\n    _M_destroy_internal_buffer(this);\n    *(undefined2 *)(this + 0x65) = 0;\n    uVar1 = *(undefined4 *)(this + 0x5c);\n    *(undefined4 *)(this + 0x14) = 0;\n    *(undefined4 *)(this + 0x50) = *(undefined4 *)(this + 0x48);\n    *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x48);\n    *(undefined4 *)(this + 4) = uVar1;\n    *(undefined4 *)(this + 8) = uVar1;\n    *(undefined4 *)(this + 0xc) = uVar1;\n    *(undefined4 *)(this + 0x10) = 0;\n    *(undefined4 *)(this + 0x18) = 0;\n    *(undefined4 *)(this + 0x4c) = *(undefined4 *)(this + 0x44);\n    *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x44);\n    iVar3 = __basic_file<char>::close((__basic_file<char> *)(this + 0x38));\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return this;\n    }\n  }\n  return (filebuf *)0x0;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar2 = __basic_file<char>::is_open((__basic_file<char> *)(this + 0x38));" (assignment_expression "cVar2 = __basic_file<char>::is_open((__basic_file<char> *)(this + 0x38))" identifier = (binary_expression "__basic_file<char>::is_open((__basic_file<char> *)(this + 0x38))" (binary_expression "__basic_file<char" identifier < identifier) > (ERROR "::" : :) (call_expression "is_open((__basic_file<char> *)(this + 0x38))" identifier (argument_list "((__basic_file<char> *)(this + 0x38))" ( (call_expression "(__basic_file<char> *)(this + 0x38)" (parenthesized_expression "(__basic_file<char> *)" ( (binary_expression "__basic_file<char> *" (binary_expression "__basic_file<char" identifier < identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(this + 0x38)" ( (binary_expression "this + 0x38" identifier + number_literal) ))) ))))) ;) (if_statement "if (cVar2 != '\0') {\n                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */\n    cVar2 = _M_terminate_output(this);\n    *(undefined4 *)(this + 0x40) = 0;\n    this[0x70] = (filebuf)0x0;\n    _M_destroy_internal_buffer(this);\n    *(undefined2 *)(this + 0x65) = 0;\n    uVar1 = *(undefined4 *)(this + 0x5c);\n    *(undefined4 *)(this + 0x14) = 0;\n    *(undefined4 *)(this + 0x50) = *(undefined4 *)(this + 0x48);\n    *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x48);\n    *(undefined4 *)(this + 4) = uVar1;\n    *(undefined4 *)(this + 8) = uVar1;\n    *(undefined4 *)(this + 0xc) = uVar1;\n    *(undefined4 *)(this + 0x10) = 0;\n    *(undefined4 *)(this + 0x18) = 0;\n    *(undefined4 *)(this + 0x4c) = *(undefined4 *)(this + 0x44);\n    *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x44);\n    iVar3 = __basic_file<char>::close((__basic_file<char> *)(this + 0x38));\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return this;\n    }\n  }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */\n    cVar2 = _M_terminate_output(this);\n    *(undefined4 *)(this + 0x40) = 0;\n    this[0x70] = (filebuf)0x0;\n    _M_destroy_internal_buffer(this);\n    *(undefined2 *)(this + 0x65) = 0;\n    uVar1 = *(undefined4 *)(this + 0x5c);\n    *(undefined4 *)(this + 0x14) = 0;\n    *(undefined4 *)(this + 0x50) = *(undefined4 *)(this + 0x48);\n    *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x48);\n    *(undefined4 *)(this + 4) = uVar1;\n    *(undefined4 *)(this + 8) = uVar1;\n    *(undefined4 *)(this + 0xc) = uVar1;\n    *(undefined4 *)(this + 0x10) = 0;\n    *(undefined4 *)(this + 0x18) = 0;\n    *(undefined4 *)(this + 0x4c) = *(undefined4 *)(this + 0x44);\n    *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x44);\n    iVar3 = __basic_file<char>::close((__basic_file<char> *)(this + 0x38));\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return this;\n    }\n  }" { comment (expression_statement "cVar2 = _M_terminate_output(this);" (assignment_expression "cVar2 = _M_terminate_output(this)" identifier = (call_expression "_M_terminate_output(this)" identifier (argument_list "(this)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(this + 0x40) = 0;" (assignment_expression "*(undefined4 *)(this + 0x40) = 0" (pointer_expression "*(undefined4 *)(this + 0x40)" * (cast_expression "(undefined4 *)(this + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x40)" ( (binary_expression "this + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x70] = (filebuf)0x0;" (assignment_expression "this[0x70] = (filebuf)0x0" (subscript_expression "this[0x70]" identifier [ number_literal ]) = (cast_expression "(filebuf)0x0" ( (type_descriptor "filebuf" type_identifier) ) number_literal)) ;) (expression_statement "_M_destroy_internal_buffer(this);" (call_expression "_M_destroy_internal_buffer(this)" identifier (argument_list "(this)" ( identifier ))) ;) (expression_statement "*(undefined2 *)(this + 0x65) = 0;" (assignment_expression "*(undefined2 *)(this + 0x65) = 0" (pointer_expression "*(undefined2 *)(this + 0x65)" * (cast_expression "(undefined2 *)(this + 0x65)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x65)" ( (binary_expression "this + 0x65" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar1 = *(undefined4 *)(this + 0x5c);" (assignment_expression "uVar1 = *(undefined4 *)(this + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(this + 0x5c)" * (cast_expression "(undefined4 *)(this + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(this + 0x14) = 0;" (assignment_expression "*(undefined4 *)(this + 0x14) = 0" (pointer_expression "*(undefined4 *)(this + 0x14)" * (cast_expression "(undefined4 *)(this + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x50) = *(undefined4 *)(this + 0x48);" (assignment_expression "*(undefined4 *)(this + 0x50) = *(undefined4 *)(this + 0x48)" (pointer_expression "*(undefined4 *)(this + 0x50)" * (cast_expression "(undefined4 *)(this + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x50)" ( (binary_expression "this + 0x50" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(this + 0x48)" * (cast_expression "(undefined4 *)(this + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x48)" ( (binary_expression "this + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x48);" (assignment_expression "*(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x48)" (pointer_expression "*(undefined4 *)(this + 0x58)" * (cast_expression "(undefined4 *)(this + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x58)" ( (binary_expression "this + 0x58" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(this + 0x48)" * (cast_expression "(undefined4 *)(this + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x48)" ( (binary_expression "this + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(this + 4) = uVar1;" (assignment_expression "*(undefined4 *)(this + 4) = uVar1" (pointer_expression "*(undefined4 *)(this + 4)" * (cast_expression "(undefined4 *)(this + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 8) = uVar1;" (assignment_expression "*(undefined4 *)(this + 8) = uVar1" (pointer_expression "*(undefined4 *)(this + 8)" * (cast_expression "(undefined4 *)(this + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 0xc) = uVar1;" (assignment_expression "*(undefined4 *)(this + 0xc) = uVar1" (pointer_expression "*(undefined4 *)(this + 0xc)" * (cast_expression "(undefined4 *)(this + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 0x10) = 0;" (assignment_expression "*(undefined4 *)(this + 0x10) = 0" (pointer_expression "*(undefined4 *)(this + 0x10)" * (cast_expression "(undefined4 *)(this + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x18) = 0;" (assignment_expression "*(undefined4 *)(this + 0x18) = 0" (pointer_expression "*(undefined4 *)(this + 0x18)" * (cast_expression "(undefined4 *)(this + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x4c) = *(undefined4 *)(this + 0x44);" (assignment_expression "*(undefined4 *)(this + 0x4c) = *(undefined4 *)(this + 0x44)" (pointer_expression "*(undefined4 *)(this + 0x4c)" * (cast_expression "(undefined4 *)(this + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x4c)" ( (binary_expression "this + 0x4c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(this + 0x44)" * (cast_expression "(undefined4 *)(this + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x44)" ( (binary_expression "this + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x44);" (assignment_expression "*(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x44)" (pointer_expression "*(undefined4 *)(this + 0x54)" * (cast_expression "(undefined4 *)(this + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x54)" ( (binary_expression "this + 0x54" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(this + 0x44)" * (cast_expression "(undefined4 *)(this + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x44)" ( (binary_expression "this + 0x44" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = __basic_file<char>::close((__basic_file<char> *)(this + 0x38));" (assignment_expression "iVar3 = __basic_file<char>::close((__basic_file<char> *)(this + 0x38))" identifier = (binary_expression "__basic_file<char>::close((__basic_file<char> *)(this + 0x38))" (binary_expression "__basic_file<char" identifier < identifier) > (ERROR "::" : :) (call_expression "close((__basic_file<char> *)(this + 0x38))" identifier (argument_list "((__basic_file<char> *)(this + 0x38))" ( (call_expression "(__basic_file<char> *)(this + 0x38)" (parenthesized_expression "(__basic_file<char> *)" ( (binary_expression "__basic_file<char> *" (binary_expression "__basic_file<char" identifier < identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(this + 0x38)" ( (binary_expression "this + 0x38" identifier + number_literal) ))) ))))) ;) (if_statement "if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return this;\n    }" if (parenthesized_expression "((iVar3 != 0) && (cVar2 == '\x01'))" ( (binary_expression "(iVar3 != 0) && (cVar2 == '\x01')" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(cVar2 == '\x01')" ( (binary_expression "cVar2 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) ))) )) (compound_statement "{\n      return this;\n    }" { (return_statement "return this;" return identifier ;) })) })) (return_statement "return (filebuf *)0x0;" return (cast_expression "(filebuf *)0x0" ( (type_descriptor "filebuf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))
(translation_unit "int FUN_00216e90(int param_1)\n\n{\n  undefined4 uVar1;\n  char cVar2;\n  int iVar3;\n  \n  FUN_000559ee();\n  cVar2 = FUN_001e73e0(param_1 + 0x38);\n  if (cVar2 != '\0') {\n                    \n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int FUN_00216e90(int param_1)\n\n{\n  undefined4 uVar1;\n  char cVar2;\n  int iVar3;\n  \n  FUN_000559ee();\n  cVar2 = FUN_001e73e0(param_1 + 0x38);\n  if (cVar2 != '\0') {\n                    \n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }\n  return 0;\n}" primitive_type (function_declarator "FUN_00216e90(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  char cVar2;\n  int iVar3;\n  \n  FUN_000559ee();\n  cVar2 = FUN_001e73e0(param_1 + 0x38);\n  if (cVar2 != '\0') {\n                    \n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }\n  return 0;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "FUN_000559ee();" (call_expression "FUN_000559ee()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar2 = FUN_001e73e0(param_1 + 0x38);" (assignment_expression "cVar2 = FUN_001e73e0(param_1 + 0x38)" identifier = (call_expression "FUN_001e73e0(param_1 + 0x38)" identifier (argument_list "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ;) (if_statement "if (cVar2 != '\0') {\n                    \n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }" { (expression_statement "cVar2 = FUN_00213e00(param_1);" (assignment_expression "cVar2 = FUN_00213e00(param_1)" identifier = (call_expression "FUN_00213e00(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x40) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x40) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x40)" * (cast_expression "(undefined4 *)(param_1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0x70) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x70) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x70)" * (cast_expression "(undefined1 *)(param_1 + 0x70)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00213bc0(param_1);" (call_expression "FUN_00213bc0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(undefined2 *)(param_1 + 0x65) = 0;" (assignment_expression "*(undefined2 *)(param_1 + 0x65) = 0" (pointer_expression "*(undefined2 *)(param_1 + 0x65)" * (cast_expression "(undefined2 *)(param_1 + 0x65)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x65)" ( (binary_expression "param_1 + 0x65" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar1 = *(undefined4 *)(param_1 + 0x5c);" (assignment_expression "uVar1 = *(undefined4 *)(param_1 + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x5c)" * (cast_expression "(undefined4 *)(param_1 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48)" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);" (assignment_expression "*(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48)" (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = uVar1;" (assignment_expression "*(undefined4 *)(param_1 + 4) = uVar1" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 8) = uVar1;" (assignment_expression "*(undefined4 *)(param_1 + 8) = uVar1" (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0xc) = uVar1;" (assignment_expression "*(undefined4 *)(param_1 + 0xc) = uVar1" (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44)" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);" (assignment_expression "*(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44)" (pointer_expression "*(undefined4 *)(param_1 + 0x54)" * (cast_expression "(undefined4 *)(param_1 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = FUN_001e7580(param_1 + 0x38);" (assignment_expression "iVar3 = FUN_001e7580(param_1 + 0x38)" identifier = (call_expression "FUN_001e7580(param_1 + 0x38)" identifier (argument_list "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ;) (if_statement "if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }" if (parenthesized_expression "((iVar3 != 0) && (cVar2 == '\x01'))" ( (binary_expression "(iVar3 != 0) && (cVar2 == '\x01')" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(cVar2 == '\x01')" ( (binary_expression "cVar2 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) ))) )) (compound_statement "{\n      return param_1;\n    }" { (return_statement "return param_1;" return identifier ;) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( 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 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) )))) = (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) )))) = (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) )))) = IDENT) ;) (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) )))) = 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 (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) )))) = (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (return_statement return IDENT ;) })) })) (return_statement return LIT ;) })))
(function_definition "int FUN_00216e90(int param_1)\n\n{\n  undefined4 uVar1;\n  char cVar2;\n  int iVar3;\n  \n  FUN_000559ee();\n  cVar2 = FUN_001e73e0(param_1 + 0x38);\n  if (cVar2 != '\0') {\n                    \n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }\n  return 0;\n}" (primitive_type "int") (function_declarator "FUN_00216e90(int param_1)" (identifier "FUN_00216e90") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  char cVar2;\n  int iVar3;\n  \n  FUN_000559ee();\n  cVar2 = FUN_001e73e0(param_1 + 0x38);\n  if (cVar2 != '\0') {\n                    \n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (expression_statement "FUN_000559ee();" (call_expression "FUN_000559ee()" (identifier "FUN_000559ee") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "cVar2 = FUN_001e73e0(param_1 + 0x38);" (assignment_expression "cVar2 = FUN_001e73e0(param_1 + 0x38)" (identifier "cVar2") (= "=") (call_expression "FUN_001e73e0(param_1 + 0x38)" (identifier "FUN_001e73e0") (argument_list "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (; ";")) (if_statement "if (cVar2 != '\0') {\n                    \n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }" (if "if") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n    cVar2 = FUN_00213e00(param_1);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    *(undefined1 *)(param_1 + 0x70) = 0;\n    FUN_00213bc0(param_1);\n    *(undefined2 *)(param_1 + 0x65) = 0;\n    uVar1 = *(undefined4 *)(param_1 + 0x5c);\n    *(undefined4 *)(param_1 + 0x14) = 0;\n    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);\n    *(undefined4 *)(param_1 + 4) = uVar1;\n    *(undefined4 *)(param_1 + 8) = uVar1;\n    *(undefined4 *)(param_1 + 0xc) = uVar1;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(undefined4 *)(param_1 + 0x18) = 0;\n    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);\n    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);\n    iVar3 = FUN_001e7580(param_1 + 0x38);\n    if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }\n  }" ({ "{") (expression_statement "cVar2 = FUN_00213e00(param_1);" (assignment_expression "cVar2 = FUN_00213e00(param_1)" (identifier "cVar2") (= "=") (call_expression "FUN_00213e00(param_1)" (identifier "FUN_00213e00") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x40) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x40) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x40)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x70) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x70) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x70)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x70)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00213bc0(param_1);" (call_expression "FUN_00213bc0(param_1)" (identifier "FUN_00213bc0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "*(undefined2 *)(param_1 + 0x65) = 0;" (assignment_expression "*(undefined2 *)(param_1 + 0x65) = 0" (pointer_expression "*(undefined2 *)(param_1 + 0x65)" (* "*") (cast_expression "(undefined2 *)(param_1 + 0x65)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x65)" (( "(") (binary_expression "param_1 + 0x65" (identifier "param_1") (+ "+") (number_literal "0x65")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar1 = *(undefined4 *)(param_1 + 0x5c);" (assignment_expression "uVar1 = *(undefined4 *)(param_1 + 0x5c)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x5c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48)" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x48)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);" (assignment_expression "*(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48)" (pointer_expression "*(undefined4 *)(param_1 + 0x58)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x48)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 4) = uVar1;" (assignment_expression "*(undefined4 *)(param_1 + 4) = uVar1" (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 8) = uVar1;" (assignment_expression "*(undefined4 *)(param_1 + 8) = uVar1" (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xc) = uVar1;" (assignment_expression "*(undefined4 *)(param_1 + 0xc) = uVar1" (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44)" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);" (assignment_expression "*(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44)" (pointer_expression "*(undefined4 *)(param_1 + 0x54)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001e7580(param_1 + 0x38);" (assignment_expression "iVar3 = FUN_001e7580(param_1 + 0x38)" (identifier "iVar3") (= "=") (call_expression "FUN_001e7580(param_1 + 0x38)" (identifier "FUN_001e7580") (argument_list "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (; ";")) (if_statement "if ((iVar3 != 0) && (cVar2 == '\x01')) {\n      return param_1;\n    }" (if "if") (parenthesized_expression "((iVar3 != 0) && (cVar2 == '\x01'))" (( "(") (binary_expression "(iVar3 != 0) && (cVar2 == '\x01')" (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(cVar2 == '\x01')" (( "(") (binary_expression "cVar2 == '\x01'" (identifier "cVar2") (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      return param_1;\n    }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* std::filebuf::close() */

type_2 * __thiscall std::type_2::var_9(type_2 *var_5)

{
  type_1 uVar1;
  char var_6;
  int var_10;
  
  var_1();
  var_6 = var_2<var_3>::var_4((var_2<var_3> *)(var_5 + 0x38));
  if (var_6 != '\0') {
                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */
    var_6 = var_7(var_5);
    *(type_1 *)(var_5 + 0x40) = 0;
    var_5[0x70] = (type_2)0x0;
    var_8(var_5);
    *(type_3 *)(var_5 + 0x65) = 0;
    uVar1 = *(type_1 *)(var_5 + 0x5c);
    *(type_1 *)(var_5 + 0x14) = 0;
    *(type_1 *)(var_5 + 0x50) = *(type_1 *)(var_5 + 0x48);
    *(type_1 *)(var_5 + 0x58) = *(type_1 *)(var_5 + 0x48);
    *(type_1 *)(var_5 + 4) = uVar1;
    *(type_1 *)(var_5 + 8) = uVar1;
    *(type_1 *)(var_5 + 0xc) = uVar1;
    *(type_1 *)(var_5 + 0x10) = 0;
    *(type_1 *)(var_5 + 0x18) = 0;
    *(type_1 *)(var_5 + 0x4c) = *(type_1 *)(var_5 + 0x44);
    *(type_1 *)(var_5 + 0x54) = *(type_1 *)(var_5 + 0x44);
    var_10 = var_2<var_3>::var_9((var_2<var_3> *)(var_5 + 0x38));
    if ((var_10 != 0) && (var_6 == '\x01')) {
      return var_5;
    }
  }
  return (type_2 *)0x0;
}


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

int MASKED(int param_1)

{
  undefined4 uVar1;
  char cVar2;
  int iVar3;
  
  FUN_000559ee();
  cVar2 = FUN_001e73e0(param_1 + 0x38);
  if (cVar2 != '\0') {
                    /* try { // try from 00216ecc to 00216ed0 has its CatchHandler @ 00216f62 */
    cVar2 = FUN_00213e00(param_1);
    *(undefined4 *)(param_1 + 0x40) = 0;
    *(undefined1 *)(param_1 + 0x70) = 0;
    FUN_00213bc0(param_1);
    *(undefined2 *)(param_1 + 0x65) = 0;
    uVar1 = *(undefined4 *)(param_1 + 0x5c);
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1 + 0x48);
    *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x48);
    *(undefined4 *)(param_1 + 4) = uVar1;
    *(undefined4 *)(param_1 + 8) = uVar1;
    *(undefined4 *)(param_1 + 0xc) = uVar1;
    *(undefined4 *)(param_1 + 0x10) = 0;
    *(undefined4 *)(param_1 + 0x18) = 0;
    *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1 + 0x44);
    *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_1 + 0x44);
    iVar3 = FUN_001e7580(param_1 + 0x38);
    if ((iVar3 != 0) && (cVar2 == '\x01')) {
      return param_1;
    }
  }
  return 0;
}

