
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void Output_data_got(Output_data_got<64,_true> * this, off_t data_size)
    */

void __thiscall
gold::Output_data_got<64,_true>::Output_data_got(Output_data_got<64,_true> *this,off_t data_size)

{
  Free_list *this_00;
  byte bVar1;
  long lVar2;
  
  this_00 = &this->free_list_;
  bVar1 = (this->super_Output_data_got_base).super_Output_section_data_build.
          super_Output_section_data.super_Output_data.field_0x20;
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  super_Output_data.data_size_ = data_size;
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  super_Output_data.address_ = 0;
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  output_section_ = (Output_section *)0x0;
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  addralign_ = 8;
  lVar2 = data_size + 7;
  if (-1 < data_size) {
    lVar2 = data_size;
  }
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  super_Output_data.field_0x20 = bVar1 & 0xe0 | 2;
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  super_Output_data.offset_ = -1;
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  super_Output_data._vptr_Output_data = (_func_int_varargs **)&PTR__Output_data_got_00662e18;
  (this->entries_).
  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>
  ._M_impl._M_start = (pointer)0x0;
  (this->entries_).
  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>
  ._M_impl._M_finish = (pointer)0x0;
  (this->entries_).
  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>
  ._M_impl._M_end_of_storage = (pointer)0x0;
  (this->free_list_).list_.
  super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>
  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)this_00;
  (this->free_list_).list_.
  super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>
  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)this_00;
  (this->free_list_).list_.
  super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>
  ._M_impl._M_node._M_size = 0;
  (this->free_list_).last_remove_._M_node = (_List_node_base *)this_00;
  (this->free_list_).extend_ = false;
  (this->free_list_).length_ = 0;
  (this->free_list_).min_hole_ = 0;
  if (lVar2 >> 3 != 0) {
    std::
    vector<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>
    ::_M_default_append(&this->entries_,lVar2 >> 3);
  }
                    /* try { // try from 003e582b to 003e5848 has its CatchHandler @ 003e584b */
  Free_list::init(this_00,(EVP_PKEY_CTX *)data_size);
  return;
}



void FUN_003e5780(undefined8 *param_1,long param_2)

{
  undefined8 *puVar1;
  long lVar2;
  
  puVar1 = param_1 + 10;
  param_1[2] = param_2;
  param_1[1] = 0;
  param_1[5] = 0;
  param_1[6] = 8;
  lVar2 = param_2 + 7;
  if (-1 < param_2) {
    lVar2 = param_2;
  }
  *(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;
  param_1[3] = 0xffffffffffffffff;
  *param_1 = &PTR_FUN_00662e18;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[0xb] = puVar1;
  param_1[10] = puVar1;
  param_1[0xc] = 0;
  param_1[0xd] = puVar1;
  *(undefined1 *)(param_1 + 0xe) = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  if (lVar2 >> 3 != 0) {
    FUN_0028c780(param_1 + 7);
  }
                    /* try { // try from 003e582b to 003e5848 has its CatchHandler @ 003e584b */
  FUN_0037a860(puVar1,param_2,0);
  return;
}


PUSH R13
PUSH R12
LEA R12,[RDI + 0x50]
PUSH RBP
MOV RBP,RSI
PUSH RBX
MOV RBX,RDI
SUB RSP,0x8
MOVZX EAX,byte ptr [RDI + 0x20]
MOV qword ptr [RDI + 0x10],RSI
ADD RSI,0x7
MOV qword ptr [RDI + 0x8],0x0
AND EAX,0xffffffe0
MOV qword ptr [RDI + 0x28],0x0
OR EAX,0x2
TEST RBP,RBP
MOV qword ptr [RDI + 0x30],0x8
CMOVNS RSI,RBP
MOV byte ptr [RDI + 0x20],AL
LEA RAX,[0x662e18]
MOV qword ptr [RDI + 0x18],-0x1
SAR RSI,0x3
MOV qword ptr [RDI],RAX
MOV qword ptr [RDI + 0x38],0x0
MOV qword ptr [RDI + 0x40],0x0
MOV qword ptr [RDI + 0x48],0x0
MOV qword ptr [RDI + 0x58],R12
MOV qword ptr [RDI + 0x50],R12
MOV qword ptr [RDI + 0x60],0x0
MOV qword ptr [RDI + 0x68],R12
MOV byte ptr [RDI + 0x70],0x0
MOV qword ptr [RDI + 0x78],0x0
MOV qword ptr [RDI + 0x80],0x0
JNZ 0x003e5840
XOR EDX,EDX
MOV RSI,RBP
MOV RDI,R12
CALL 0x0037a860
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
LEA RDI,[RDI + 0x38]
CALL 0x0028c780
JMP 0x003e5823
(translation_unit "void FUN_003e5780(undefined8 *param_1,long param_2)\n\n{\n  undefined8 *puVar1;\n  long lVar2;\n  \n  puVar1 = param_1 + 10;\n  param_1[2] = param_2;\n  param_1[1] = 0;\n  param_1[5] = 0;\n  param_1[6] = 8;\n  lVar2 = param_2 + 7;\n  if (-1 < param_2) {\n    lVar2 = param_2;\n  }\n  *(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;\n  param_1[3] = 0xffffffffffffffff;\n  *param_1 = &PTR_FUN_00662e18;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[0xb] = puVar1;\n  param_1[10] = puVar1;\n  param_1[0xc] = 0;\n  param_1[0xd] = puVar1;\n  *(undefined1 *)(param_1 + 0xe) = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  if (lVar2 >> 3 != 0) {\n    FUN_0028c780(param_1 + 7);\n  }\n                    /* try { // try from 003e582b to 003e5848 has its CatchHandler @ 003e584b */\n  FUN_0037a860(puVar1,param_2,0);\n  return;\n}\n\n" (function_definition "void FUN_003e5780(undefined8 *param_1,long param_2)\n\n{\n  undefined8 *puVar1;\n  long lVar2;\n  \n  puVar1 = param_1 + 10;\n  param_1[2] = param_2;\n  param_1[1] = 0;\n  param_1[5] = 0;\n  param_1[6] = 8;\n  lVar2 = param_2 + 7;\n  if (-1 < param_2) {\n    lVar2 = param_2;\n  }\n  *(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;\n  param_1[3] = 0xffffffffffffffff;\n  *param_1 = &PTR_FUN_00662e18;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[0xb] = puVar1;\n  param_1[10] = puVar1;\n  param_1[0xc] = 0;\n  param_1[0xd] = puVar1;\n  *(undefined1 *)(param_1 + 0xe) = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  if (lVar2 >> 3 != 0) {\n    FUN_0028c780(param_1 + 7);\n  }\n                    /* try { // try from 003e582b to 003e5848 has its CatchHandler @ 003e584b */\n  FUN_0037a860(puVar1,param_2,0);\n  return;\n}" primitive_type (function_declarator "FUN_003e5780(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) identifier) ))) (compound_statement "{\n  undefined8 *puVar1;\n  long lVar2;\n  \n  puVar1 = param_1 + 10;\n  param_1[2] = param_2;\n  param_1[1] = 0;\n  param_1[5] = 0;\n  param_1[6] = 8;\n  lVar2 = param_2 + 7;\n  if (-1 < param_2) {\n    lVar2 = param_2;\n  }\n  *(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;\n  param_1[3] = 0xffffffffffffffff;\n  *param_1 = &PTR_FUN_00662e18;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[0xb] = puVar1;\n  param_1[10] = puVar1;\n  param_1[0xc] = 0;\n  param_1[0xd] = puVar1;\n  *(undefined1 *)(param_1 + 0xe) = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  if (lVar2 >> 3 != 0) {\n    FUN_0028c780(param_1 + 7);\n  }\n                    /* try { // try from 003e582b to 003e5848 has its CatchHandler @ 003e584b */\n  FUN_0037a860(puVar1,param_2,0);\n  return;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (expression_statement "puVar1 = param_1 + 10;" (assignment_expression "puVar1 = param_1 + 10" identifier = (binary_expression "param_1 + 10" identifier + number_literal)) ;) (expression_statement "param_1[2] = param_2;" (assignment_expression "param_1[2] = param_2" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[6] = 8;" (assignment_expression "param_1[6] = 8" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar2 = param_2 + 7;" (assignment_expression "lVar2 = param_2 + 7" identifier = (binary_expression "param_2 + 7" identifier + number_literal)) ;) (if_statement "if (-1 < param_2) {\n    lVar2 = param_2;\n  }" if (parenthesized_expression "(-1 < param_2)" ( (binary_expression "-1 < param_2" number_literal < identifier) )) (compound_statement "{\n    lVar2 = param_2;\n  }" { (expression_statement "lVar2 = param_2;" (assignment_expression "lVar2 = param_2" identifier = identifier) ;) })) (expression_statement "*(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;" (assignment_expression "*(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2" (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 4) & 0xe0 | 2" (binary_expression "*(byte *)(param_1 + 4) & 0xe0" (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "param_1[3] = 0xffffffffffffffff;" (assignment_expression "param_1[3] = 0xffffffffffffffff" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_1 = &PTR_FUN_00662e18;" (assignment_expression "*param_1 = &PTR_FUN_00662e18" (pointer_expression "*param_1" * identifier) = (pointer_expression "&PTR_FUN_00662e18" & identifier)) ;) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xb] = puVar1;" (assignment_expression "param_1[0xb] = puVar1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[10] = puVar1;" (assignment_expression "param_1[10] = puVar1" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xc] = 0;" (assignment_expression "param_1[0xc] = 0" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xd] = puVar1;" (assignment_expression "param_1[0xd] = puVar1" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0xe) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xe) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xe)" * (cast_expression "(undefined1 *)(param_1 + 0xe)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (lVar2 >> 3 != 0) {\n    FUN_0028c780(param_1 + 7);\n  }" if (parenthesized_expression "(lVar2 >> 3 != 0)" ( (binary_expression "lVar2 >> 3 != 0" (binary_expression "lVar2 >> 3" identifier >> number_literal) != number_literal) )) (compound_statement "{\n    FUN_0028c780(param_1 + 7);\n  }" { (expression_statement "FUN_0028c780(param_1 + 7);" (call_expression "FUN_0028c780(param_1 + 7)" identifier (argument_list "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) ))) ;) })) comment (expression_statement "FUN_0037a860(puVar1,param_2,0);" (call_expression "FUN_0037a860(puVar1,param_2,0)" identifier (argument_list "(puVar1,param_2,0)" ( identifier , identifier , number_literal ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: void Output_data_got(Output_data_got<64,_true> * this, off_t data_size)\n    */\n\nvoid __thiscall\ngold::Output_data_got<64,_true>::Output_data_got(Output_data_got<64,_true> *this,off_t data_size)\n\n{\n  Free_list *this_00;\n  byte bVar1;\n  long lVar2;\n  \n  this_00 = &this->free_list_;\n  bVar1 = (this->super_Output_data_got_base).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x20;\n  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.data_size_ = data_size;\n  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.address_ = 0;\n  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  output_section_ = (Output_section *)0x0;\n  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  addralign_ = 8;\n  lVar2 = data_size + 7;\n  if (-1 < data_size) {\n    lVar2 = data_size;\n  }\n  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.field_0x20 = bVar1 & 0xe0 | 2;\n  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.offset_ = -1;\n  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data._vptr_Output_data = (_func_int_varargs **)&PTR__Output_data_got_00662e18;\n  (this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl._M_start = (pointer)0x0;\n  (this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl._M_finish = (pointer)0x0;\n  (this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0;\n  (this->free_list_).list_.\n  super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)this_00;\n  (this->free_list_).list_.\n  super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)this_00;\n  (this->free_list_).list_.\n  super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n  ._M_impl._M_node._M_size = 0;\n  (this->free_list_).last_remove_._M_node = (_List_node_base *)this_00;\n  (this->free_list_).extend_ = false;\n  (this->free_list_).length_ = 0;\n  (this->free_list_).min_hole_ = 0;\n  if (lVar2 >> 3 != 0) {\n    std::\n    vector<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n    ::_M_default_append(&this->entries_,lVar2 >> 3);\n  }\n                    /* try { // try from 003e582b to 003e5848 has its CatchHandler @ 003e584b */\n  Free_list::init(this_00,(EVP_PKEY_CTX *)data_size);\n  return;\n}\n\n" comment comment (declaration "void __thiscall\ngold::Output_data_got<64,_true>::Output_data_got(Output_data_got<64,_true> *this,off_t data_size)\n\n{\n  Free_list *this_00;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::Output_data_got(Output_data_got<64,_true> *this,off_t data_size)\n\n{\n  Free_list" identifier > : : (function_declarator "Output_data_got(Output_data_got<64,_true> *this,off_t data_size)" identifier (parameter_list "(Output_data_got<64,_true> *this,off_t data_size)" ( (parameter_declaration "Output_data_got" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "off_t data_size" type_identifier identifier) ))) { identifier) (pointer_declarator "*this_00" * identifier) ;) (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (expression_statement "this_00 = &this->free_list_;" (assignment_expression "this_00 = &this->free_list_" identifier = (pointer_expression "&this->free_list_" & (field_expression "this->free_list_" identifier -> field_identifier))) ;) (expression_statement "bVar1 = (this->super_Output_data_got_base).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x20;" (assignment_expression "bVar1 = (this->super_Output_data_got_base).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x20" identifier = (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x20" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.\n          super_Output_section_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_data_got_base)" ( (field_expression "this->super_Output_data_got_base" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.data_size_ = data_size;" (assignment_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.data_size_ = data_size" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.data_size_" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_data_got_base)" ( (field_expression "this->super_Output_data_got_base" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.address_ = 0;" (assignment_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.address_ = 0" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.address_" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_data_got_base)" ( (field_expression "this->super_Output_data_got_base" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  output_section_ = (Output_section *)0x0;" (assignment_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  output_section_ = (Output_section *)0x0" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  output_section_" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_data_got_base)" ( (field_expression "this->super_Output_data_got_base" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  addralign_ = 8;" (assignment_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  addralign_ = 8" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  addralign_" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_data_got_base)" ( (field_expression "this->super_Output_data_got_base" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "lVar2 = data_size + 7;" (assignment_expression "lVar2 = data_size + 7" identifier = (binary_expression "data_size + 7" identifier + number_literal)) ;) (if_statement "if (-1 < data_size) {\n    lVar2 = data_size;\n  }" if (parenthesized_expression "(-1 < data_size)" ( (binary_expression "-1 < data_size" number_literal < identifier) )) (compound_statement "{\n    lVar2 = data_size;\n  }" { (expression_statement "lVar2 = data_size;" (assignment_expression "lVar2 = data_size" identifier = identifier) ;) })) (expression_statement "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.field_0x20 = bVar1 & 0xe0 | 2;" (assignment_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.field_0x20 = bVar1 & 0xe0 | 2" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.field_0x20" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_data_got_base)" ( (field_expression "this->super_Output_data_got_base" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (binary_expression "bVar1 & 0xe0 | 2" (binary_expression "bVar1 & 0xe0" identifier & number_literal) | number_literal)) ;) (expression_statement "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.offset_ = -1;" (assignment_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.offset_ = -1" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data.offset_" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_data_got_base)" ( (field_expression "this->super_Output_data_got_base" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data._vptr_Output_data = (_func_int_varargs **)&PTR__Output_data_got_00662e18;" (assignment_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data._vptr_Output_data = (_func_int_varargs **)&PTR__Output_data_got_00662e18" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data._vptr_Output_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.\n  super_Output_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data" (field_expression "(this->super_Output_data_got_base).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_data_got_base)" ( (field_expression "this->super_Output_data_got_base" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(_func_int_varargs **)&PTR__Output_data_got_00662e18" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Output_data_got_00662e18" & identifier))) ;) (expression_statement "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl._M_start = (pointer)0x0;" (assignment_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl._M_start = (pointer)0x0" (field_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl._M_start" (field_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64" (binary_expression "(this->entries_).\n  super__Vector_base<gold" (field_expression "(this->entries_).\n  super__Vector_base" (parenthesized_expression "(this->entries_)" ( (field_expression "this->entries_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_data_got" : : identifier) < number_literal) (ERROR ",_true" , identifier) > (ERROR "::" : :) identifier) (ERROR ",_std::allocator" , identifier : : identifier) < identifier) (ERROR "::Output_data_got" : : identifier) < number_literal) (ERROR ",_true" , identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl._M_finish = (pointer)0x0;" (assignment_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl._M_finish = (pointer)0x0" (field_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl._M_finish" (field_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64" (binary_expression "(this->entries_).\n  super__Vector_base<gold" (field_expression "(this->entries_).\n  super__Vector_base" (parenthesized_expression "(this->entries_)" ( (field_expression "this->entries_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_data_got" : : identifier) < number_literal) (ERROR ",_true" , identifier) > (ERROR "::" : :) identifier) (ERROR ",_std::allocator" , identifier : : identifier) < identifier) (ERROR "::Output_data_got" : : identifier) < number_literal) (ERROR ",_true" , identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0;" (assignment_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0" (field_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl._M_end_of_storage" (field_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n  ._M_impl" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64,_true>::Got_entry" (binary_expression "(this->entries_).\n  super__Vector_base<gold::Output_data_got<64" (binary_expression "(this->entries_).\n  super__Vector_base<gold" (field_expression "(this->entries_).\n  super__Vector_base" (parenthesized_expression "(this->entries_)" ( (field_expression "this->entries_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_data_got" : : identifier) < number_literal) (ERROR ",_true" , identifier) > (ERROR "::" : :) identifier) (ERROR ",_std::allocator" , identifier : : identifier) < identifier) (ERROR "::Output_data_got" : : identifier) < number_literal) (ERROR ",_true" , identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(this->free_list_).list_.\n  super__List_base<gold::" (binary_expression "(this->free_list_).list_.\n  super__List_base<gold" (field_expression "(this->free_list_).list_.\n  super__List_base" (field_expression "(this->free_list_).list_" (parenthesized_expression "(this->free_list_)" ( (field_expression "this->free_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier) : :) (labeled_statement "Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)this_00;" statement_identifier (ERROR "::Free_list_node,_std::allocator<gold:" : : (comma_expression "Free_list_node,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Free_list::Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)this_00;" statement_identifier : (ERROR ":" :) (expression_statement "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)this_00;" (assignment_expression "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)this_00" (field_expression "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_prev" (field_expression "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base" (field_expression "Free_list_node>_>\n  ._M_impl._M_node" (field_expression "Free_list_node>_>\n  ._M_impl" (binary_expression "Free_list_node>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(_List_node_base *)this_00" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;))) (ERROR "(this->free_list_).list_.\n  super__List_base<gold::" (binary_expression "(this->free_list_).list_.\n  super__List_base<gold" (field_expression "(this->free_list_).list_.\n  super__List_base" (field_expression "(this->free_list_).list_" (parenthesized_expression "(this->free_list_)" ( (field_expression "this->free_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier) : :) (labeled_statement "Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)this_00;" statement_identifier (ERROR "::Free_list_node,_std::allocator<gold:" : : (comma_expression "Free_list_node,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Free_list::Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)this_00;" statement_identifier : (ERROR ":" :) (expression_statement "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)this_00;" (assignment_expression "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)this_00" (field_expression "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base._M_next" (field_expression "Free_list_node>_>\n  ._M_impl._M_node.super__List_node_base" (field_expression "Free_list_node>_>\n  ._M_impl._M_node" (field_expression "Free_list_node>_>\n  ._M_impl" (binary_expression "Free_list_node>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(_List_node_base *)this_00" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;))) (ERROR "(this->free_list_).list_.\n  super__List_base<gold::" (binary_expression "(this->free_list_).list_.\n  super__List_base<gold" (field_expression "(this->free_list_).list_.\n  super__List_base" (field_expression "(this->free_list_).list_" (parenthesized_expression "(this->free_list_)" ( (field_expression "this->free_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier) : :) (labeled_statement "Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n  ._M_impl._M_node._M_size = 0;" statement_identifier (ERROR "::Free_list_node,_std::allocator<gold:" : : (comma_expression "Free_list_node,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Free_list::Free_list_node>_>\n  ._M_impl._M_node._M_size = 0;" statement_identifier : (ERROR ":" :) (expression_statement "Free_list_node>_>\n  ._M_impl._M_node._M_size = 0;" (assignment_expression "Free_list_node>_>\n  ._M_impl._M_node._M_size = 0" (field_expression "Free_list_node>_>\n  ._M_impl._M_node._M_size" (field_expression "Free_list_node>_>\n  ._M_impl._M_node" (field_expression "Free_list_node>_>\n  ._M_impl" (binary_expression "Free_list_node>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) = number_literal) ;))) (expression_statement "(this->free_list_).last_remove_._M_node = (_List_node_base *)this_00;" (assignment_expression "(this->free_list_).last_remove_._M_node = (_List_node_base *)this_00" (field_expression "(this->free_list_).last_remove_._M_node" (field_expression "(this->free_list_).last_remove_" (parenthesized_expression "(this->free_list_)" ( (field_expression "this->free_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(_List_node_base *)this_00" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(this->free_list_).extend_ = false;" (assignment_expression "(this->free_list_).extend_ = false" (field_expression "(this->free_list_).extend_" (parenthesized_expression "(this->free_list_)" ( (field_expression "this->free_list_" identifier -> field_identifier) )) . field_identifier) = false) ;) (expression_statement "(this->free_list_).length_ = 0;" (assignment_expression "(this->free_list_).length_ = 0" (field_expression "(this->free_list_).length_" (parenthesized_expression "(this->free_list_)" ( (field_expression "this->free_list_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(this->free_list_).min_hole_ = 0;" (assignment_expression "(this->free_list_).min_hole_ = 0" (field_expression "(this->free_list_).min_hole_" (parenthesized_expression "(this->free_list_)" ( (field_expression "this->free_list_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (if_statement "if (lVar2 >> 3 != 0) {\n    std::\n    vector<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n    ::_M_default_append(&this->entries_,lVar2 >> 3);\n  }" if (parenthesized_expression "(lVar2 >> 3 != 0)" ( (binary_expression "lVar2 >> 3 != 0" (binary_expression "lVar2 >> 3" identifier >> number_literal) != number_literal) )) (compound_statement "{\n    std::\n    vector<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n    ::_M_default_append(&this->entries_,lVar2 >> 3);\n  }" { (labeled_statement "std::\n    vector<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n    ::_M_default_append(&this->entries_,lVar2 >> 3);" statement_identifier (ERROR "::\n    vector<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold:" : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Output_data_got<64,_true>::Got_entry,_std" (binary_expression "Output_data_got<64" identifier < number_literal) , (comma_expression "_true>::Got_entry,_std" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) , identifier)) : : (binary_expression "allocator<gold" identifier < identifier) :) : (expression_statement "Output_data_got<64,_true>::Got_entry>_>\n    ::_M_default_append(&this->entries_,lVar2 >> 3);" (comma_expression "Output_data_got<64,_true>::Got_entry>_>\n    ::_M_default_append(&this->entries_,lVar2 >> 3)" (binary_expression "Output_data_got<64" identifier < number_literal) , (binary_expression "_true>::Got_entry>_>\n    ::_M_default_append(&this->entries_,lVar2 >> 3)" (binary_expression "_true>::Got_entry>_" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) > identifier) > (ERROR "::" : :) (call_expression "_M_default_append(&this->entries_,lVar2 >> 3)" identifier (argument_list "(&this->entries_,lVar2 >> 3)" ( (pointer_expression "&this->entries_" & (field_expression "this->entries_" identifier -> field_identifier)) , (binary_expression "lVar2 >> 3" identifier >> number_literal) ))))) ;)) })) comment (labeled_statement "Free_list::init(this_00,(EVP_PKEY_CTX *)data_size);" statement_identifier : (ERROR ":" :) (expression_statement "init(this_00,(EVP_PKEY_CTX *)data_size);" (call_expression "init(this_00,(EVP_PKEY_CTX *)data_size)" identifier (argument_list "(this_00,(EVP_PKEY_CTX *)data_size)" ( identifier , (cast_expression "(EVP_PKEY_CTX *)data_size" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_003e5780(undefined8 *param_1,long param_2)\n\n{\n  undefined8 *puVar1;\n  long lVar2;\n  \n  puVar1 = param_1 + 10;\n  param_1[2] = param_2;\n  param_1[1] = 0;\n  param_1[5] = 0;\n  param_1[6] = 8;\n  lVar2 = param_2 + 7;\n  if (-1 < param_2) {\n    lVar2 = param_2;\n  }\n  *(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;\n  param_1[3] = 0xffffffffffffffff;\n  *param_1 = &PTR_FUN_00662e18;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[0xb] = puVar1;\n  param_1[10] = puVar1;\n  param_1[0xc] = 0;\n  param_1[0xd] = puVar1;\n  *(undefined1 *)(param_1 + 0xe) = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  if (lVar2 >> 3 != 0) {\n    FUN_0028c780(param_1 + 7);\n  }\n                    \n  FUN_0037a860(puVar1,param_2,0);\n  return;\n}\n\n" (function_definition "void FUN_003e5780(undefined8 *param_1,long param_2)\n\n{\n  undefined8 *puVar1;\n  long lVar2;\n  \n  puVar1 = param_1 + 10;\n  param_1[2] = param_2;\n  param_1[1] = 0;\n  param_1[5] = 0;\n  param_1[6] = 8;\n  lVar2 = param_2 + 7;\n  if (-1 < param_2) {\n    lVar2 = param_2;\n  }\n  *(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;\n  param_1[3] = 0xffffffffffffffff;\n  *param_1 = &PTR_FUN_00662e18;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[0xb] = puVar1;\n  param_1[10] = puVar1;\n  param_1[0xc] = 0;\n  param_1[0xd] = puVar1;\n  *(undefined1 *)(param_1 + 0xe) = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  if (lVar2 >> 3 != 0) {\n    FUN_0028c780(param_1 + 7);\n  }\n                    \n  FUN_0037a860(puVar1,param_2,0);\n  return;\n}" primitive_type (function_declarator "FUN_003e5780(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) identifier) ))) (compound_statement "{\n  undefined8 *puVar1;\n  long lVar2;\n  \n  puVar1 = param_1 + 10;\n  param_1[2] = param_2;\n  param_1[1] = 0;\n  param_1[5] = 0;\n  param_1[6] = 8;\n  lVar2 = param_2 + 7;\n  if (-1 < param_2) {\n    lVar2 = param_2;\n  }\n  *(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;\n  param_1[3] = 0xffffffffffffffff;\n  *param_1 = &PTR_FUN_00662e18;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[0xb] = puVar1;\n  param_1[10] = puVar1;\n  param_1[0xc] = 0;\n  param_1[0xd] = puVar1;\n  *(undefined1 *)(param_1 + 0xe) = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  if (lVar2 >> 3 != 0) {\n    FUN_0028c780(param_1 + 7);\n  }\n                    \n  FUN_0037a860(puVar1,param_2,0);\n  return;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (expression_statement "puVar1 = param_1 + 10;" (assignment_expression "puVar1 = param_1 + 10" identifier = (binary_expression "param_1 + 10" identifier + number_literal)) ;) (expression_statement "param_1[2] = param_2;" (assignment_expression "param_1[2] = param_2" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[6] = 8;" (assignment_expression "param_1[6] = 8" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar2 = param_2 + 7;" (assignment_expression "lVar2 = param_2 + 7" identifier = (binary_expression "param_2 + 7" identifier + number_literal)) ;) (if_statement "if (-1 < param_2) {\n    lVar2 = param_2;\n  }" if (parenthesized_expression "(-1 < param_2)" ( (binary_expression "-1 < param_2" number_literal < identifier) )) (compound_statement "{\n    lVar2 = param_2;\n  }" { (expression_statement "lVar2 = param_2;" (assignment_expression "lVar2 = param_2" identifier = identifier) ;) })) (expression_statement "*(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;" (assignment_expression "*(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2" (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 4) & 0xe0 | 2" (binary_expression "*(byte *)(param_1 + 4) & 0xe0" (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "param_1[3] = 0xffffffffffffffff;" (assignment_expression "param_1[3] = 0xffffffffffffffff" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_1 = &PTR_FUN_00662e18;" (assignment_expression "*param_1 = &PTR_FUN_00662e18" (pointer_expression "*param_1" * identifier) = (pointer_expression "&PTR_FUN_00662e18" & identifier)) ;) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xb] = puVar1;" (assignment_expression "param_1[0xb] = puVar1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[10] = puVar1;" (assignment_expression "param_1[10] = puVar1" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xc] = 0;" (assignment_expression "param_1[0xc] = 0" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xd] = puVar1;" (assignment_expression "param_1[0xd] = puVar1" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0xe) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xe) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xe)" * (cast_expression "(undefined1 *)(param_1 + 0xe)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (lVar2 >> 3 != 0) {\n    FUN_0028c780(param_1 + 7);\n  }" if (parenthesized_expression "(lVar2 >> 3 != 0)" ( (binary_expression "lVar2 >> 3 != 0" (binary_expression "lVar2 >> 3" identifier >> number_literal) != number_literal) )) (compound_statement "{\n    FUN_0028c780(param_1 + 7);\n  }" { (expression_statement "FUN_0028c780(param_1 + 7);" (call_expression "FUN_0028c780(param_1 + 7)" identifier (argument_list "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) ))) ;) })) (expression_statement "FUN_0037a860(puVar1,param_2,0);" (call_expression "FUN_0037a860(puVar1,param_2,0)" identifier (argument_list "(puVar1,param_2,0)" ( identifier , 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) IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (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 ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_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) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_003e5780(undefined8 *param_1,long param_2)\n\n{\n  undefined8 *puVar1;\n  long lVar2;\n  \n  puVar1 = param_1 + 10;\n  param_1[2] = param_2;\n  param_1[1] = 0;\n  param_1[5] = 0;\n  param_1[6] = 8;\n  lVar2 = param_2 + 7;\n  if (-1 < param_2) {\n    lVar2 = param_2;\n  }\n  *(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;\n  param_1[3] = 0xffffffffffffffff;\n  *param_1 = &PTR_FUN_00662e18;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[0xb] = puVar1;\n  param_1[10] = puVar1;\n  param_1[0xc] = 0;\n  param_1[0xd] = puVar1;\n  *(undefined1 *)(param_1 + 0xe) = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  if (lVar2 >> 3 != 0) {\n    FUN_0028c780(param_1 + 7);\n  }\n                    \n  FUN_0037a860(puVar1,param_2,0);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_003e5780(undefined8 *param_1,long param_2)" (identifier "FUN_003e5780") (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")) (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined8 *puVar1;\n  long lVar2;\n  \n  puVar1 = param_1 + 10;\n  param_1[2] = param_2;\n  param_1[1] = 0;\n  param_1[5] = 0;\n  param_1[6] = 8;\n  lVar2 = param_2 + 7;\n  if (-1 < param_2) {\n    lVar2 = param_2;\n  }\n  *(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;\n  param_1[3] = 0xffffffffffffffff;\n  *param_1 = &PTR_FUN_00662e18;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[0xb] = puVar1;\n  param_1[10] = puVar1;\n  param_1[0xc] = 0;\n  param_1[0xd] = puVar1;\n  *(undefined1 *)(param_1 + 0xe) = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  if (lVar2 >> 3 != 0) {\n    FUN_0028c780(param_1 + 7);\n  }\n                    \n  FUN_0037a860(puVar1,param_2,0);\n  return;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (expression_statement "puVar1 = param_1 + 10;" (assignment_expression "puVar1 = param_1 + 10" (identifier "puVar1") (= "=") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10"))) (; ";")) (expression_statement "param_1[2] = param_2;" (assignment_expression "param_1[2] = param_2" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[6] = 8;" (assignment_expression "param_1[6] = 8" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "lVar2 = param_2 + 7;" (assignment_expression "lVar2 = param_2 + 7" (identifier "lVar2") (= "=") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7"))) (; ";")) (if_statement "if (-1 < param_2) {\n    lVar2 = param_2;\n  }" (if "if") (parenthesized_expression "(-1 < param_2)" (( "(") (binary_expression "-1 < param_2" (number_literal "-1") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    lVar2 = param_2;\n  }" ({ "{") (expression_statement "lVar2 = param_2;" (assignment_expression "lVar2 = param_2" (identifier "lVar2") (= "=") (identifier "param_2")) (; ";")) (} "}"))) (expression_statement "*(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;" (assignment_expression "*(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2" (pointer_expression "*(byte *)(param_1 + 4)" (* "*") (cast_expression "(byte *)(param_1 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 4) & 0xe0 | 2" (binary_expression "*(byte *)(param_1 + 4) & 0xe0" (pointer_expression "*(byte *)(param_1 + 4)" (* "*") (cast_expression "(byte *)(param_1 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0xe0")) (| "|") (number_literal "2"))) (; ";")) (expression_statement "param_1[3] = 0xffffffffffffffff;" (assignment_expression "param_1[3] = 0xffffffffffffffff" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "*param_1 = &PTR_FUN_00662e18;" (assignment_expression "*param_1 = &PTR_FUN_00662e18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&PTR_FUN_00662e18" (& "&") (identifier "PTR_FUN_00662e18"))) (; ";")) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xb] = puVar1;" (assignment_expression "param_1[0xb] = puVar1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "puVar1")) (; ";")) (expression_statement "param_1[10] = puVar1;" (assignment_expression "param_1[10] = puVar1" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "puVar1")) (; ";")) (expression_statement "param_1[0xc] = 0;" (assignment_expression "param_1[0xc] = 0" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xd] = puVar1;" (assignment_expression "param_1[0xd] = puVar1" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "puVar1")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0xe) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xe) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xe)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xe)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe)" (( "(") (binary_expression "param_1 + 0xe" (identifier "param_1") (+ "+") (number_literal "0xe")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar2 >> 3 != 0) {\n    FUN_0028c780(param_1 + 7);\n  }" (if "if") (parenthesized_expression "(lVar2 >> 3 != 0)" (( "(") (binary_expression "lVar2 >> 3 != 0" (binary_expression "lVar2 >> 3" (identifier "lVar2") (>> ">>") (number_literal "3")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0028c780(param_1 + 7);\n  }" ({ "{") (expression_statement "FUN_0028c780(param_1 + 7);" (call_expression "FUN_0028c780(param_1 + 7)" (identifier "FUN_0028c780") (argument_list "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0037a860(puVar1,param_2,0);" (call_expression "FUN_0037a860(puVar1,param_2,0)" (identifier "FUN_0037a860") (argument_list "(puVar1,param_2,0)" (( "(") (identifier "puVar1") (, ",") (identifier "param_2") (, ",") (number_literal "0") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void Output_data_got(Output_data_got<64,_true> * this, off_t data_size)
    */

void __thiscall
var_3::var_8<64,var_9>::var_8(var_8<64,var_9> *this,off_t var_1)

{
  Free_list *this_00;
  type_1 var_2;
  long var_7;
  
  this_00 = &this->free_list_;
  var_2 = (this->super_Output_data_got_base).super_Output_section_data_build.
          super_Output_section_data.super_Output_data.field_0x20;
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  super_Output_data.data_size_ = var_1;
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  super_Output_data.address_ = 0;
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  output_section_ = (type_2 *)0x0;
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  addralign_ = 8;
  var_7 = var_1 + 7;
  if (-1 < var_1) {
    var_7 = var_1;
  }
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  super_Output_data.field_0x20 = var_2 & 0xe0 | 2;
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  super_Output_data.offset_ = -1;
  (this->super_Output_data_got_base).super_Output_section_data_build.super_Output_section_data.
  super_Output_data._vptr_Output_data = (type_3 **)&PTR__Output_data_got_00662e18;
  (this->entries_).
  super__Vector_base<var_3::var_8<64,var_9>::var_4,_std::allocator<var_3::var_8<64,var_9>::var_4>var_5>
  ._M_impl._M_start = (type_4)0x0;
  (this->entries_).
  super__Vector_base<var_3::var_8<64,var_9>::var_4,_std::allocator<var_3::var_8<64,var_9>::var_4>var_5>
  ._M_impl._M_finish = (type_4)0x0;
  (this->entries_).
  super__Vector_base<var_3::var_8<64,var_9>::var_4,_std::allocator<var_3::var_8<64,var_9>::var_4>var_5>
  ._M_impl._M_end_of_storage = (type_4)0x0;
  (this->free_list_).list_.
  super__List_base<var_3::Free_list::var_6,_std::allocator<var_3::Free_list::var_6>var_5>
  ._M_impl._M_node.super__List_node_base._M_prev = (type_5 *)this_00;
  (this->free_list_).list_.
  super__List_base<var_3::Free_list::var_6,_std::allocator<var_3::Free_list::var_6>var_5>
  ._M_impl._M_node.super__List_node_base._M_next = (type_5 *)this_00;
  (this->free_list_).list_.
  super__List_base<var_3::Free_list::var_6,_std::allocator<var_3::Free_list::var_6>var_5>
  ._M_impl._M_node._M_size = 0;
  (this->free_list_).last_remove_._M_node = (type_5 *)this_00;
  (this->free_list_).extend_ = false;
  (this->free_list_).length_ = 0;
  (this->free_list_).min_hole_ = 0;
  if (var_7 >> 3 != 0) {
    std::
    vector<var_3::var_8<64,var_9>::var_4,_std::allocator<var_3::var_8<64,var_9>::var_4>var_5>
    ::var_10(&this->entries_,var_7 >> 3);
  }
                    /* try { // try from 003e582b to 003e5848 has its CatchHandler @ 003e584b */
  Free_list::var_11(this_00,(type_6 *)var_1);
  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: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator 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 (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) 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: (binary_expression left: (binary_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)) 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: (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: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (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: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (return_statement))))

void MASKED(undefined8 *param_1,long param_2)

{
  undefined8 *puVar1;
  long lVar2;
  
  puVar1 = param_1 + 10;
  param_1[2] = param_2;
  param_1[1] = 0;
  param_1[5] = 0;
  param_1[6] = 8;
  lVar2 = param_2 + 7;
  if (-1 < param_2) {
    lVar2 = param_2;
  }
  *(byte *)(param_1 + 4) = *(byte *)(param_1 + 4) & 0xe0 | 2;
  param_1[3] = 0xffffffffffffffff;
  *param_1 = &PTR_FUN_00662e18;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[0xb] = puVar1;
  param_1[10] = puVar1;
  param_1[0xc] = 0;
  param_1[0xd] = puVar1;
  *(undefined1 *)(param_1 + 0xe) = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  if (lVar2 >> 3 != 0) {
    FUN_0028c780(param_1 + 7);
  }
                    /* try { // try from 003e582b to 003e5848 has its CatchHandler @ 003e584b */
  FUN_0037a860(puVar1,param_2,0);
  return;
}

