
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void parse_push_state(General_options * this, char * param_1, char *
   param_2, Command_line * param_3) */

void __thiscall
gold::General_options::parse_push_state
          (General_options *this,char *param_1,char *param_2,Command_line *param_3)

{
  char *arg;
  iterator __position;
  Object_format OVar1;
  Position_dependent_options *pPVar2;
  Position_dependent_options *posdep;
  
  pPVar2 = (Position_dependent_options *)operator_new(0x10);
  arg = (this->format_).value;
  pPVar2->as_needed_ = (this->as_needed_).value;
  pPVar2->Bdynamic_ = (this->Bdynamic_).value;
                    /* try { // try from 001f9ed1 to 001f9ed5 has its CatchHandler @ 001f9f38 */
  OVar1 = string_to_object_format(arg);
  pPVar2->format_enum_ = OVar1;
  __position._M_current =
       (this->options_stack_).
       super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>
       ._M_impl._M_finish;
  pPVar2->whole_archive_ = (this->whole_archive_).value;
  pPVar2->incremental_disposition_ = this->incremental_disposition_;
  if (__position._M_current !=
      (this->options_stack_).
      super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>
      ._M_impl._M_end_of_storage) {
    *__position._M_current = pPVar2;
    (this->options_stack_).
    super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>
    ._M_impl._M_finish = __position._M_current + 1;
    return;
  }
  posdep = pPVar2;
  std::vector<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>
  ::_M_realloc_insert<gold::Position_dependent_options*_const&>
            (&this->options_stack_,__position,&posdep);
  return;
}



void FUN_001f9ea0(long param_1)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  undefined4 uVar3;
  undefined1 *puVar4;
  undefined1 *local_20 [2];
  
  puVar4 = (undefined1 *)FUN_002ee780(0x10);
  uVar1 = *(undefined8 *)(param_1 + 0x608);
  *puVar4 = *(undefined1 *)(param_1 + 0x4c9);
  puVar4[1] = *(undefined1 *)(param_1 + 0x889);
                    /* try { // try from 001f9ed1 to 001f9ed5 has its CatchHandler @ 001f9f38 */
  uVar3 = FUN_001f9850(uVar1);
  *(undefined4 *)(puVar4 + 4) = uVar3;
  puVar2 = *(undefined8 **)(param_1 + 0x92b8);
  puVar4[8] = *(undefined1 *)(param_1 + 0x7801);
  *(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);
  if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {
    *puVar2 = puVar4;
    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;
    return;
  }
  local_20[0] = puVar4;
  FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);
  return;
}


PUSH RBP
PUSH RBX
MOV RBX,RDI
MOV EDI,0x10
SUB RSP,0x18
CALL 0x002ee780
MOV RDI,qword ptr [RBX + 0x608]
MOV RBP,RAX
MOVZX EAX,byte ptr [RBX + 0x4c9]
MOV byte ptr [RBP],AL
MOVZX EAX,byte ptr [RBX + 0x889]
MOV byte ptr [RBP + 0x1],AL
CALL 0x001f9850
MOV dword ptr [RBP + 0x4],EAX
MOVZX EAX,byte ptr [RBX + 0x7801]
MOV qword ptr [RSP + 0x8],RBP
MOV RSI,qword ptr [RBX + 0x92b8]
MOV byte ptr [RBP + 0x8],AL
MOV EAX,dword ptr [RBX + 0x91f0]
MOV dword ptr [RBP + 0xc],EAX
CMP RSI,qword ptr [RBX + 0x92c0]
JZ 0x001f9f20
MOV qword ptr [RSI],RBP
ADD RSI,0x8
MOV qword ptr [RBX + 0x92b8],RSI
ADD RSP,0x18
POP RBX
POP RBP
RET
LEA RDX,[RSP + 0x8]
LEA RDI,[RBX + 0x92b0]
CALL 0x00205eb0
ADD RSP,0x18
POP RBX
POP RBP
RET
(translation_unit "void FUN_001f9ea0(long param_1)\n\n{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  undefined1 *puVar4;\n  undefined1 *local_20 [2];\n  \n  puVar4 = (undefined1 *)FUN_002ee780(0x10);\n  uVar1 = *(undefined8 *)(param_1 + 0x608);\n  *puVar4 = *(undefined1 *)(param_1 + 0x4c9);\n  puVar4[1] = *(undefined1 *)(param_1 + 0x889);\n                    /* try { // try from 001f9ed1 to 001f9ed5 has its CatchHandler @ 001f9f38 */\n  uVar3 = FUN_001f9850(uVar1);\n  *(undefined4 *)(puVar4 + 4) = uVar3;\n  puVar2 = *(undefined8 **)(param_1 + 0x92b8);\n  puVar4[8] = *(undefined1 *)(param_1 + 0x7801);\n  *(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);\n  if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }\n  local_20[0] = puVar4;\n  FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);\n  return;\n}\n\n" (function_definition "void FUN_001f9ea0(long param_1)\n\n{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  undefined1 *puVar4;\n  undefined1 *local_20 [2];\n  \n  puVar4 = (undefined1 *)FUN_002ee780(0x10);\n  uVar1 = *(undefined8 *)(param_1 + 0x608);\n  *puVar4 = *(undefined1 *)(param_1 + 0x4c9);\n  puVar4[1] = *(undefined1 *)(param_1 + 0x889);\n                    /* try { // try from 001f9ed1 to 001f9ed5 has its CatchHandler @ 001f9f38 */\n  uVar3 = FUN_001f9850(uVar1);\n  *(undefined4 *)(puVar4 + 4) = uVar3;\n  puVar2 = *(undefined8 **)(param_1 + 0x92b8);\n  puVar4[8] = *(undefined1 *)(param_1 + 0x7801);\n  *(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);\n  if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }\n  local_20[0] = puVar4;\n  FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);\n  return;\n}" primitive_type (function_declarator "FUN_001f9ea0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  undefined1 *puVar4;\n  undefined1 *local_20 [2];\n  \n  puVar4 = (undefined1 *)FUN_002ee780(0x10);\n  uVar1 = *(undefined8 *)(param_1 + 0x608);\n  *puVar4 = *(undefined1 *)(param_1 + 0x4c9);\n  puVar4[1] = *(undefined1 *)(param_1 + 0x889);\n                    /* try { // try from 001f9ed1 to 001f9ed5 has its CatchHandler @ 001f9f38 */\n  uVar3 = FUN_001f9850(uVar1);\n  *(undefined4 *)(puVar4 + 4) = uVar3;\n  puVar2 = *(undefined8 **)(param_1 + 0x92b8);\n  puVar4[8] = *(undefined1 *)(param_1 + 0x7801);\n  *(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);\n  if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }\n  local_20[0] = puVar4;\n  FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 *local_20 [2];" type_identifier (pointer_declarator "*local_20 [2]" * (array_declarator "local_20 [2]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = (undefined1 *)FUN_002ee780(0x10);" (assignment_expression "puVar4 = (undefined1 *)FUN_002ee780(0x10)" identifier = (cast_expression "(undefined1 *)FUN_002ee780(0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002ee780(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "uVar1 = *(undefined8 *)(param_1 + 0x608);" (assignment_expression "uVar1 = *(undefined8 *)(param_1 + 0x608)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x608)" * (cast_expression "(undefined8 *)(param_1 + 0x608)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x608)" ( (binary_expression "param_1 + 0x608" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = *(undefined1 *)(param_1 + 0x4c9);" (assignment_expression "*puVar4 = *(undefined1 *)(param_1 + 0x4c9)" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*(undefined1 *)(param_1 + 0x4c9)" * (cast_expression "(undefined1 *)(param_1 + 0x4c9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c9)" ( (binary_expression "param_1 + 0x4c9" identifier + number_literal) ))))) ;) (expression_statement "puVar4[1] = *(undefined1 *)(param_1 + 0x889);" (assignment_expression "puVar4[1] = *(undefined1 *)(param_1 + 0x889)" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined1 *)(param_1 + 0x889)" * (cast_expression "(undefined1 *)(param_1 + 0x889)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x889)" ( (binary_expression "param_1 + 0x889" identifier + number_literal) ))))) ;) comment (expression_statement "uVar3 = FUN_001f9850(uVar1);" (assignment_expression "uVar3 = FUN_001f9850(uVar1)" identifier = (call_expression "FUN_001f9850(uVar1)" identifier (argument_list "(uVar1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(puVar4 + 4) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + 4) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + 4)" * (cast_expression "(undefined4 *)(puVar4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 4)" ( (binary_expression "puVar4 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar2 = *(undefined8 **)(param_1 + 0x92b8);" (assignment_expression "puVar2 = *(undefined8 **)(param_1 + 0x92b8)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 0x92b8)" * (cast_expression "(undefined8 **)(param_1 + 0x92b8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x92b8)" ( (binary_expression "param_1 + 0x92b8" identifier + number_literal) ))))) ;) (expression_statement "puVar4[8] = *(undefined1 *)(param_1 + 0x7801);" (assignment_expression "puVar4[8] = *(undefined1 *)(param_1 + 0x7801)" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = (pointer_expression "*(undefined1 *)(param_1 + 0x7801)" * (cast_expression "(undefined1 *)(param_1 + 0x7801)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7801)" ( (binary_expression "param_1 + 0x7801" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);" (assignment_expression "*(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0)" (pointer_expression "*(undefined4 *)(puVar4 + 0xc)" * (cast_expression "(undefined4 *)(puVar4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0xc)" ( (binary_expression "puVar4 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x91f0)" * (cast_expression "(undefined4 *)(param_1 + 0x91f0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x91f0)" ( (binary_expression "param_1 + 0x91f0" identifier + number_literal) ))))) ;) (if_statement "if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }" if (parenthesized_expression "(puVar2 != *(undefined8 **)(param_1 + 0x92c0))" ( (binary_expression "puVar2 != *(undefined8 **)(param_1 + 0x92c0)" identifier != (pointer_expression "*(undefined8 **)(param_1 + 0x92c0)" * (cast_expression "(undefined8 **)(param_1 + 0x92c0)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x92c0)" ( (binary_expression "param_1 + 0x92c0" identifier + number_literal) ))))) )) (compound_statement "{\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }" { (expression_statement "*puVar2 = puVar4;" (assignment_expression "*puVar2 = puVar4" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "*(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1" (pointer_expression "*(undefined8 **)(param_1 + 0x92b8)" * (cast_expression "(undefined8 **)(param_1 + 0x92b8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x92b8)" ( (binary_expression "param_1 + 0x92b8" identifier + number_literal) )))) = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "local_20[0] = puVar4;" (assignment_expression "local_20[0] = puVar4" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);" (call_expression "FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20)" identifier (argument_list "(param_1 + 0x92b0,puVar2,local_20)" ( (binary_expression "param_1 + 0x92b0" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void parse_push_state(General_options * this, char * param_1, char *\n   param_2, Command_line * param_3) */\n\nvoid __thiscall\ngold::General_options::parse_push_state\n          (General_options *this,char *param_1,char *param_2,Command_line *param_3)\n\n{\n  char *arg;\n  iterator __position;\n  Object_format OVar1;\n  Position_dependent_options *pPVar2;\n  Position_dependent_options *posdep;\n  \n  pPVar2 = (Position_dependent_options *)operator_new(0x10);\n  arg = (this->format_).value;\n  pPVar2->as_needed_ = (this->as_needed_).value;\n  pPVar2->Bdynamic_ = (this->Bdynamic_).value;\n                    /* try { // try from 001f9ed1 to 001f9ed5 has its CatchHandler @ 001f9f38 */\n  OVar1 = string_to_object_format(arg);\n  pPVar2->format_enum_ = OVar1;\n  __position._M_current =\n       (this->options_stack_).\n       super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n       ._M_impl._M_finish;\n  pPVar2->whole_archive_ = (this->whole_archive_).value;\n  pPVar2->incremental_disposition_ = this->incremental_disposition_;\n  if (__position._M_current !=\n      (this->options_stack_).\n      super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n      ._M_impl._M_end_of_storage) {\n    *__position._M_current = pPVar2;\n    (this->options_stack_).\n    super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n    ._M_impl._M_finish = __position._M_current + 1;\n    return;\n  }\n  posdep = pPVar2;\n  std::vector<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n  ::_M_realloc_insert<gold::Position_dependent_options*_const&>\n            (&this->options_stack_,__position,&posdep);\n  return;\n}\n\n" comment comment (function_definition "void __thiscall\ngold::General_options::parse_push_state\n          (General_options *this,char *param_1,char *param_2,Command_line *param_3)\n\n{\n  char *arg;\n  iterator __position;\n  Object_format OVar1;\n  Position_dependent_options *pPVar2;\n  Position_dependent_options *posdep;\n  \n  pPVar2 = (Position_dependent_options *)operator_new(0x10);\n  arg = (this->format_).value;\n  pPVar2->as_needed_ = (this->as_needed_).value;\n  pPVar2->Bdynamic_ = (this->Bdynamic_).value;\n                    /* try { // try from 001f9ed1 to 001f9ed5 has its CatchHandler @ 001f9f38 */\n  OVar1 = string_to_object_format(arg);\n  pPVar2->format_enum_ = OVar1;\n  __position._M_current =\n       (this->options_stack_).\n       super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n       ._M_impl._M_finish;\n  pPVar2->whole_archive_ = (this->whole_archive_).value;\n  pPVar2->incremental_disposition_ = this->incremental_disposition_;\n  if (__position._M_current !=\n      (this->options_stack_).\n      super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n      ._M_impl._M_end_of_storage) {\n    *__position._M_current = pPVar2;\n    (this->options_stack_).\n    super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n    ._M_impl._M_finish = __position._M_current + 1;\n    return;\n  }\n  posdep = pPVar2;\n  std::vector<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n  ::_M_realloc_insert<gold::Position_dependent_options*_const&>\n            (&this->options_stack_,__position,&posdep);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::General_options::" identifier : : identifier : :) (function_declarator "parse_push_state\n          (General_options *this,char *param_1,char *param_2,Command_line *param_3)" identifier (parameter_list "(General_options *this,char *param_1,char *param_2,Command_line *param_3)" ( (parameter_declaration "General_options *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "Command_line *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char *arg;\n  iterator __position;\n  Object_format OVar1;\n  Position_dependent_options *pPVar2;\n  Position_dependent_options *posdep;\n  \n  pPVar2 = (Position_dependent_options *)operator_new(0x10);\n  arg = (this->format_).value;\n  pPVar2->as_needed_ = (this->as_needed_).value;\n  pPVar2->Bdynamic_ = (this->Bdynamic_).value;\n                    /* try { // try from 001f9ed1 to 001f9ed5 has its CatchHandler @ 001f9f38 */\n  OVar1 = string_to_object_format(arg);\n  pPVar2->format_enum_ = OVar1;\n  __position._M_current =\n       (this->options_stack_).\n       super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n       ._M_impl._M_finish;\n  pPVar2->whole_archive_ = (this->whole_archive_).value;\n  pPVar2->incremental_disposition_ = this->incremental_disposition_;\n  if (__position._M_current !=\n      (this->options_stack_).\n      super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n      ._M_impl._M_end_of_storage) {\n    *__position._M_current = pPVar2;\n    (this->options_stack_).\n    super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n    ._M_impl._M_finish = __position._M_current + 1;\n    return;\n  }\n  posdep = pPVar2;\n  std::vector<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n  ::_M_realloc_insert<gold::Position_dependent_options*_const&>\n            (&this->options_stack_,__position,&posdep);\n  return;\n}" { (declaration "char *arg;" primitive_type (pointer_declarator "*arg" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "Object_format OVar1;" type_identifier identifier ;) (declaration "Position_dependent_options *pPVar2;" type_identifier (pointer_declarator "*pPVar2" * identifier) ;) (declaration "Position_dependent_options *posdep;" type_identifier (pointer_declarator "*posdep" * identifier) ;) (expression_statement "pPVar2 = (Position_dependent_options *)operator_new(0x10);" (assignment_expression "pPVar2 = (Position_dependent_options *)operator_new(0x10)" identifier = (cast_expression "(Position_dependent_options *)operator_new(0x10)" ( (type_descriptor "Position_dependent_options *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "arg = (this->format_).value;" (assignment_expression "arg = (this->format_).value" identifier = (field_expression "(this->format_).value" (parenthesized_expression "(this->format_)" ( (field_expression "this->format_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pPVar2->as_needed_ = (this->as_needed_).value;" (assignment_expression "pPVar2->as_needed_ = (this->as_needed_).value" (field_expression "pPVar2->as_needed_" identifier -> field_identifier) = (field_expression "(this->as_needed_).value" (parenthesized_expression "(this->as_needed_)" ( (field_expression "this->as_needed_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pPVar2->Bdynamic_ = (this->Bdynamic_).value;" (assignment_expression "pPVar2->Bdynamic_ = (this->Bdynamic_).value" (field_expression "pPVar2->Bdynamic_" identifier -> field_identifier) = (field_expression "(this->Bdynamic_).value" (parenthesized_expression "(this->Bdynamic_)" ( (field_expression "this->Bdynamic_" identifier -> field_identifier) )) . field_identifier)) ;) comment (expression_statement "OVar1 = string_to_object_format(arg);" (assignment_expression "OVar1 = string_to_object_format(arg)" identifier = (call_expression "string_to_object_format(arg)" identifier (argument_list "(arg)" ( identifier )))) ;) (expression_statement "pPVar2->format_enum_ = OVar1;" (assignment_expression "pPVar2->format_enum_ = OVar1" (field_expression "pPVar2->format_enum_" identifier -> field_identifier) = identifier) ;) (expression_statement "__position._M_current =\n       (this->options_stack_).\n       super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n       ._M_impl._M_finish;" (field_expression "__position._M_current =\n       (this->options_stack_).\n       super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n       ._M_impl._M_finish" (field_expression "__position._M_current =\n       (this->options_stack_).\n       super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n       ._M_impl" (binary_expression "__position._M_current =\n       (this->options_stack_).\n       super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_" (binary_expression "__position._M_current =\n       (this->options_stack_).\n       super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold" (binary_expression "__position._M_current =\n       (this->options_stack_).\n       super__Vector_base<gold::Position_dependent_options*,_std" (assignment_expression "__position._M_current =\n       (this->options_stack_).\n       super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "(this->options_stack_).\n       super__Vector_base<gold" (field_expression "(this->options_stack_).\n       super__Vector_base" (parenthesized_expression "(this->options_stack_)" ( (field_expression "this->options_stack_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Position_dependent_options" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Position_dependent_options" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "pPVar2->whole_archive_ = (this->whole_archive_).value;" (assignment_expression "pPVar2->whole_archive_ = (this->whole_archive_).value" (field_expression "pPVar2->whole_archive_" identifier -> field_identifier) = (field_expression "(this->whole_archive_).value" (parenthesized_expression "(this->whole_archive_)" ( (field_expression "this->whole_archive_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pPVar2->incremental_disposition_ = this->incremental_disposition_;" (assignment_expression "pPVar2->incremental_disposition_ = this->incremental_disposition_" (field_expression "pPVar2->incremental_disposition_" identifier -> field_identifier) = (field_expression "this->incremental_disposition_" identifier -> field_identifier)) ;) (if_statement "if (__position._M_current !=\n      (this->options_stack_).\n      super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n      ._M_impl._M_end_of_storage) {\n    *__position._M_current = pPVar2;\n    (this->options_stack_).\n    super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n    ._M_impl._M_finish = __position._M_current + 1;\n    return;\n  }" if (parenthesized_expression "(__position._M_current !=\n      (this->options_stack_).\n      super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n      ._M_impl._M_end_of_storage)" ( (field_expression "__position._M_current !=\n      (this->options_stack_).\n      super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n      ._M_impl._M_end_of_storage" (field_expression "__position._M_current !=\n      (this->options_stack_).\n      super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n      ._M_impl" (binary_expression "__position._M_current !=\n      (this->options_stack_).\n      super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_" (binary_expression "__position._M_current !=\n      (this->options_stack_).\n      super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold" (binary_expression "__position._M_current !=\n      (this->options_stack_).\n      super__Vector_base<gold::Position_dependent_options*,_std" (binary_expression "__position._M_current !=\n      (this->options_stack_).\n      super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) != (binary_expression "(this->options_stack_).\n      super__Vector_base<gold" (field_expression "(this->options_stack_).\n      super__Vector_base" (parenthesized_expression "(this->options_stack_)" ( (field_expression "this->options_stack_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Position_dependent_options" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Position_dependent_options" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    *__position._M_current = pPVar2;\n    (this->options_stack_).\n    super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n    ._M_impl._M_finish = __position._M_current + 1;\n    return;\n  }" { (expression_statement "*__position._M_current = pPVar2;" (assignment_expression "*__position._M_current = pPVar2" (pointer_expression "*__position._M_current" * (field_expression "__position._M_current" identifier . field_identifier)) = identifier) ;) (expression_statement "(this->options_stack_).\n    super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n    ._M_impl._M_finish = __position._M_current + 1;" (assignment_expression "(this->options_stack_).\n    super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n    ._M_impl._M_finish = __position._M_current + 1" (field_expression "(this->options_stack_).\n    super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n    ._M_impl._M_finish" (field_expression "(this->options_stack_).\n    super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n    ._M_impl" (binary_expression "(this->options_stack_).\n    super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_" (binary_expression "(this->options_stack_).\n    super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold" (binary_expression "(this->options_stack_).\n    super__Vector_base<gold::Position_dependent_options*,_std" (binary_expression "(this->options_stack_).\n    super__Vector_base<gold" (field_expression "(this->options_stack_).\n    super__Vector_base" (parenthesized_expression "(this->options_stack_)" ( (field_expression "this->options_stack_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Position_dependent_options" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Position_dependent_options" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "posdep = pPVar2;" (assignment_expression "posdep = pPVar2" identifier = identifier) ;) (ERROR "std::vector<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>\n  ::_M_realloc_insert<gold::" (comma_expression "std::vector<gold::Position_dependent_options*,_std" identifier (ERROR "::vector<gold::Position_dependent_options*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Position_dependent_options*>_>\n  ::_M_realloc_insert<gold" (binary_expression "Position_dependent_options*>_>\n  ::_M_realloc_insert" (binary_expression "Position_dependent_options*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Position_dependent_options*_const&>\n            (&this->options_stack_,__position,&posdep);" (binary_expression "Position_dependent_options*_const&>\n            (&this->options_stack_,__position,&posdep)" (binary_expression "Position_dependent_options*_const" identifier * identifier) (ERROR "&" &) > (parenthesized_expression "(&this->options_stack_,__position,&posdep)" ( (comma_expression "&this->options_stack_,__position,&posdep" (pointer_expression "&this->options_stack_" & (field_expression "this->options_stack_" identifier -> field_identifier)) , (comma_expression "__position,&posdep" identifier , (pointer_expression "&posdep" & identifier))) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001f9ea0(long param_1)\n\n{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  undefined1 *puVar4;\n  undefined1 *local_20 [2];\n  \n  puVar4 = (undefined1 *)FUN_002ee780(0x10);\n  uVar1 = *(undefined8 *)(param_1 + 0x608);\n  *puVar4 = *(undefined1 *)(param_1 + 0x4c9);\n  puVar4[1] = *(undefined1 *)(param_1 + 0x889);\n                    \n  uVar3 = FUN_001f9850(uVar1);\n  *(undefined4 *)(puVar4 + 4) = uVar3;\n  puVar2 = *(undefined8 **)(param_1 + 0x92b8);\n  puVar4[8] = *(undefined1 *)(param_1 + 0x7801);\n  *(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);\n  if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }\n  local_20[0] = puVar4;\n  FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);\n  return;\n}\n\n" (function_definition "void FUN_001f9ea0(long param_1)\n\n{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  undefined1 *puVar4;\n  undefined1 *local_20 [2];\n  \n  puVar4 = (undefined1 *)FUN_002ee780(0x10);\n  uVar1 = *(undefined8 *)(param_1 + 0x608);\n  *puVar4 = *(undefined1 *)(param_1 + 0x4c9);\n  puVar4[1] = *(undefined1 *)(param_1 + 0x889);\n                    \n  uVar3 = FUN_001f9850(uVar1);\n  *(undefined4 *)(puVar4 + 4) = uVar3;\n  puVar2 = *(undefined8 **)(param_1 + 0x92b8);\n  puVar4[8] = *(undefined1 *)(param_1 + 0x7801);\n  *(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);\n  if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }\n  local_20[0] = puVar4;\n  FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);\n  return;\n}" primitive_type (function_declarator "FUN_001f9ea0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  undefined1 *puVar4;\n  undefined1 *local_20 [2];\n  \n  puVar4 = (undefined1 *)FUN_002ee780(0x10);\n  uVar1 = *(undefined8 *)(param_1 + 0x608);\n  *puVar4 = *(undefined1 *)(param_1 + 0x4c9);\n  puVar4[1] = *(undefined1 *)(param_1 + 0x889);\n                    \n  uVar3 = FUN_001f9850(uVar1);\n  *(undefined4 *)(puVar4 + 4) = uVar3;\n  puVar2 = *(undefined8 **)(param_1 + 0x92b8);\n  puVar4[8] = *(undefined1 *)(param_1 + 0x7801);\n  *(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);\n  if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }\n  local_20[0] = puVar4;\n  FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 *local_20 [2];" type_identifier (pointer_declarator "*local_20 [2]" * (array_declarator "local_20 [2]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = (undefined1 *)FUN_002ee780(0x10);" (assignment_expression "puVar4 = (undefined1 *)FUN_002ee780(0x10)" identifier = (cast_expression "(undefined1 *)FUN_002ee780(0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002ee780(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "uVar1 = *(undefined8 *)(param_1 + 0x608);" (assignment_expression "uVar1 = *(undefined8 *)(param_1 + 0x608)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x608)" * (cast_expression "(undefined8 *)(param_1 + 0x608)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x608)" ( (binary_expression "param_1 + 0x608" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = *(undefined1 *)(param_1 + 0x4c9);" (assignment_expression "*puVar4 = *(undefined1 *)(param_1 + 0x4c9)" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*(undefined1 *)(param_1 + 0x4c9)" * (cast_expression "(undefined1 *)(param_1 + 0x4c9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c9)" ( (binary_expression "param_1 + 0x4c9" identifier + number_literal) ))))) ;) (expression_statement "puVar4[1] = *(undefined1 *)(param_1 + 0x889);" (assignment_expression "puVar4[1] = *(undefined1 *)(param_1 + 0x889)" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined1 *)(param_1 + 0x889)" * (cast_expression "(undefined1 *)(param_1 + 0x889)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x889)" ( (binary_expression "param_1 + 0x889" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = FUN_001f9850(uVar1);" (assignment_expression "uVar3 = FUN_001f9850(uVar1)" identifier = (call_expression "FUN_001f9850(uVar1)" identifier (argument_list "(uVar1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(puVar4 + 4) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + 4) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + 4)" * (cast_expression "(undefined4 *)(puVar4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 4)" ( (binary_expression "puVar4 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar2 = *(undefined8 **)(param_1 + 0x92b8);" (assignment_expression "puVar2 = *(undefined8 **)(param_1 + 0x92b8)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 0x92b8)" * (cast_expression "(undefined8 **)(param_1 + 0x92b8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x92b8)" ( (binary_expression "param_1 + 0x92b8" identifier + number_literal) ))))) ;) (expression_statement "puVar4[8] = *(undefined1 *)(param_1 + 0x7801);" (assignment_expression "puVar4[8] = *(undefined1 *)(param_1 + 0x7801)" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = (pointer_expression "*(undefined1 *)(param_1 + 0x7801)" * (cast_expression "(undefined1 *)(param_1 + 0x7801)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7801)" ( (binary_expression "param_1 + 0x7801" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);" (assignment_expression "*(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0)" (pointer_expression "*(undefined4 *)(puVar4 + 0xc)" * (cast_expression "(undefined4 *)(puVar4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0xc)" ( (binary_expression "puVar4 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x91f0)" * (cast_expression "(undefined4 *)(param_1 + 0x91f0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x91f0)" ( (binary_expression "param_1 + 0x91f0" identifier + number_literal) ))))) ;) (if_statement "if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }" if (parenthesized_expression "(puVar2 != *(undefined8 **)(param_1 + 0x92c0))" ( (binary_expression "puVar2 != *(undefined8 **)(param_1 + 0x92c0)" identifier != (pointer_expression "*(undefined8 **)(param_1 + 0x92c0)" * (cast_expression "(undefined8 **)(param_1 + 0x92c0)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x92c0)" ( (binary_expression "param_1 + 0x92c0" identifier + number_literal) ))))) )) (compound_statement "{\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }" { (expression_statement "*puVar2 = puVar4;" (assignment_expression "*puVar2 = puVar4" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "*(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1" (pointer_expression "*(undefined8 **)(param_1 + 0x92b8)" * (cast_expression "(undefined8 **)(param_1 + 0x92b8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x92b8)" ( (binary_expression "param_1 + 0x92b8" identifier + number_literal) )))) = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "local_20[0] = puVar4;" (assignment_expression "local_20[0] = puVar4" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);" (call_expression "FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20)" identifier (argument_list "(param_1 + 0x92b0,puVar2,local_20)" ( (binary_expression "param_1 + 0x92b0" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( 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 * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 ( 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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (return_statement return ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_001f9ea0(long param_1)\n\n{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  undefined1 *puVar4;\n  undefined1 *local_20 [2];\n  \n  puVar4 = (undefined1 *)FUN_002ee780(0x10);\n  uVar1 = *(undefined8 *)(param_1 + 0x608);\n  *puVar4 = *(undefined1 *)(param_1 + 0x4c9);\n  puVar4[1] = *(undefined1 *)(param_1 + 0x889);\n                    \n  uVar3 = FUN_001f9850(uVar1);\n  *(undefined4 *)(puVar4 + 4) = uVar3;\n  puVar2 = *(undefined8 **)(param_1 + 0x92b8);\n  puVar4[8] = *(undefined1 *)(param_1 + 0x7801);\n  *(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);\n  if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }\n  local_20[0] = puVar4;\n  FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001f9ea0(long param_1)" (identifier "FUN_001f9ea0") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 *puVar2;\n  undefined4 uVar3;\n  undefined1 *puVar4;\n  undefined1 *local_20 [2];\n  \n  puVar4 = (undefined1 *)FUN_002ee780(0x10);\n  uVar1 = *(undefined8 *)(param_1 + 0x608);\n  *puVar4 = *(undefined1 *)(param_1 + 0x4c9);\n  puVar4[1] = *(undefined1 *)(param_1 + 0x889);\n                    \n  uVar3 = FUN_001f9850(uVar1);\n  *(undefined4 *)(puVar4 + 4) = uVar3;\n  puVar2 = *(undefined8 **)(param_1 + 0x92b8);\n  puVar4[8] = *(undefined1 *)(param_1 + 0x7801);\n  *(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);\n  if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }\n  local_20[0] = puVar4;\n  FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);\n  return;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined1 *puVar4;" (type_identifier "undefined1") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined1 *local_20 [2];" (type_identifier "undefined1") (pointer_declarator "*local_20 [2]" (* "*") (array_declarator "local_20 [2]" (identifier "local_20") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar4 = (undefined1 *)FUN_002ee780(0x10);" (assignment_expression "puVar4 = (undefined1 *)FUN_002ee780(0x10)" (identifier "puVar4") (= "=") (cast_expression "(undefined1 *)FUN_002ee780(0x10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002ee780(0x10)" (identifier "FUN_002ee780") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "uVar1 = *(undefined8 *)(param_1 + 0x608);" (assignment_expression "uVar1 = *(undefined8 *)(param_1 + 0x608)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x608)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x608)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x608)" (( "(") (binary_expression "param_1 + 0x608" (identifier "param_1") (+ "+") (number_literal "0x608")) () ")"))))) (; ";")) (expression_statement "*puVar4 = *(undefined1 *)(param_1 + 0x4c9);" (assignment_expression "*puVar4 = *(undefined1 *)(param_1 + 0x4c9)" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0x4c9)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x4c9)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c9)" (( "(") (binary_expression "param_1 + 0x4c9" (identifier "param_1") (+ "+") (number_literal "0x4c9")) () ")"))))) (; ";")) (expression_statement "puVar4[1] = *(undefined1 *)(param_1 + 0x889);" (assignment_expression "puVar4[1] = *(undefined1 *)(param_1 + 0x889)" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0x889)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x889)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x889)" (( "(") (binary_expression "param_1 + 0x889" (identifier "param_1") (+ "+") (number_literal "0x889")) () ")"))))) (; ";")) (expression_statement "uVar3 = FUN_001f9850(uVar1);" (assignment_expression "uVar3 = FUN_001f9850(uVar1)" (identifier "uVar3") (= "=") (call_expression "FUN_001f9850(uVar1)" (identifier "FUN_001f9850") (argument_list "(uVar1)" (( "(") (identifier "uVar1") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 4) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + 4) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 4)" (( "(") (binary_expression "puVar4 + 4" (identifier "puVar4") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar2 = *(undefined8 **)(param_1 + 0x92b8);" (assignment_expression "puVar2 = *(undefined8 **)(param_1 + 0x92b8)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 0x92b8)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x92b8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x92b8)" (( "(") (binary_expression "param_1 + 0x92b8" (identifier "param_1") (+ "+") (number_literal "0x92b8")) () ")"))))) (; ";")) (expression_statement "puVar4[8] = *(undefined1 *)(param_1 + 0x7801);" (assignment_expression "puVar4[8] = *(undefined1 *)(param_1 + 0x7801)" (subscript_expression "puVar4[8]" (identifier "puVar4") ([ "[") (number_literal "8") (] "]")) (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0x7801)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x7801)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x7801)" (( "(") (binary_expression "param_1 + 0x7801" (identifier "param_1") (+ "+") (number_literal "0x7801")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);" (assignment_expression "*(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0)" (pointer_expression "*(undefined4 *)(puVar4 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 0xc)" (( "(") (binary_expression "puVar4 + 0xc" (identifier "puVar4") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x91f0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x91f0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x91f0)" (( "(") (binary_expression "param_1 + 0x91f0" (identifier "param_1") (+ "+") (number_literal "0x91f0")) () ")"))))) (; ";")) (if_statement "if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }" (if "if") (parenthesized_expression "(puVar2 != *(undefined8 **)(param_1 + 0x92c0))" (( "(") (binary_expression "puVar2 != *(undefined8 **)(param_1 + 0x92c0)" (identifier "puVar2") (!= "!=") (pointer_expression "*(undefined8 **)(param_1 + 0x92c0)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x92c0)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x92c0)" (( "(") (binary_expression "param_1 + 0x92c0" (identifier "param_1") (+ "+") (number_literal "0x92c0")) () ")"))))) () ")")) (compound_statement "{\n    *puVar2 = puVar4;\n    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;\n    return;\n  }" ({ "{") (expression_statement "*puVar2 = puVar4;" (assignment_expression "*puVar2 = puVar4" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1" (pointer_expression "*(undefined8 **)(param_1 + 0x92b8)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x92b8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x92b8)" (( "(") (binary_expression "param_1 + 0x92b8" (identifier "param_1") (+ "+") (number_literal "0x92b8")) () ")")))) (= "=") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_20[0] = puVar4;" (assignment_expression "local_20[0] = puVar4" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);" (call_expression "FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20)" (identifier "FUN_00205eb0") (argument_list "(param_1 + 0x92b0,puVar2,local_20)" (( "(") (binary_expression "param_1 + 0x92b0" (identifier "param_1") (+ "+") (number_literal "0x92b0")) (, ",") (identifier "puVar2") (, ",") (identifier "local_20") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void parse_push_state(General_options * this, char * param_1, char *
   param_2, Command_line * param_3) */

void __thiscall
var_3::type_1::function_1
          (type_1 *this,char *param_1,char *param_2,type_2 *param_3)

{
  char *arg;
  type_3 __position;
  type_4 OVar1;
  type_5 *pPVar2;
  type_5 *posdep;
  
  pPVar2 = (type_5 *)var_1(0x10);
  arg = (this->format_).value;
  pPVar2->as_needed_ = (this->as_needed_).value;
  pPVar2->Bdynamic_ = (this->Bdynamic_).value;
                    /* try { // try from 001f9ed1 to 001f9ed5 has its CatchHandler @ 001f9f38 */
  OVar1 = var_2(arg);
  pPVar2->format_enum_ = OVar1;
  __position._M_current =
       (this->options_stack_).
       super__Vector_base<var_3::type_5*,var_4::allocator<var_3::type_5*>var_5>
       ._M_impl._M_finish;
  pPVar2->whole_archive_ = (this->whole_archive_).value;
  pPVar2->incremental_disposition_ = this->incremental_disposition_;
  if (__position._M_current !=
      (this->options_stack_).
      super__Vector_base<var_3::type_5*,var_4::allocator<var_3::type_5*>var_5>
      ._M_impl._M_end_of_storage) {
    *__position._M_current = pPVar2;
    (this->options_stack_).
    super__Vector_base<var_3::type_5*,var_4::allocator<var_3::type_5*>var_5>
    ._M_impl._M_finish = __position._M_current + 1;
    return;
  }
  posdep = pPVar2;
  std::vector<var_3::type_5*,var_4::allocator<var_3::type_5*>var_5>
  ::_M_realloc_insert<var_3::type_5*var_6&>
            (&this->options_stack_,__position,&posdep);
  return;
}


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

void MASKED(long param_1)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  undefined4 uVar3;
  undefined1 *puVar4;
  undefined1 *local_20 [2];
  
  puVar4 = (undefined1 *)FUN_002ee780(0x10);
  uVar1 = *(undefined8 *)(param_1 + 0x608);
  *puVar4 = *(undefined1 *)(param_1 + 0x4c9);
  puVar4[1] = *(undefined1 *)(param_1 + 0x889);
                    /* try { // try from 001f9ed1 to 001f9ed5 has its CatchHandler @ 001f9f38 */
  uVar3 = FUN_001f9850(uVar1);
  *(undefined4 *)(puVar4 + 4) = uVar3;
  puVar2 = *(undefined8 **)(param_1 + 0x92b8);
  puVar4[8] = *(undefined1 *)(param_1 + 0x7801);
  *(undefined4 *)(puVar4 + 0xc) = *(undefined4 *)(param_1 + 0x91f0);
  if (puVar2 != *(undefined8 **)(param_1 + 0x92c0)) {
    *puVar2 = puVar4;
    *(undefined8 **)(param_1 + 0x92b8) = puVar2 + 1;
    return;
  }
  local_20[0] = puVar4;
  FUN_00205eb0(param_1 + 0x92b0,puVar2,local_20);
  return;
}

