
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: void do_supported_bfd_names(Target_selector * this,
   vector<char_const*,_std::allocator<char_const*>_> * names) */

void __thiscall
gold::Target_selector::do_supported_bfd_names
          (Target_selector *this,vector<char_const*,_std::allocator<char_const*>_> *names)

{
  iterator __position;
  
  if (this->bfd_name_ == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/target-select.h",0xb6,"do_supported_bfd_names");
  }
  __position._M_current =
       (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish;
  if (__position._M_current !=
      (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.
      _M_end_of_storage) {
    *__position._M_current = this->bfd_name_;
    (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =
         __position._M_current + 1;
    return;
  }
  std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>
            (names,__position,&this->bfd_name_);
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm1 FUN_0018ff80(undefined4 param_1,int param_2,int param_3)

{
  int *piVar1;
  
  if (*(int *)(param_2 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);
  }
  piVar1 = *(int **)(param_3 + 4);
  if (piVar1 != *(int **)(param_3 + 8)) {
    *piVar1 = *(int *)(param_2 + 0x10);
    *(int **)(param_3 + 4) = piVar1 + 1;
    return;
  }
  FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);
  return;
}


PUSH ESI
PUSH EBX
CALL 0x00035840
ADD EBX,0x1ff079
SUB ESP,0x4
MOV ESI,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [ESI + 0x10]
TEST ECX,ECX
JZ 0x0018ffcf
MOV EAX,dword ptr [EDX + 0x4]
CMP EAX,dword ptr [EDX + 0x8]
JZ 0x0018ffb8
MOV dword ptr [EAX],ECX
ADD EAX,0x4
MOV dword ptr [EDX + 0x4],EAX
ADD ESP,0x4
POP EBX
POP ESI
RET
SUB ESP,0x4
ADD ESI,0x10
PUSH ESI
PUSH EAX
PUSH EDX
CALL 0x0018fdc0
ADD ESP,0x10
ADD ESP,0x4
POP EBX
POP ESI
RET
LEA EDX,[EBX + 0xfff0b504]
PUSH EAX
PUSH EDX
LEA EDX,[EBX + 0xfff0b4ac]
PUSH 0xb6
PUSH EDX
CALL 0x00069d00
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm1 FUN_0018ff80(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  \n  if (*(int *)(param_2 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }\n  piVar1 = *(int **)(param_3 + 4);\n  if (piVar1 != *(int **)(param_3 + 8)) {\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }\n  FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);\n  return;\n}\n\n" comment (function_definition "void __regparm1 FUN_0018ff80(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  \n  if (*(int *)(param_2 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }\n  piVar1 = *(int **)(param_3 + 4);\n  if (piVar1 != *(int **)(param_3 + 8)) {\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }\n  FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);\n  return;\n}" primitive_type (ERROR "__regparm1" identifier) (function_declarator "FUN_0018ff80(undefined4 param_1,int param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  \n  if (*(int *)(param_2 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }\n  piVar1 = *(int **)(param_3 + 4);\n  if (piVar1 != *(int **)(param_3 + 8)) {\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }\n  FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (if_statement "if (*(int *)(param_2 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }" if (parenthesized_expression "(*(int *)(param_2 + 0x10) == 0)" ( (binary_expression "*(int *)(param_2 + 0x10) == 0" (pointer_expression "*(int *)(param_2 + 0x10)" * (cast_expression "(int *)(param_2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }" { comment (expression_statement "FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);" (call_expression "FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1)" identifier (argument_list "("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1)" ( (string_literal ""../../gold/target-select.h"" " string_content ") , number_literal , (string_literal ""do_supported_bfd_names"" " string_content ") , identifier ))) ;) })) (expression_statement "piVar1 = *(int **)(param_3 + 4);" (assignment_expression "piVar1 = *(int **)(param_3 + 4)" identifier = (pointer_expression "*(int **)(param_3 + 4)" * (cast_expression "(int **)(param_3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (if_statement "if (piVar1 != *(int **)(param_3 + 8)) {\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }" if (parenthesized_expression "(piVar1 != *(int **)(param_3 + 8))" ( (binary_expression "piVar1 != *(int **)(param_3 + 8)" identifier != (pointer_expression "*(int **)(param_3 + 8)" * (cast_expression "(int **)(param_3 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }" { (expression_statement "*piVar1 = *(int *)(param_2 + 0x10);" (assignment_expression "*piVar1 = *(int *)(param_2 + 0x10)" (pointer_expression "*piVar1" * identifier) = (pointer_expression "*(int *)(param_2 + 0x10)" * (cast_expression "(int *)(param_2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(param_3 + 4) = piVar1 + 1;" (assignment_expression "*(int **)(param_3 + 4) = piVar1 + 1" (pointer_expression "*(int **)(param_3 + 4)" * (cast_expression "(int **)(param_3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) = (binary_expression "piVar1 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);" (call_expression "FUN_0018fdc0(param_3,piVar1,param_2 + 0x10)" identifier (argument_list "(param_3,piVar1,param_2 + 0x10)" ( identifier , identifier , (binary_expression "param_2 + 0x10" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: void do_supported_bfd_names(Target_selector * this,\n   vector<char_const*,_std::allocator<char_const*>_> * names) */\n\nvoid __thiscall\ngold::Target_selector::do_supported_bfd_names\n          (Target_selector *this,vector<char_const*,_std::allocator<char_const*>_> *names)\n\n{\n  iterator __position;\n  \n  if (this->bfd_name_ == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/target-select.h",0xb6,"do_supported_bfd_names");\n  }\n  __position._M_current =\n       (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish;\n  if (__position._M_current !=\n      (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n      _M_end_of_storage) {\n    *__position._M_current = this->bfd_name_;\n    (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position._M_current + 1;\n    return;\n  }\n  std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n            (names,__position,&this->bfd_name_);\n  return;\n}\n\n" comment comment (function_definition "void __thiscall\ngold::Target_selector::do_supported_bfd_names\n          (Target_selector *this,vector<char_const*,_std::allocator<char_const*>_> *names)\n\n{\n  iterator __position;\n  \n  if (this->bfd_name_ == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/target-select.h",0xb6,"do_supported_bfd_names");\n  }\n  __position._M_current =\n       (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish;\n  if (__position._M_current !=\n      (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n      _M_end_of_storage) {\n    *__position._M_current = this->bfd_name_;\n    (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position._M_current + 1;\n    return;\n  }\n  std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n            (names,__position,&this->bfd_name_);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Target_selector::" identifier : : identifier : :) (function_declarator "do_supported_bfd_names\n          (Target_selector *this,vector<char_const*,_std::allocator<char_const*>_> *names)" identifier (parameter_list "(Target_selector *this,vector<char_const*,_std::allocator<char_const*>_> *names)" ( (parameter_declaration "Target_selector *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "vector<char_const*" type_identifier (ERROR "<char_const" < identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_std::allocator<char_const*>_> *names" type_identifier (ERROR "::allocator<char_const*>_>" : : identifier < identifier * > identifier >) (pointer_declarator "*names" * identifier)) ))) (compound_statement "{\n  iterator __position;\n  \n  if (this->bfd_name_ == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/target-select.h",0xb6,"do_supported_bfd_names");\n  }\n  __position._M_current =\n       (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish;\n  if (__position._M_current !=\n      (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n      _M_end_of_storage) {\n    *__position._M_current = this->bfd_name_;\n    (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position._M_current + 1;\n    return;\n  }\n  std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n            (names,__position,&this->bfd_name_);\n  return;\n}" { (declaration "iterator __position;" type_identifier identifier ;) (if_statement "if (this->bfd_name_ == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/target-select.h",0xb6,"do_supported_bfd_names");\n  }" if (parenthesized_expression "(this->bfd_name_ == (char *)0x0)" ( (binary_expression "this->bfd_name_ == (char *)0x0" (field_expression "this->bfd_name_" identifier -> field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/target-select.h",0xb6,"do_supported_bfd_names");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/target-select.h",0xb6,"do_supported_bfd_names");" (call_expression "do_gold_unreachable("../../gold/target-select.h",0xb6,"do_supported_bfd_names")" identifier (argument_list "("../../gold/target-select.h",0xb6,"do_supported_bfd_names")" ( (string_literal ""../../gold/target-select.h"" " string_content ") , number_literal , (string_literal ""do_supported_bfd_names"" " string_content ") ))) ;) })) (expression_statement "__position._M_current =\n       (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish;" (assignment_expression "__position._M_current =\n       (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish" (field_expression "__position._M_current" identifier . field_identifier) = (field_expression "(names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish" (field_expression "(names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl" (parenthesized_expression "(names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)" ( (ERROR "names->super__Vector_base<char_const*,_std::" (comma_expression "names->super__Vector_base<char_const*,_std" (binary_expression "names->super__Vector_base<char_const" (field_expression "names->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "*" *) , identifier) : :) (binary_expression "allocator<char_const*>_>" (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (__position._M_current !=\n      (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n      _M_end_of_storage) {\n    *__position._M_current = this->bfd_name_;\n    (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position._M_current + 1;\n    return;\n  }" if (parenthesized_expression "(__position._M_current !=\n      (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n      _M_end_of_storage)" ( (binary_expression "__position._M_current !=\n      (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n      _M_end_of_storage" (field_expression "__position._M_current" identifier . field_identifier) != (field_expression "(names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl.\n      _M_end_of_storage" (field_expression "(names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl" (parenthesized_expression "(names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)" ( (ERROR "names->super__Vector_base<char_const*,_std::" (comma_expression "names->super__Vector_base<char_const*,_std" (binary_expression "names->super__Vector_base<char_const" (field_expression "names->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "*" *) , identifier) : :) (binary_expression "allocator<char_const*>_>" (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) > identifier) )) . field_identifier) . field_identifier)) )) (compound_statement "{\n    *__position._M_current = this->bfd_name_;\n    (names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position._M_current + 1;\n    return;\n  }" { (expression_statement "*__position._M_current = this->bfd_name_;" (assignment_expression "*__position._M_current = this->bfd_name_" (pointer_expression "*__position._M_current" * (field_expression "__position._M_current" identifier . field_identifier)) = (field_expression "this->bfd_name_" identifier -> field_identifier)) ;) (expression_statement "(names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position._M_current + 1;" (assignment_expression "(names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish =\n         __position._M_current + 1" (field_expression "(names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl._M_finish" (field_expression "(names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)._M_impl" (parenthesized_expression "(names->super__Vector_base<char_const*,_std::allocator<char_const*>_>)" ( (ERROR "names->super__Vector_base<char_const*,_std::" (comma_expression "names->super__Vector_base<char_const*,_std" (binary_expression "names->super__Vector_base<char_const" (field_expression "names->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "*" *) , identifier) : :) (binary_expression "allocator<char_const*>_>" (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) > identifier) )) . field_identifier) . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) (return_statement "return;" return ;) })) (labeled_statement "std::vector<char_const*,_std::allocator<char_const*>_>::_M_realloc_insert<char_const*_const&>\n            (names,__position,&this->bfd_name_);" statement_identifier (ERROR "::vector<char_const*,_std::allocator<char_const*>_>:" : : (comma_expression "vector<char_const*,_std" (binary_expression "vector<char_const" identifier < identifier) (ERROR "*" *) , identifier) : : (binary_expression "allocator<char_const*>_" (binary_expression "allocator<char_const" identifier < identifier) (ERROR "*" *) > identifier) > :) : (expression_statement "_M_realloc_insert<char_const*_const&>\n            (names,__position,&this->bfd_name_);" (binary_expression "_M_realloc_insert<char_const*_const&>\n            (names,__position,&this->bfd_name_)" (binary_expression "_M_realloc_insert<char_const*_const" identifier < (binary_expression "char_const*_const" identifier * identifier)) (ERROR "&" &) > (parenthesized_expression "(names,__position,&this->bfd_name_)" ( (comma_expression "names,__position,&this->bfd_name_" identifier , (comma_expression "__position,&this->bfd_name_" identifier , (pointer_expression "&this->bfd_name_" & (field_expression "this->bfd_name_" identifier -> field_identifier)))) ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void __regparm1 FUN_0018ff80(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  \n  if (*(int *)(param_2 + 0x10) == 0) {\n                    \n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }\n  piVar1 = *(int **)(param_3 + 4);\n  if (piVar1 != *(int **)(param_3 + 8)) {\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }\n  FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);\n  return;\n}\n\n" (function_definition "void __regparm1 FUN_0018ff80(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  \n  if (*(int *)(param_2 + 0x10) == 0) {\n                    \n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }\n  piVar1 = *(int **)(param_3 + 4);\n  if (piVar1 != *(int **)(param_3 + 8)) {\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }\n  FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);\n  return;\n}" primitive_type (ERROR "__regparm1" identifier) (function_declarator "FUN_0018ff80(undefined4 param_1,int param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  \n  if (*(int *)(param_2 + 0x10) == 0) {\n                    \n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }\n  piVar1 = *(int **)(param_3 + 4);\n  if (piVar1 != *(int **)(param_3 + 8)) {\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }\n  FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (if_statement "if (*(int *)(param_2 + 0x10) == 0) {\n                    \n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }" if (parenthesized_expression "(*(int *)(param_2 + 0x10) == 0)" ( (binary_expression "*(int *)(param_2 + 0x10) == 0" (pointer_expression "*(int *)(param_2 + 0x10)" * (cast_expression "(int *)(param_2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }" { (expression_statement "FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);" (call_expression "FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1)" identifier (argument_list "("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1)" ( (string_literal ""../../gold/target-select.h"" " string_content ") , number_literal , (string_literal ""do_supported_bfd_names"" " string_content ") , identifier ))) ;) })) (expression_statement "piVar1 = *(int **)(param_3 + 4);" (assignment_expression "piVar1 = *(int **)(param_3 + 4)" identifier = (pointer_expression "*(int **)(param_3 + 4)" * (cast_expression "(int **)(param_3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (if_statement "if (piVar1 != *(int **)(param_3 + 8)) {\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }" if (parenthesized_expression "(piVar1 != *(int **)(param_3 + 8))" ( (binary_expression "piVar1 != *(int **)(param_3 + 8)" identifier != (pointer_expression "*(int **)(param_3 + 8)" * (cast_expression "(int **)(param_3 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }" { (expression_statement "*piVar1 = *(int *)(param_2 + 0x10);" (assignment_expression "*piVar1 = *(int *)(param_2 + 0x10)" (pointer_expression "*piVar1" * identifier) = (pointer_expression "*(int *)(param_2 + 0x10)" * (cast_expression "(int *)(param_2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(param_3 + 4) = piVar1 + 1;" (assignment_expression "*(int **)(param_3 + 4) = piVar1 + 1" (pointer_expression "*(int **)(param_3 + 4)" * (cast_expression "(int **)(param_3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) = (binary_expression "piVar1 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);" (call_expression "FUN_0018fdc0(param_3,piVar1,param_2 + 0x10)" identifier (argument_list "(param_3,piVar1,param_2 + 0x10)" ( identifier , identifier , (binary_expression "param_2 + 0x10" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , 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) ))))) ;) (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) = (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })))
(function_definition "void __regparm1 FUN_0018ff80(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  \n  if (*(int *)(param_2 + 0x10) == 0) {\n                    \n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }\n  piVar1 = *(int **)(param_3 + 4);\n  if (piVar1 != *(int **)(param_3 + 8)) {\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }\n  FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);\n  return;\n}" (primitive_type "void") (ERROR "__regparm1" (identifier "__regparm1")) (function_declarator "FUN_0018ff80(undefined4 param_1,int param_2,int param_3)" (identifier "FUN_0018ff80") (parameter_list "(undefined4 param_1,int param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int *piVar1;\n  \n  if (*(int *)(param_2 + 0x10) == 0) {\n                    \n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }\n  piVar1 = *(int **)(param_3 + 4);\n  if (piVar1 != *(int **)(param_3 + 8)) {\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }\n  FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (if_statement "if (*(int *)(param_2 + 0x10) == 0) {\n                    \n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x10) == 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x10) == 0" (pointer_expression "*(int *)(param_2 + 0x10)" (* "*") (cast_expression "(int *)(param_2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);\n  }" ({ "{") (expression_statement "FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);" (call_expression "FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1)" (identifier "FUN_00069d00") (argument_list "("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1)" (( "(") (string_literal ""../../gold/target-select.h"" (" """) (string_content "../../gold/target-select.h") (" """)) (, ",") (number_literal "0xb6") (, ",") (string_literal ""do_supported_bfd_names"" (" """) (string_content "do_supported_bfd_names") (" """)) (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar1 = *(int **)(param_3 + 4);" (assignment_expression "piVar1 = *(int **)(param_3 + 4)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_3 + 4)" (* "*") (cast_expression "(int **)(param_3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (piVar1 != *(int **)(param_3 + 8)) {\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }" (if "if") (parenthesized_expression "(piVar1 != *(int **)(param_3 + 8))" (( "(") (binary_expression "piVar1 != *(int **)(param_3 + 8)" (identifier "piVar1") (!= "!=") (pointer_expression "*(int **)(param_3 + 8)" (* "*") (cast_expression "(int **)(param_3 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n    *piVar1 = *(int *)(param_2 + 0x10);\n    *(int **)(param_3 + 4) = piVar1 + 1;\n    return;\n  }" ({ "{") (expression_statement "*piVar1 = *(int *)(param_2 + 0x10);" (assignment_expression "*piVar1 = *(int *)(param_2 + 0x10)" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (pointer_expression "*(int *)(param_2 + 0x10)" (* "*") (cast_expression "(int *)(param_2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(int **)(param_3 + 4) = piVar1 + 1;" (assignment_expression "*(int **)(param_3 + 4) = piVar1 + 1" (pointer_expression "*(int **)(param_3 + 4)" (* "*") (cast_expression "(int **)(param_3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "piVar1 + 1" (identifier "piVar1") (+ "+") (number_literal "1"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);" (call_expression "FUN_0018fdc0(param_3,piVar1,param_2 + 0x10)" (identifier "FUN_0018fdc0") (argument_list "(param_3,piVar1,param_2 + 0x10)" (( "(") (identifier "param_3") (, ",") (identifier "piVar1") (, ",") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: void do_supported_bfd_names(Target_selector * this,
   vector<char_const*,_std::allocator<char_const*>_> * names) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,type_2<var_3*,type_3::var_2<var_3*>var_4> *names)

{
  type_4 __position;
  
  if (this->bfd_name_ == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/target-select.h",0xb6,"do_supported_bfd_names");
  }
  __position._M_current =
       (names->super__Vector_base<var_3*,type_3::var_2<var_3*>var_4>var_5)._M_impl._M_finish;
  if (__position._M_current !=
      (names->super__Vector_base<var_3*,type_3::var_2<var_3*>var_4>var_5)._M_impl.
      _M_end_of_storage) {
    *__position._M_current = this->bfd_name_;
    (names->super__Vector_base<var_3*,type_3::var_2<var_3*>var_4>var_5)._M_impl._M_finish =
         __position._M_current + 1;
    return;
  }
  std::type_2<var_3*,type_3::var_2<var_3*>var_4>::var_6<var_3*var_7&>
            (names,__position,&this->bfd_name_);
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm1 MASKED(undefined4 param_1,int param_2,int param_3)

{
  int *piVar1;
  
  if (*(int *)(param_2 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/target-select.h",0xb6,"do_supported_bfd_names",param_1);
  }
  piVar1 = *(int **)(param_3 + 4);
  if (piVar1 != *(int **)(param_3 + 8)) {
    *piVar1 = *(int *)(param_2 + 0x10);
    *(int **)(param_3 + 4) = piVar1 + 1;
    return;
  }
  FUN_0018fdc0(param_3,piVar1,param_2 + 0x10);
  return;
}

