
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void create_version_sections(Layout * this, Versions * versions,
   Symbol_table * symtab, uint local_symcount, vector<gold::Symbol*,_std::allocator<gold::Symbol*>_>
   * dynamic_symbols, Output_section * dynstr) */

void __thiscall
gold::Layout::create_version_sections
          (Layout *this,Versions *versions,Symbol_table *symtab,uint param_3,
          vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *dynamic_symbols,
          Output_section *dynstr)

{
  Target_size_endianness TVar1;
  
  if (((versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.
       _M_start ==
       (versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.
       _M_finish) &&
     ((versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl
      ._M_finish ==
      (versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl
      ._M_start)) {
    return;
  }
  TVar1 = Parameters::size_and_endianness(parameters);
  if (TVar1 == TARGET_32_LITTLE) {
    sized_create_version_sections<32,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);
    return;
  }
  if (TVar1 == TARGET_64_LITTLE) {
    sized_create_version_sections<64,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);
    return;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/layout.cc",0x131e,"create_version_sections");
}



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

void FUN_00086870(undefined4 param_1,int *param_2)

{
  int iVar1;
  
  if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {
    return;
  }
  iVar1 = FUN_000ee190(DAT_00302378);
  if (iVar1 == 0) {
    FUN_0008d920();
    return;
  }
  if (iVar1 == 2) {
    FUN_0008df50();
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00032730
ADD EBX,0x27b787
SUB ESP,0x1c
MOV EAX,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [ESP + 0x34]
MOV EDI,dword ptr [ESP + 0x38]
MOV EBP,dword ptr [ESP + 0x3c]
MOV EDX,dword ptr [ESP + 0x40]
MOV ECX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,dword ptr [ESI + 0x4]
CMP dword ptr [ESI],EAX
JZ 0x00086930
LEA EAX,[EBX + 0x378]
MOV dword ptr [ESP + 0xc],ECX
SUB ESP,0xc
MOV dword ptr [ESP + 0x14],EDX
PUSH dword ptr [EAX]
CALL 0x000ee190
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JZ 0x00086900
CMP EAX,0x2
JNZ 0x00086944
MOV EAX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x3c],EBP
MOV dword ptr [ESP + 0x38],EDI
MOV dword ptr [ESP + 0x34],ESI
MOV dword ptr [ESP + 0x44],ECX
MOV dword ptr [ESP + 0x40],EDX
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x0008df50
MOV EAX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x3c],EBP
MOV dword ptr [ESP + 0x38],EDI
MOV dword ptr [ESP + 0x34],ESI
MOV dword ptr [ESP + 0x44],ECX
MOV dword ptr [ESP + 0x40],EDX
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x0008d920
MOV EAX,dword ptr [ESI + 0xc]
CMP dword ptr [ESI + 0x10],EAX
JNZ 0x000868a9
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH EAX
LEA EAX,[EBX + 0xfff21f9c]
PUSH EAX
LEA EAX,[EBX + 0xfff20ef8]
PUSH 0x131e
PUSH EAX
CALL 0x0005f0b0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00086870(undefined4 param_1,int *param_2)\n\n{\n  int iVar1;\n  \n  if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {\n    return;\n  }\n  iVar1 = FUN_000ee190(DAT_00302378);\n  if (iVar1 == 0) {\n    FUN_0008d920();\n    return;\n  }\n  if (iVar1 == 2) {\n    FUN_0008df50();\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);\n}\n\n" comment (function_definition "void FUN_00086870(undefined4 param_1,int *param_2)\n\n{\n  int iVar1;\n  \n  if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {\n    return;\n  }\n  iVar1 = FUN_000ee190(DAT_00302378);\n  if (iVar1 == 0) {\n    FUN_0008d920();\n    return;\n  }\n  if (iVar1 == 2) {\n    FUN_0008df50();\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);\n}" primitive_type (function_declarator "FUN_00086870(undefined4 param_1,int *param_2)" identifier (parameter_list "(undefined4 param_1,int *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  \n  if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {\n    return;\n  }\n  iVar1 = FUN_000ee190(DAT_00302378);\n  if (iVar1 == 0) {\n    FUN_0008d920();\n    return;\n  }\n  if (iVar1 == 2) {\n    FUN_0008df50();\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (if_statement "if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {\n    return;\n  }" if (parenthesized_expression "((*param_2 == param_2[1]) && (param_2[4] == param_2[3]))" ( (binary_expression "(*param_2 == param_2[1]) && (param_2[4] == param_2[3])" (parenthesized_expression "(*param_2 == param_2[1])" ( (binary_expression "*param_2 == param_2[1]" (pointer_expression "*param_2" * identifier) == (subscript_expression "param_2[1]" identifier [ number_literal ])) )) && (parenthesized_expression "(param_2[4] == param_2[3])" ( (binary_expression "param_2[4] == param_2[3]" (subscript_expression "param_2[4]" identifier [ number_literal ]) == (subscript_expression "param_2[3]" identifier [ number_literal ])) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = FUN_000ee190(DAT_00302378);" (assignment_expression "iVar1 = FUN_000ee190(DAT_00302378)" identifier = (call_expression "FUN_000ee190(DAT_00302378)" identifier (argument_list "(DAT_00302378)" ( identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    FUN_0008d920();\n    return;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_0008d920();\n    return;\n  }" { (expression_statement "FUN_0008d920();" (call_expression "FUN_0008d920()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar1 == 2) {\n    FUN_0008df50();\n    return;\n  }" if (parenthesized_expression "(iVar1 == 2)" ( (binary_expression "iVar1 == 2" identifier == number_literal) )) (compound_statement "{\n    FUN_0008df50();\n    return;\n  }" { (expression_statement "FUN_0008df50();" (call_expression "FUN_0008df50()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);" (call_expression "FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1)" identifier (argument_list "("../../gold/layout.cc",0x131e,"create_version_sections",iVar1)" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""create_version_sections"" " string_content ") , identifier ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void create_version_sections(Layout * this, Versions * versions,\n   Symbol_table * symtab, uint local_symcount, vector<gold::Symbol*,_std::allocator<gold::Symbol*>_>\n   * dynamic_symbols, Output_section * dynstr) */\n\nvoid __thiscall\ngold::Layout::create_version_sections\n          (Layout *this,Versions *versions,Symbol_table *symtab,uint param_3,\n          vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *dynamic_symbols,\n          Output_section *dynstr)\n\n{\n  Target_size_endianness TVar1;\n  \n  if (((versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_finish) &&\n     ((versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_start)) {\n    return;\n  }\n  TVar1 = Parameters::size_and_endianness(parameters);\n  if (TVar1 == TARGET_32_LITTLE) {\n    sized_create_version_sections<32,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);\n    return;\n  }\n  if (TVar1 == TARGET_64_LITTLE) {\n    sized_create_version_sections<64,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/layout.cc",0x131e,"create_version_sections");\n}\n\n" comment comment comment (function_definition "void __thiscall\ngold::Layout::create_version_sections\n          (Layout *this,Versions *versions,Symbol_table *symtab,uint param_3,\n          vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *dynamic_symbols,\n          Output_section *dynstr)\n\n{\n  Target_size_endianness TVar1;\n  \n  if (((versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_finish) &&\n     ((versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_start)) {\n    return;\n  }\n  TVar1 = Parameters::size_and_endianness(parameters);\n  if (TVar1 == TARGET_32_LITTLE) {\n    sized_create_version_sections<32,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);\n    return;\n  }\n  if (TVar1 == TARGET_64_LITTLE) {\n    sized_create_version_sections<64,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/layout.cc",0x131e,"create_version_sections");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "create_version_sections\n          (Layout *this,Versions *versions,Symbol_table *symtab,uint param_3,\n          vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *dynamic_symbols,\n          Output_section *dynstr)" identifier (parameter_list "(Layout *this,Versions *versions,Symbol_table *symtab,uint param_3,\n          vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *dynamic_symbols,\n          Output_section *dynstr)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Versions *versions" type_identifier (pointer_declarator "*versions" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "vector<gold::Symbol*" type_identifier (ERROR "<gold::Symbol" < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_std::allocator<gold::Symbol*>_> *dynamic_symbols" type_identifier (ERROR "::allocator<gold::Symbol*>_>" : : identifier < identifier : : identifier * > identifier >) (pointer_declarator "*dynamic_symbols" * identifier)) , (parameter_declaration "Output_section *dynstr" type_identifier (pointer_declarator "*dynstr" * identifier)) ))) (compound_statement "{\n  Target_size_endianness TVar1;\n  \n  if (((versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_finish) &&\n     ((versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_start)) {\n    return;\n  }\n  TVar1 = Parameters::size_and_endianness(parameters);\n  if (TVar1 == TARGET_32_LITTLE) {\n    sized_create_version_sections<32,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);\n    return;\n  }\n  if (TVar1 == TARGET_64_LITTLE) {\n    sized_create_version_sections<64,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/layout.cc",0x131e,"create_version_sections");\n}" { (declaration "Target_size_endianness TVar1;" type_identifier identifier ;) (if_statement "if (((versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_finish) &&\n     ((versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_start)) {\n    return;\n  }" if (parenthesized_expression "(((versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_finish) &&\n     ((versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_start))" ( (binary_expression "((versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_finish) &&\n     ((versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_start)" (parenthesized_expression "((versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_finish)" ( (field_expression "(versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_finish" (field_expression "(versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl" (binary_expression "(versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_" (binary_expression "(versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold" (binary_expression "(versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold::Verdef*,_std" (binary_expression "(versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start ==\n       (versions->defs_).super__Vector_base<gold" (field_expression "(versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n       _M_start" (field_expression "(versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl" (binary_expression "(versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_" (binary_expression "(versions->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold" (binary_expression "(versions->defs_).super__Vector_base<gold::Verdef*,_std" (binary_expression "(versions->defs_).super__Vector_base<gold" (field_expression "(versions->defs_).super__Vector_base" (parenthesized_expression "(versions->defs_)" ( (field_expression "versions->defs_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Verdef" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Verdef" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) == (binary_expression "(versions->defs_).super__Vector_base<gold" (field_expression "(versions->defs_).super__Vector_base" (parenthesized_expression "(versions->defs_)" ( (field_expression "versions->defs_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Verdef" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Verdef" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) && (parenthesized_expression "((versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_start)" ( (field_expression "(versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_start" (field_expression "(versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl" (binary_expression "(versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_" (binary_expression "(versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold" (binary_expression "(versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold::Verneed*,_std" (binary_expression "(versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish ==\n      (versions->needs_).super__Vector_base<gold" (field_expression "(versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl\n      ._M_finish" (field_expression "(versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_>._M_impl" (binary_expression "(versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold::Verneed*>_" (binary_expression "(versions->needs_).super__Vector_base<gold::Verneed*,_std::allocator<gold" (binary_expression "(versions->needs_).super__Vector_base<gold::Verneed*,_std" (binary_expression "(versions->needs_).super__Vector_base<gold" (field_expression "(versions->needs_).super__Vector_base" (parenthesized_expression "(versions->needs_)" ( (field_expression "versions->needs_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Verneed" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Verneed" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) == (binary_expression "(versions->needs_).super__Vector_base<gold" (field_expression "(versions->needs_).super__Vector_base" (parenthesized_expression "(versions->needs_)" ( (field_expression "versions->needs_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Verneed" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Verneed" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (ERROR "TVar1 = Parameters::" (assignment_expression "TVar1 = Parameters" identifier = identifier) : :) (expression_statement "size_and_endianness(parameters);" (call_expression "size_and_endianness(parameters)" identifier (argument_list "(parameters)" ( identifier ))) ;) (if_statement "if (TVar1 == TARGET_32_LITTLE) {\n    sized_create_version_sections<32,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);\n    return;\n  }" if (parenthesized_expression "(TVar1 == TARGET_32_LITTLE)" ( (binary_expression "TVar1 == TARGET_32_LITTLE" identifier == identifier) )) (compound_statement "{\n    sized_create_version_sections<32,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);\n    return;\n  }" { (expression_statement "sized_create_version_sections<32,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);" (comma_expression "sized_create_version_sections<32,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr)" (binary_expression "sized_create_version_sections<32" identifier < number_literal) , (binary_expression "_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr)" identifier > (parenthesized_expression "(this,versions,symtab,param_3,dynamic_symbols,dynstr)" ( (comma_expression "this,versions,symtab,param_3,dynamic_symbols,dynstr" identifier , (comma_expression "versions,symtab,param_3,dynamic_symbols,dynstr" identifier , (comma_expression "symtab,param_3,dynamic_symbols,dynstr" identifier , (comma_expression "param_3,dynamic_symbols,dynstr" identifier , (comma_expression "dynamic_symbols,dynstr" identifier , identifier))))) )))) ;) (return_statement "return;" return ;) })) (if_statement "if (TVar1 == TARGET_64_LITTLE) {\n    sized_create_version_sections<64,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);\n    return;\n  }" if (parenthesized_expression "(TVar1 == TARGET_64_LITTLE)" ( (binary_expression "TVar1 == TARGET_64_LITTLE" identifier == identifier) )) (compound_statement "{\n    sized_create_version_sections<64,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);\n    return;\n  }" { (expression_statement "sized_create_version_sections<64,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr);" (comma_expression "sized_create_version_sections<64,_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr)" (binary_expression "sized_create_version_sections<64" identifier < number_literal) , (binary_expression "_false>(this,versions,symtab,param_3,dynamic_symbols,dynstr)" identifier > (parenthesized_expression "(this,versions,symtab,param_3,dynamic_symbols,dynstr)" ( (comma_expression "this,versions,symtab,param_3,dynamic_symbols,dynstr" identifier , (comma_expression "versions,symtab,param_3,dynamic_symbols,dynstr" identifier , (comma_expression "symtab,param_3,dynamic_symbols,dynstr" identifier , (comma_expression "param_3,dynamic_symbols,dynstr" identifier , (comma_expression "dynamic_symbols,dynstr" identifier , identifier))))) )))) ;) (return_statement "return;" return ;) })) comment (expression_statement "do_gold_unreachable("../../gold/layout.cc",0x131e,"create_version_sections");" (call_expression "do_gold_unreachable("../../gold/layout.cc",0x131e,"create_version_sections")" identifier (argument_list "("../../gold/layout.cc",0x131e,"create_version_sections")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""create_version_sections"" " string_content ") ))) ;) })))
(translation_unit "void FUN_00086870(undefined4 param_1,int *param_2)\n\n{\n  int iVar1;\n  \n  if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {\n    return;\n  }\n  iVar1 = FUN_000ee190(DAT_00302378);\n  if (iVar1 == 0) {\n    FUN_0008d920();\n    return;\n  }\n  if (iVar1 == 2) {\n    FUN_0008df50();\n    return;\n  }\n                    \n  FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);\n}\n\n" (function_definition "void FUN_00086870(undefined4 param_1,int *param_2)\n\n{\n  int iVar1;\n  \n  if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {\n    return;\n  }\n  iVar1 = FUN_000ee190(DAT_00302378);\n  if (iVar1 == 0) {\n    FUN_0008d920();\n    return;\n  }\n  if (iVar1 == 2) {\n    FUN_0008df50();\n    return;\n  }\n                    \n  FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);\n}" primitive_type (function_declarator "FUN_00086870(undefined4 param_1,int *param_2)" identifier (parameter_list "(undefined4 param_1,int *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  \n  if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {\n    return;\n  }\n  iVar1 = FUN_000ee190(DAT_00302378);\n  if (iVar1 == 0) {\n    FUN_0008d920();\n    return;\n  }\n  if (iVar1 == 2) {\n    FUN_0008df50();\n    return;\n  }\n                    \n  FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (if_statement "if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {\n    return;\n  }" if (parenthesized_expression "((*param_2 == param_2[1]) && (param_2[4] == param_2[3]))" ( (binary_expression "(*param_2 == param_2[1]) && (param_2[4] == param_2[3])" (parenthesized_expression "(*param_2 == param_2[1])" ( (binary_expression "*param_2 == param_2[1]" (pointer_expression "*param_2" * identifier) == (subscript_expression "param_2[1]" identifier [ number_literal ])) )) && (parenthesized_expression "(param_2[4] == param_2[3])" ( (binary_expression "param_2[4] == param_2[3]" (subscript_expression "param_2[4]" identifier [ number_literal ]) == (subscript_expression "param_2[3]" identifier [ number_literal ])) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = FUN_000ee190(DAT_00302378);" (assignment_expression "iVar1 = FUN_000ee190(DAT_00302378)" identifier = (call_expression "FUN_000ee190(DAT_00302378)" identifier (argument_list "(DAT_00302378)" ( identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    FUN_0008d920();\n    return;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_0008d920();\n    return;\n  }" { (expression_statement "FUN_0008d920();" (call_expression "FUN_0008d920()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar1 == 2) {\n    FUN_0008df50();\n    return;\n  }" if (parenthesized_expression "(iVar1 == 2)" ( (binary_expression "iVar1 == 2" identifier == number_literal) )) (compound_statement "{\n    FUN_0008df50();\n    return;\n  }" { (expression_statement "FUN_0008df50();" (call_expression "FUN_0008df50()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);" (call_expression "FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1)" identifier (argument_list "("../../gold/layout.cc",0x131e,"create_version_sections",iVar1)" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""create_version_sections"" " string_content ") , identifier ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (subscript_expression IDENT [ LIT ])) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (subscript_expression IDENT [ LIT ])) ))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })))
(function_definition "void FUN_00086870(undefined4 param_1,int *param_2)\n\n{\n  int iVar1;\n  \n  if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {\n    return;\n  }\n  iVar1 = FUN_000ee190(DAT_00302378);\n  if (iVar1 == 0) {\n    FUN_0008d920();\n    return;\n  }\n  if (iVar1 == 2) {\n    FUN_0008df50();\n    return;\n  }\n                    \n  FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);\n}" (primitive_type "void") (function_declarator "FUN_00086870(undefined4 param_1,int *param_2)" (identifier "FUN_00086870") (parameter_list "(undefined4 param_1,int *param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  \n  if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {\n    return;\n  }\n  iVar1 = FUN_000ee190(DAT_00302378);\n  if (iVar1 == 0) {\n    FUN_0008d920();\n    return;\n  }\n  if (iVar1 == 2) {\n    FUN_0008df50();\n    return;\n  }\n                    \n  FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (if_statement "if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {\n    return;\n  }" (if "if") (parenthesized_expression "((*param_2 == param_2[1]) && (param_2[4] == param_2[3]))" (( "(") (binary_expression "(*param_2 == param_2[1]) && (param_2[4] == param_2[3])" (parenthesized_expression "(*param_2 == param_2[1])" (( "(") (binary_expression "*param_2 == param_2[1]" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) () ")")) (&& "&&") (parenthesized_expression "(param_2[4] == param_2[3])" (( "(") (binary_expression "param_2[4] == param_2[3]" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (== "==") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) () ")"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar1 = FUN_000ee190(DAT_00302378);" (assignment_expression "iVar1 = FUN_000ee190(DAT_00302378)" (identifier "iVar1") (= "=") (call_expression "FUN_000ee190(DAT_00302378)" (identifier "FUN_000ee190") (argument_list "(DAT_00302378)" (( "(") (identifier "DAT_00302378") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    FUN_0008d920();\n    return;\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0008d920();\n    return;\n  }" ({ "{") (expression_statement "FUN_0008d920();" (call_expression "FUN_0008d920()" (identifier "FUN_0008d920") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (iVar1 == 2) {\n    FUN_0008df50();\n    return;\n  }" (if "if") (parenthesized_expression "(iVar1 == 2)" (( "(") (binary_expression "iVar1 == 2" (identifier "iVar1") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    FUN_0008df50();\n    return;\n  }" ({ "{") (expression_statement "FUN_0008df50();" (call_expression "FUN_0008df50()" (identifier "FUN_0008df50") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);" (call_expression "FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1)" (identifier "FUN_0005f0b0") (argument_list "("../../gold/layout.cc",0x131e,"create_version_sections",iVar1)" (( "(") (string_literal ""../../gold/layout.cc"" (" """) (string_content "../../gold/layout.cc") (" """)) (, ",") (number_literal "0x131e") (, ",") (string_literal ""create_version_sections"" (" """) (string_content "create_version_sections") (" """)) (, ",") (identifier "iVar1") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void create_version_sections(Layout * this, Versions * versions,
   Symbol_table * symtab, uint local_symcount, vector<gold::Symbol*,_std::allocator<gold::Symbol*>_>
   * dynamic_symbols, Output_section * dynstr) */

void __thiscall
var_1::type_1::function_1
          (type_1 *this,type_2 *versions,type_3 *symtab,type_4 param_3,
          type_5<var_1::Symbol*,type_6::allocator<var_1::Symbol*>var_2> *dynamic_symbols,
          type_7 *dynstr)

{
  type_8 var_4;
  
  if (((versions->defs_).super__Vector_base<var_1::Verdef*,type_6::allocator<var_1::Verdef*>var_2>._M_impl.
       _M_start ==
       (versions->defs_).super__Vector_base<var_1::Verdef*,type_6::allocator<var_1::Verdef*>var_2>._M_impl.
       _M_finish) &&
     ((versions->needs_).super__Vector_base<var_1::Verneed*,type_6::allocator<var_1::Verneed*>var_2>._M_impl
      ._M_finish ==
      (versions->needs_).super__Vector_base<var_1::Verneed*,type_6::allocator<var_1::Verneed*>var_2>._M_impl
      ._M_start)) {
    return;
  }
  var_4 = Parameters::var_3(parameters);
  if (var_4 == var_5) {
    var_6<32,var_7>(this,versions,symtab,param_3,dynamic_symbols,dynstr);
    return;
  }
  if (var_4 == var_8) {
    var_6<64,var_7>(this,versions,symtab,param_3,dynamic_symbols,dynstr);
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_9("../../gold/layout.cc",0x131e,"create_version_sections");
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))))))

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

void MASKED(undefined4 param_1,int *param_2)

{
  int iVar1;
  
  if ((*param_2 == param_2[1]) && (param_2[4] == param_2[3])) {
    return;
  }
  iVar1 = FUN_000ee190(DAT_00302378);
  if (iVar1 == 0) {
    FUN_0008d920();
    return;
  }
  if (iVar1 == 2) {
    FUN_0008df50();
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0005f0b0("../../gold/layout.cc",0x131e,"create_version_sections",iVar1);
}

