
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* 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_2,char *param_3,Command_line *param_4)

{
  iterator __position;
  Position_dependent_options *pPVar1;
  Object_format OVar2;
  Position_dependent_options *posdep;
  
  pPVar1 = (Position_dependent_options *)operator_new(0x10);
  pPVar1->as_needed_ = (this->as_needed_).value;
  pPVar1->Bdynamic_ = (this->Bdynamic_).value;
                    /* try { // try from 002b629e to 002b62a2 has its CatchHandler @ 002b62ff */
  OVar2 = string_to_object_format((this->format_).value);
  pPVar1->format_enum_ = OVar2;
  pPVar1->whole_archive_ = (this->whole_archive_).value;
  pPVar1->incremental_disposition_ = this->incremental_disposition_;
  __position._M_current =
       (this->options_stack_).
       super__Vector_base<gold::Position_dependent_options*,_std::allocator<gold::Position_dependent_options*>_>
       ._M_impl._M_finish;
  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 = pPVar1;
    (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 = pPVar1;
  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;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_002b6260(int param_1)

{
  undefined4 *puVar1;
  undefined1 *puVar2;
  undefined4 uVar3;
  undefined1 *local_20 [4];
  
  puVar2 = (undefined1 *)FUN_003ac4d0(0x10);
  *puVar2 = *(undefined1 *)(param_1 + 0x2f5);
  puVar2[1] = *(undefined1 *)(param_1 + 0x549);
                    /* try { // try from 002b629e to 002b62a2 has its CatchHandler @ 002b62ff */
  uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));
  *(undefined4 *)(puVar2 + 4) = uVar3;
  puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);
  *(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);
  puVar1 = *(undefined4 **)(param_1 + 0x5a80);
  if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {
    *puVar1 = puVar2;
    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;
    return;
  }
  local_20[0] = puVar2;
  FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);
  return;
}


CALL 0x00074f02
ADD EAX,0x333d9b
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
MOV EBX,EAX
SUB ESP,0x38
MOV ESI,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x2c],EAX
PUSH 0x10
CALL 0x003ac4d0
MOV EDI,EAX
MOVZX EAX,byte ptr [ESI + 0x2f5]
MOV byte ptr [EDI],AL
MOVZX EAX,byte ptr [ESI + 0x549]
MOV byte ptr [EDI + 0x1],AL
POP EDX
PUSH dword ptr [ESI + 0x3b8]
CALL 0x002b5ab0
MOV dword ptr [EDI + 0x4],EAX
MOVZX EAX,byte ptr [ESI + 0x4a2d]
ADD ESP,0x10
MOV dword ptr [EBP + -0x1c],EDI
MOV byte ptr [EDI + 0x8],AL
MOV EAX,dword ptr [ESI + 0x5a14]
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESI + 0x5a80]
CMP EAX,dword ptr [ESI + 0x5a84]
JZ 0x002b62e0
MOV dword ptr [EAX],EDI
ADD EAX,0x4
MOV dword ptr [ESI + 0x5a80],EAX
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
LEA EDX,[EBP + -0x1c]
ADD ESI,0x5a7c
PUSH EDX
PUSH EAX
PUSH ESI
CALL 0x002c2600
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_002b6260(int param_1)\n\n{\n  undefined4 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  undefined1 *local_20 [4];\n  \n  puVar2 = (undefined1 *)FUN_003ac4d0(0x10);\n  *puVar2 = *(undefined1 *)(param_1 + 0x2f5);\n  puVar2[1] = *(undefined1 *)(param_1 + 0x549);\n                    /* try { // try from 002b629e to 002b62a2 has its CatchHandler @ 002b62ff */\n  uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));\n  *(undefined4 *)(puVar2 + 4) = uVar3;\n  puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);\n  *(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);\n  puVar1 = *(undefined4 **)(param_1 + 0x5a80);\n  if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }\n  local_20[0] = puVar2;\n  FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);\n  return;\n}\n\n" comment (function_definition "void FUN_002b6260(int param_1)\n\n{\n  undefined4 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  undefined1 *local_20 [4];\n  \n  puVar2 = (undefined1 *)FUN_003ac4d0(0x10);\n  *puVar2 = *(undefined1 *)(param_1 + 0x2f5);\n  puVar2[1] = *(undefined1 *)(param_1 + 0x549);\n                    /* try { // try from 002b629e to 002b62a2 has its CatchHandler @ 002b62ff */\n  uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));\n  *(undefined4 *)(puVar2 + 4) = uVar3;\n  puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);\n  *(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);\n  puVar1 = *(undefined4 **)(param_1 + 0x5a80);\n  if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }\n  local_20[0] = puVar2;\n  FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);\n  return;\n}" primitive_type (function_declarator "FUN_002b6260(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  undefined1 *local_20 [4];\n  \n  puVar2 = (undefined1 *)FUN_003ac4d0(0x10);\n  *puVar2 = *(undefined1 *)(param_1 + 0x2f5);\n  puVar2[1] = *(undefined1 *)(param_1 + 0x549);\n                    /* try { // try from 002b629e to 002b62a2 has its CatchHandler @ 002b62ff */\n  uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));\n  *(undefined4 *)(puVar2 + 4) = uVar3;\n  puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);\n  *(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);\n  puVar1 = *(undefined4 **)(param_1 + 0x5a80);\n  if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }\n  local_20[0] = puVar2;\n  FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined1 *local_20 [4];" type_identifier (pointer_declarator "*local_20 [4]" * (array_declarator "local_20 [4]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = (undefined1 *)FUN_003ac4d0(0x10);" (assignment_expression "puVar2 = (undefined1 *)FUN_003ac4d0(0x10)" identifier = (cast_expression "(undefined1 *)FUN_003ac4d0(0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003ac4d0(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*puVar2 = *(undefined1 *)(param_1 + 0x2f5);" (assignment_expression "*puVar2 = *(undefined1 *)(param_1 + 0x2f5)" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*(undefined1 *)(param_1 + 0x2f5)" * (cast_expression "(undefined1 *)(param_1 + 0x2f5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2f5)" ( (binary_expression "param_1 + 0x2f5" identifier + number_literal) ))))) ;) (expression_statement "puVar2[1] = *(undefined1 *)(param_1 + 0x549);" (assignment_expression "puVar2[1] = *(undefined1 *)(param_1 + 0x549)" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined1 *)(param_1 + 0x549)" * (cast_expression "(undefined1 *)(param_1 + 0x549)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x549)" ( (binary_expression "param_1 + 0x549" identifier + number_literal) ))))) ;) comment (expression_statement "uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));" (assignment_expression "uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8))" identifier = (call_expression "FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x3b8))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x3b8)" * (cast_expression "(undefined4 *)(param_1 + 0x3b8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3b8)" ( (binary_expression "param_1 + 0x3b8" identifier + number_literal) )))) )))) ;) (expression_statement "*(undefined4 *)(puVar2 + 4) = uVar3;" (assignment_expression "*(undefined4 *)(puVar2 + 4) = uVar3" (pointer_expression "*(undefined4 *)(puVar2 + 4)" * (cast_expression "(undefined4 *)(puVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);" (assignment_expression "puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d)" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = (pointer_expression "*(undefined1 *)(param_1 + 0x4a2d)" * (cast_expression "(undefined1 *)(param_1 + 0x4a2d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4a2d)" ( (binary_expression "param_1 + 0x4a2d" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);" (assignment_expression "*(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14)" (pointer_expression "*(undefined4 *)(puVar2 + 0xc)" * (cast_expression "(undefined4 *)(puVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0xc)" ( (binary_expression "puVar2 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x5a14)" * (cast_expression "(undefined4 *)(param_1 + 0x5a14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5a14)" ( (binary_expression "param_1 + 0x5a14" identifier + number_literal) ))))) ;) (expression_statement "puVar1 = *(undefined4 **)(param_1 + 0x5a80);" (assignment_expression "puVar1 = *(undefined4 **)(param_1 + 0x5a80)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x5a80)" * (cast_expression "(undefined4 **)(param_1 + 0x5a80)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x5a80)" ( (binary_expression "param_1 + 0x5a80" identifier + number_literal) ))))) ;) (if_statement "if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }" if (parenthesized_expression "(puVar1 != *(undefined4 **)(param_1 + 0x5a84))" ( (binary_expression "puVar1 != *(undefined4 **)(param_1 + 0x5a84)" identifier != (pointer_expression "*(undefined4 **)(param_1 + 0x5a84)" * (cast_expression "(undefined4 **)(param_1 + 0x5a84)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x5a84)" ( (binary_expression "param_1 + 0x5a84" identifier + number_literal) ))))) )) (compound_statement "{\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }" { (expression_statement "*puVar1 = puVar2;" (assignment_expression "*puVar1 = puVar2" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "*(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;" (assignment_expression "*(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1" (pointer_expression "*(undefined4 **)(param_1 + 0x5a80)" * (cast_expression "(undefined4 **)(param_1 + 0x5a80)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x5a80)" ( (binary_expression "param_1 + 0x5a80" identifier + number_literal) )))) = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "local_20[0] = puVar2;" (assignment_expression "local_20[0] = puVar2" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);" (call_expression "FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20)" identifier (argument_list "(param_1 + 0x5a7c,puVar1,local_20)" ( (binary_expression "param_1 + 0x5a7c" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* 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_2,char *param_3,Command_line *param_4)\n\n{\n  iterator __position;\n  Position_dependent_options *pPVar1;\n  Object_format OVar2;\n  Position_dependent_options *posdep;\n  \n  pPVar1 = (Position_dependent_options *)operator_new(0x10);\n  pPVar1->as_needed_ = (this->as_needed_).value;\n  pPVar1->Bdynamic_ = (this->Bdynamic_).value;\n                    /* try { // try from 002b629e to 002b62a2 has its CatchHandler @ 002b62ff */\n  OVar2 = string_to_object_format((this->format_).value);\n  pPVar1->format_enum_ = OVar2;\n  pPVar1->whole_archive_ = (this->whole_archive_).value;\n  pPVar1->incremental_disposition_ = this->incremental_disposition_;\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  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 = pPVar1;\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 = pPVar1;\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 comment (function_definition "void __thiscall\ngold::General_options::parse_push_state\n          (General_options *this,char *param_2,char *param_3,Command_line *param_4)\n\n{\n  iterator __position;\n  Position_dependent_options *pPVar1;\n  Object_format OVar2;\n  Position_dependent_options *posdep;\n  \n  pPVar1 = (Position_dependent_options *)operator_new(0x10);\n  pPVar1->as_needed_ = (this->as_needed_).value;\n  pPVar1->Bdynamic_ = (this->Bdynamic_).value;\n                    /* try { // try from 002b629e to 002b62a2 has its CatchHandler @ 002b62ff */\n  OVar2 = string_to_object_format((this->format_).value);\n  pPVar1->format_enum_ = OVar2;\n  pPVar1->whole_archive_ = (this->whole_archive_).value;\n  pPVar1->incremental_disposition_ = this->incremental_disposition_;\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  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 = pPVar1;\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 = pPVar1;\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_2,char *param_3,Command_line *param_4)" identifier (parameter_list "(General_options *this,char *param_2,char *param_3,Command_line *param_4)" ( (parameter_declaration "General_options *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "Command_line *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  iterator __position;\n  Position_dependent_options *pPVar1;\n  Object_format OVar2;\n  Position_dependent_options *posdep;\n  \n  pPVar1 = (Position_dependent_options *)operator_new(0x10);\n  pPVar1->as_needed_ = (this->as_needed_).value;\n  pPVar1->Bdynamic_ = (this->Bdynamic_).value;\n                    /* try { // try from 002b629e to 002b62a2 has its CatchHandler @ 002b62ff */\n  OVar2 = string_to_object_format((this->format_).value);\n  pPVar1->format_enum_ = OVar2;\n  pPVar1->whole_archive_ = (this->whole_archive_).value;\n  pPVar1->incremental_disposition_ = this->incremental_disposition_;\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  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 = pPVar1;\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 = pPVar1;\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 "iterator __position;" type_identifier identifier ;) (declaration "Position_dependent_options *pPVar1;" type_identifier (pointer_declarator "*pPVar1" * identifier) ;) (declaration "Object_format OVar2;" type_identifier identifier ;) (declaration "Position_dependent_options *posdep;" type_identifier (pointer_declarator "*posdep" * identifier) ;) (expression_statement "pPVar1 = (Position_dependent_options *)operator_new(0x10);" (assignment_expression "pPVar1 = (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 "pPVar1->as_needed_ = (this->as_needed_).value;" (assignment_expression "pPVar1->as_needed_ = (this->as_needed_).value" (field_expression "pPVar1->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 "pPVar1->Bdynamic_ = (this->Bdynamic_).value;" (assignment_expression "pPVar1->Bdynamic_ = (this->Bdynamic_).value" (field_expression "pPVar1->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 "OVar2 = string_to_object_format((this->format_).value);" (assignment_expression "OVar2 = string_to_object_format((this->format_).value)" identifier = (call_expression "string_to_object_format((this->format_).value)" identifier (argument_list "((this->format_).value)" ( (field_expression "(this->format_).value" (parenthesized_expression "(this->format_)" ( (field_expression "this->format_" identifier -> field_identifier) )) . field_identifier) )))) ;) (expression_statement "pPVar1->format_enum_ = OVar2;" (assignment_expression "pPVar1->format_enum_ = OVar2" (field_expression "pPVar1->format_enum_" identifier -> field_identifier) = identifier) ;) (expression_statement "pPVar1->whole_archive_ = (this->whole_archive_).value;" (assignment_expression "pPVar1->whole_archive_ = (this->whole_archive_).value" (field_expression "pPVar1->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 "pPVar1->incremental_disposition_ = this->incremental_disposition_;" (assignment_expression "pPVar1->incremental_disposition_ = this->incremental_disposition_" (field_expression "pPVar1->incremental_disposition_" identifier -> field_identifier) = (field_expression "this->incremental_disposition_" identifier -> field_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) ;) (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 = pPVar1;\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 = pPVar1;\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 = pPVar1;" (assignment_expression "*__position._M_current = pPVar1" (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 = pPVar1;" (assignment_expression "posdep = pPVar1" 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_002b6260(int param_1)\n\n{\n  undefined4 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  undefined1 *local_20 [4];\n  \n  puVar2 = (undefined1 *)FUN_003ac4d0(0x10);\n  *puVar2 = *(undefined1 *)(param_1 + 0x2f5);\n  puVar2[1] = *(undefined1 *)(param_1 + 0x549);\n                    \n  uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));\n  *(undefined4 *)(puVar2 + 4) = uVar3;\n  puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);\n  *(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);\n  puVar1 = *(undefined4 **)(param_1 + 0x5a80);\n  if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }\n  local_20[0] = puVar2;\n  FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);\n  return;\n}\n\n" (function_definition "void FUN_002b6260(int param_1)\n\n{\n  undefined4 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  undefined1 *local_20 [4];\n  \n  puVar2 = (undefined1 *)FUN_003ac4d0(0x10);\n  *puVar2 = *(undefined1 *)(param_1 + 0x2f5);\n  puVar2[1] = *(undefined1 *)(param_1 + 0x549);\n                    \n  uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));\n  *(undefined4 *)(puVar2 + 4) = uVar3;\n  puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);\n  *(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);\n  puVar1 = *(undefined4 **)(param_1 + 0x5a80);\n  if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }\n  local_20[0] = puVar2;\n  FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);\n  return;\n}" primitive_type (function_declarator "FUN_002b6260(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  undefined1 *local_20 [4];\n  \n  puVar2 = (undefined1 *)FUN_003ac4d0(0x10);\n  *puVar2 = *(undefined1 *)(param_1 + 0x2f5);\n  puVar2[1] = *(undefined1 *)(param_1 + 0x549);\n                    \n  uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));\n  *(undefined4 *)(puVar2 + 4) = uVar3;\n  puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);\n  *(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);\n  puVar1 = *(undefined4 **)(param_1 + 0x5a80);\n  if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }\n  local_20[0] = puVar2;\n  FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined1 *local_20 [4];" type_identifier (pointer_declarator "*local_20 [4]" * (array_declarator "local_20 [4]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = (undefined1 *)FUN_003ac4d0(0x10);" (assignment_expression "puVar2 = (undefined1 *)FUN_003ac4d0(0x10)" identifier = (cast_expression "(undefined1 *)FUN_003ac4d0(0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003ac4d0(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*puVar2 = *(undefined1 *)(param_1 + 0x2f5);" (assignment_expression "*puVar2 = *(undefined1 *)(param_1 + 0x2f5)" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*(undefined1 *)(param_1 + 0x2f5)" * (cast_expression "(undefined1 *)(param_1 + 0x2f5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2f5)" ( (binary_expression "param_1 + 0x2f5" identifier + number_literal) ))))) ;) (expression_statement "puVar2[1] = *(undefined1 *)(param_1 + 0x549);" (assignment_expression "puVar2[1] = *(undefined1 *)(param_1 + 0x549)" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined1 *)(param_1 + 0x549)" * (cast_expression "(undefined1 *)(param_1 + 0x549)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x549)" ( (binary_expression "param_1 + 0x549" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));" (assignment_expression "uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8))" identifier = (call_expression "FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x3b8))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x3b8)" * (cast_expression "(undefined4 *)(param_1 + 0x3b8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3b8)" ( (binary_expression "param_1 + 0x3b8" identifier + number_literal) )))) )))) ;) (expression_statement "*(undefined4 *)(puVar2 + 4) = uVar3;" (assignment_expression "*(undefined4 *)(puVar2 + 4) = uVar3" (pointer_expression "*(undefined4 *)(puVar2 + 4)" * (cast_expression "(undefined4 *)(puVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);" (assignment_expression "puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d)" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = (pointer_expression "*(undefined1 *)(param_1 + 0x4a2d)" * (cast_expression "(undefined1 *)(param_1 + 0x4a2d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4a2d)" ( (binary_expression "param_1 + 0x4a2d" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);" (assignment_expression "*(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14)" (pointer_expression "*(undefined4 *)(puVar2 + 0xc)" * (cast_expression "(undefined4 *)(puVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0xc)" ( (binary_expression "puVar2 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x5a14)" * (cast_expression "(undefined4 *)(param_1 + 0x5a14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5a14)" ( (binary_expression "param_1 + 0x5a14" identifier + number_literal) ))))) ;) (expression_statement "puVar1 = *(undefined4 **)(param_1 + 0x5a80);" (assignment_expression "puVar1 = *(undefined4 **)(param_1 + 0x5a80)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x5a80)" * (cast_expression "(undefined4 **)(param_1 + 0x5a80)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x5a80)" ( (binary_expression "param_1 + 0x5a80" identifier + number_literal) ))))) ;) (if_statement "if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }" if (parenthesized_expression "(puVar1 != *(undefined4 **)(param_1 + 0x5a84))" ( (binary_expression "puVar1 != *(undefined4 **)(param_1 + 0x5a84)" identifier != (pointer_expression "*(undefined4 **)(param_1 + 0x5a84)" * (cast_expression "(undefined4 **)(param_1 + 0x5a84)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x5a84)" ( (binary_expression "param_1 + 0x5a84" identifier + number_literal) ))))) )) (compound_statement "{\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }" { (expression_statement "*puVar1 = puVar2;" (assignment_expression "*puVar1 = puVar2" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "*(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;" (assignment_expression "*(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1" (pointer_expression "*(undefined4 **)(param_1 + 0x5a80)" * (cast_expression "(undefined4 **)(param_1 + 0x5a80)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x5a80)" ( (binary_expression "param_1 + 0x5a80" identifier + number_literal) )))) = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "local_20[0] = puVar2;" (assignment_expression "local_20[0] = puVar2" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);" (call_expression "FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20)" identifier (argument_list "(param_1 + 0x5a7c,puVar1,local_20)" ( (binary_expression "param_1 + 0x5a7c" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 (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 ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (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) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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_002b6260(int param_1)\n\n{\n  undefined4 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  undefined1 *local_20 [4];\n  \n  puVar2 = (undefined1 *)FUN_003ac4d0(0x10);\n  *puVar2 = *(undefined1 *)(param_1 + 0x2f5);\n  puVar2[1] = *(undefined1 *)(param_1 + 0x549);\n                    \n  uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));\n  *(undefined4 *)(puVar2 + 4) = uVar3;\n  puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);\n  *(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);\n  puVar1 = *(undefined4 **)(param_1 + 0x5a80);\n  if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }\n  local_20[0] = puVar2;\n  FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002b6260(int param_1)" (identifier "FUN_002b6260") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined1 *puVar2;\n  undefined4 uVar3;\n  undefined1 *local_20 [4];\n  \n  puVar2 = (undefined1 *)FUN_003ac4d0(0x10);\n  *puVar2 = *(undefined1 *)(param_1 + 0x2f5);\n  puVar2[1] = *(undefined1 *)(param_1 + 0x549);\n                    \n  uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));\n  *(undefined4 *)(puVar2 + 4) = uVar3;\n  puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);\n  *(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);\n  puVar1 = *(undefined4 **)(param_1 + 0x5a80);\n  if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }\n  local_20[0] = puVar2;\n  FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined1 *puVar2;" (type_identifier "undefined1") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined1 *local_20 [4];" (type_identifier "undefined1") (pointer_declarator "*local_20 [4]" (* "*") (array_declarator "local_20 [4]" (identifier "local_20") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar2 = (undefined1 *)FUN_003ac4d0(0x10);" (assignment_expression "puVar2 = (undefined1 *)FUN_003ac4d0(0x10)" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)FUN_003ac4d0(0x10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_003ac4d0(0x10)" (identifier "FUN_003ac4d0") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "*puVar2 = *(undefined1 *)(param_1 + 0x2f5);" (assignment_expression "*puVar2 = *(undefined1 *)(param_1 + 0x2f5)" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0x2f5)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x2f5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2f5)" (( "(") (binary_expression "param_1 + 0x2f5" (identifier "param_1") (+ "+") (number_literal "0x2f5")) () ")"))))) (; ";")) (expression_statement "puVar2[1] = *(undefined1 *)(param_1 + 0x549);" (assignment_expression "puVar2[1] = *(undefined1 *)(param_1 + 0x549)" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0x549)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x549)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x549)" (( "(") (binary_expression "param_1 + 0x549" (identifier "param_1") (+ "+") (number_literal "0x549")) () ")"))))) (; ";")) (expression_statement "uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));" (assignment_expression "uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8))" (identifier "uVar3") (= "=") (call_expression "FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8))" (identifier "FUN_002b5ab0") (argument_list "(*(undefined4 *)(param_1 + 0x3b8))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x3b8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x3b8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3b8)" (( "(") (binary_expression "param_1 + 0x3b8" (identifier "param_1") (+ "+") (number_literal "0x3b8")) () ")")))) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 4) = uVar3;" (assignment_expression "*(undefined4 *)(puVar2 + 4) = uVar3" (pointer_expression "*(undefined4 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);" (assignment_expression "puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d)" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0x4a2d)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x4a2d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4a2d)" (( "(") (binary_expression "param_1 + 0x4a2d" (identifier "param_1") (+ "+") (number_literal "0x4a2d")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);" (assignment_expression "*(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14)" (pointer_expression "*(undefined4 *)(puVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0xc)" (( "(") (binary_expression "puVar2 + 0xc" (identifier "puVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x5a14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x5a14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5a14)" (( "(") (binary_expression "param_1 + 0x5a14" (identifier "param_1") (+ "+") (number_literal "0x5a14")) () ")"))))) (; ";")) (expression_statement "puVar1 = *(undefined4 **)(param_1 + 0x5a80);" (assignment_expression "puVar1 = *(undefined4 **)(param_1 + 0x5a80)" (identifier "puVar1") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 0x5a80)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x5a80)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x5a80)" (( "(") (binary_expression "param_1 + 0x5a80" (identifier "param_1") (+ "+") (number_literal "0x5a80")) () ")"))))) (; ";")) (if_statement "if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }" (if "if") (parenthesized_expression "(puVar1 != *(undefined4 **)(param_1 + 0x5a84))" (( "(") (binary_expression "puVar1 != *(undefined4 **)(param_1 + 0x5a84)" (identifier "puVar1") (!= "!=") (pointer_expression "*(undefined4 **)(param_1 + 0x5a84)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x5a84)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x5a84)" (( "(") (binary_expression "param_1 + 0x5a84" (identifier "param_1") (+ "+") (number_literal "0x5a84")) () ")"))))) () ")")) (compound_statement "{\n    *puVar1 = puVar2;\n    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;\n    return;\n  }" ({ "{") (expression_statement "*puVar1 = puVar2;" (assignment_expression "*puVar1 = puVar2" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;" (assignment_expression "*(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1" (pointer_expression "*(undefined4 **)(param_1 + 0x5a80)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x5a80)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x5a80)" (( "(") (binary_expression "param_1 + 0x5a80" (identifier "param_1") (+ "+") (number_literal "0x5a80")) () ")")))) (= "=") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_20[0] = puVar2;" (assignment_expression "local_20[0] = puVar2" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);" (call_expression "FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20)" (identifier "FUN_002c2600") (argument_list "(param_1 + 0x5a7c,puVar1,local_20)" (( "(") (binary_expression "param_1 + 0x5a7c" (identifier "param_1") (+ "+") (number_literal "0x5a7c")) (, ",") (identifier "puVar1") (, ",") (identifier "local_20") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* 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_2,char *param_3,type_2 *param_4)

{
  type_3 __position;
  type_4 *pPVar1;
  type_5 OVar2;
  type_4 *posdep;
  
  pPVar1 = (type_4 *)var_1(0x10);
  pPVar1->as_needed_ = (this->as_needed_).value;
  pPVar1->Bdynamic_ = (this->Bdynamic_).value;
                    /* try { // try from 002b629e to 002b62a2 has its CatchHandler @ 002b62ff */
  OVar2 = var_2((this->format_).value);
  pPVar1->format_enum_ = OVar2;
  pPVar1->whole_archive_ = (this->whole_archive_).value;
  pPVar1->incremental_disposition_ = this->incremental_disposition_;
  __position._M_current =
       (this->options_stack_).
       super__Vector_base<var_3::type_4*,var_4::allocator<var_3::type_4*>var_5>
       ._M_impl._M_finish;
  if (__position._M_current !=
      (this->options_stack_).
      super__Vector_base<var_3::type_4*,var_4::allocator<var_3::type_4*>var_5>
      ._M_impl._M_end_of_storage) {
    *__position._M_current = pPVar1;
    (this->options_stack_).
    super__Vector_base<var_3::type_4*,var_4::allocator<var_3::type_4*>var_5>
    ._M_impl._M_finish = __position._M_current + 1;
    return;
  }
  posdep = pPVar1;
  std::vector<var_3::type_4*,var_4::allocator<var_3::type_4*>var_5>
  ::_M_realloc_insert<var_3::type_4*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: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator 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: (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: (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 (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (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))))))) (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))))))) (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))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(int param_1)

{
  undefined4 *puVar1;
  undefined1 *puVar2;
  undefined4 uVar3;
  undefined1 *local_20 [4];
  
  puVar2 = (undefined1 *)FUN_003ac4d0(0x10);
  *puVar2 = *(undefined1 *)(param_1 + 0x2f5);
  puVar2[1] = *(undefined1 *)(param_1 + 0x549);
                    /* try { // try from 002b629e to 002b62a2 has its CatchHandler @ 002b62ff */
  uVar3 = FUN_002b5ab0(*(undefined4 *)(param_1 + 0x3b8));
  *(undefined4 *)(puVar2 + 4) = uVar3;
  puVar2[8] = *(undefined1 *)(param_1 + 0x4a2d);
  *(undefined4 *)(puVar2 + 0xc) = *(undefined4 *)(param_1 + 0x5a14);
  puVar1 = *(undefined4 **)(param_1 + 0x5a80);
  if (puVar1 != *(undefined4 **)(param_1 + 0x5a84)) {
    *puVar1 = puVar2;
    *(undefined4 **)(param_1 + 0x5a80) = puVar1 + 1;
    return;
  }
  local_20[0] = puVar2;
  FUN_002c2600(param_1 + 0x5a7c,puVar1,local_20);
  return;
}

