
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: Object * get_elf_object(Plugin_manager * this, void * handle) */

Object * __thiscall gold::Plugin_manager::get_elf_object(Plugin_manager *this,void *handle)

{
  int iVar1;
  pointer ppOVar2;
  Object *pOVar3;
  
  ppOVar2 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.
            _M_impl._M_start;
  if (((handle < (void *)((int)(this->objects_).
                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.
                               _M_impl._M_finish - (int)ppOVar2 >> 2)) &&
      (pOVar3 = ppOVar2[(int)handle], pOVar3 != (Object *)0x0)) &&
     (iVar1 = (*pOVar3->_vptr_Object[5])(pOVar3), iVar1 == 0)) {
    return pOVar3;
  }
  return (Object *)0x0;
}



/* gold::Plugin_manager::get_elf_object(void const*) */

int * __thiscall gold::Plugin_manager::get_elf_object(Plugin_manager *this,void *param_1)

{
  int iVar1;
  int *piVar2;
  
  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&
      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&
     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {
    return piVar2;
  }
  return (int *)0x0;
}


lw v1,0x10(a0)
addiu sp,sp,-0x20
lw v0,0x14(a0)
sw ra,0x1c(sp)
subu v0,v0,v1
sra v0,v0,0x2
sltu v0,a1,v0
beq v0,zero,0x001e5464
_sw s0,0x18(sp)
sll a1,a1,0x2
addu v1,v1,a1
lw s0,0x0(v1)
beq s0,zero,0x001e5468
_lw ra,0x1c(sp)
lw v0,0x0(s0)
lw t9,0x14(v0)
jalr t9
_or a0,s0,zero
bne v0,zero,0x001e5464
_lw ra,0x1c(sp)
or v0,s0,zero
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x20
lw ra,0x1c(sp)
or s0,zero,zero
or v0,s0,zero
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x20
(translation_unit "/* gold::Plugin_manager::get_elf_object(void const*) */\n\nint * __thiscall gold::Plugin_manager::get_elf_object(Plugin_manager *this,void *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }\n  return (int *)0x0;\n}\n\n" comment (declaration "int * __thiscall" primitive_type (pointer_declarator "* __thiscall" * identifier) ;) (labeled_statement "gold::Plugin_manager::get_elf_object(Plugin_manager *this,void *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }\n  return (int *)0x0;\n}" statement_identifier : (ERROR ":" :) (labeled_statement "Plugin_manager::get_elf_object(Plugin_manager *this,void *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }\n  return (int *)0x0;\n}" statement_identifier : (ERROR ":get_elf_object(Plugin_manager *this,void *param_1)" : (call_expression "get_elf_object(Plugin_manager *this,void *param_1)" identifier (argument_list "(Plugin_manager *this,void *param_1)" ( (binary_expression "Plugin_manager *this" identifier * identifier) , (binary_expression "void *param_1" identifier * identifier) )))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  \n  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }\n  return (int *)0x0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (if_statement "if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }" if (parenthesized_expression "(((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0))" ( (binary_expression "((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)" (parenthesized_expression "((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0))" ( (binary_expression "(param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)" (parenthesized_expression "(param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2))" ( (binary_expression "param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)" identifier < (cast_expression "(void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)" ( (binary_expression "*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2" (binary_expression "*(int *)(this + 0x14) - *(int *)(this + 0x10)" (pointer_expression "*(int *)(this + 0x14)" * (cast_expression "(int *)(this + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) - (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) ))))) >> number_literal) )))) )) && (parenthesized_expression "(piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)" ( (comma_expression "piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0" (assignment_expression "piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4)" identifier = (pointer_expression "*(int **)(*(int *)(this + 0x10) + (int)param_1 * 4)" * (cast_expression "(int **)(*(int *)(this + 0x10) + (int)param_1 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(this + 0x10) + (int)param_1 * 4)" ( (binary_expression "*(int *)(this + 0x10) + (int)param_1 * 4" (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) + (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) , (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)" ( (comma_expression "iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0" (assignment_expression "iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x14))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x14))" ( (pointer_expression "**(code **)(*piVar2 + 0x14)" * (pointer_expression "*(code **)(*piVar2 + 0x14)" * (cast_expression "(code **)(*piVar2 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x14)" ( (binary_expression "*piVar2 + 0x14" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    return piVar2;\n  }" { (return_statement "return piVar2;" return identifier ;) })) (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* DWARF original prototype: Object * get_elf_object(Plugin_manager * this, void * handle) */\n\nObject * __thiscall gold::Plugin_manager::get_elf_object(Plugin_manager *this,void *handle)\n\n{\n  int iVar1;\n  pointer ppOVar2;\n  Object *pOVar3;\n  \n  ppOVar2 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n            _M_impl._M_start;\n  if (((handle < (void *)((int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2 >> 2)) &&\n      (pOVar3 = ppOVar2[(int)handle], pOVar3 != (Object *)0x0)) &&\n     (iVar1 = (*pOVar3->_vptr_Object[5])(pOVar3), iVar1 == 0)) {\n    return pOVar3;\n  }\n  return (Object *)0x0;\n}\n\n" comment comment comment comment comment comment comment (ERROR "Object * __thiscall gold::Plugin_manager::get_elf_object(Plugin_manager *this,void *handle)" (binary_expression "Object * __thiscall gold::Plugin_manager::get_elf_object(Plugin_manager *this,void *handle" (binary_expression "Object * __thiscall gold::Plugin_manager::get_elf_object(Plugin_manager *this" (binary_expression "Object * __thiscall" identifier * identifier) (ERROR "gold::Plugin_manager::get_elf_object(Plugin_manager" identifier : : identifier : : identifier ( identifier) * identifier) (ERROR ",void" , primitive_type) * identifier) )) (compound_statement "{\n  int iVar1;\n  pointer ppOVar2;\n  Object *pOVar3;\n  \n  ppOVar2 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n            _M_impl._M_start;\n  if (((handle < (void *)((int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2 >> 2)) &&\n      (pOVar3 = ppOVar2[(int)handle], pOVar3 != (Object *)0x0)) &&\n     (iVar1 = (*pOVar3->_vptr_Object[5])(pOVar3), iVar1 == 0)) {\n    return pOVar3;\n  }\n  return (Object *)0x0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "pointer ppOVar2;" type_identifier identifier ;) (declaration "Object *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (expression_statement "ppOVar2 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n            _M_impl._M_start;" (field_expression "ppOVar2 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n            _M_impl._M_start" (field_expression "ppOVar2 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n            _M_impl" (binary_expression "ppOVar2 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "ppOVar2 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "ppOVar2 = (this->objects_).super__Vector_base<gold::Object*,_std" (assignment_expression "ppOVar2 = (this->objects_).super__Vector_base<gold" identifier = (binary_expression "(this->objects_).super__Vector_base<gold" (field_expression "(this->objects_).super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (((handle < (void *)((int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2 >> 2)) &&\n      (pOVar3 = ppOVar2[(int)handle], pOVar3 != (Object *)0x0)) &&\n     (iVar1 = (*pOVar3->_vptr_Object[5])(pOVar3), iVar1 == 0)) {\n    return pOVar3;\n  }" if (parenthesized_expression "(((handle < (void *)((int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2 >> 2)) &&\n      (pOVar3 = ppOVar2[(int)handle], pOVar3 != (Object *)0x0)) &&\n     (iVar1 = (*pOVar3->_vptr_Object[5])(pOVar3), iVar1 == 0))" ( (binary_expression "((handle < (void *)((int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2 >> 2)) &&\n      (pOVar3 = ppOVar2[(int)handle], pOVar3 != (Object *)0x0)) &&\n     (iVar1 = (*pOVar3->_vptr_Object[5])(pOVar3), iVar1 == 0)" (parenthesized_expression "((handle < (void *)((int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2 >> 2)) &&\n      (pOVar3 = ppOVar2[(int)handle], pOVar3 != (Object *)0x0))" ( (binary_expression "(handle < (void *)((int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2 >> 2)) &&\n      (pOVar3 = ppOVar2[(int)handle], pOVar3 != (Object *)0x0)" (parenthesized_expression "(handle < (void *)((int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2 >> 2))" ( (binary_expression "handle < (void *)((int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2 >> 2)" identifier < (cast_expression "(void *)((int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2 >> 2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2 >> 2)" ( (binary_expression "(int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2 >> 2" (binary_expression "(int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish - (int)ppOVar2" (field_expression "(int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl._M_finish" (field_expression "(int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                               _M_impl" (binary_expression "(int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "(int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "(int)(this->objects_).\n                               super__Vector_base<gold::Object*,_std" (binary_expression "(int)(this->objects_).\n                               super__Vector_base<gold" (cast_expression "(int)(this->objects_).\n                               super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->objects_).\n                               super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)ppOVar2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) )) && (parenthesized_expression "(pOVar3 = ppOVar2[(int)handle], pOVar3 != (Object *)0x0)" ( (comma_expression "pOVar3 = ppOVar2[(int)handle], pOVar3 != (Object *)0x0" (assignment_expression "pOVar3 = ppOVar2[(int)handle]" identifier = (subscript_expression "ppOVar2[(int)handle]" identifier [ (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) ])) , (binary_expression "pOVar3 != (Object *)0x0" identifier != (cast_expression "(Object *)0x0" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(iVar1 = (*pOVar3->_vptr_Object[5])(pOVar3), iVar1 == 0)" ( (comma_expression "iVar1 = (*pOVar3->_vptr_Object[5])(pOVar3), iVar1 == 0" (assignment_expression "iVar1 = (*pOVar3->_vptr_Object[5])(pOVar3)" identifier = (call_expression "(*pOVar3->_vptr_Object[5])(pOVar3)" (parenthesized_expression "(*pOVar3->_vptr_Object[5])" ( (pointer_expression "*pOVar3->_vptr_Object[5]" * (subscript_expression "pOVar3->_vptr_Object[5]" (field_expression "pOVar3->_vptr_Object" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pOVar3)" ( identifier )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    return pOVar3;\n  }" { (return_statement "return pOVar3;" return identifier ;) })) (return_statement "return (Object *)0x0;" return (cast_expression "(Object *)0x0" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))
(translation_unit "int * __thiscall gold::Plugin_manager::get_elf_object(Plugin_manager *this,void *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }\n  return (int *)0x0;\n}\n\n" (declaration "int * __thiscall" primitive_type (pointer_declarator "* __thiscall" * identifier) ;) (labeled_statement "gold::Plugin_manager::get_elf_object(Plugin_manager *this,void *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }\n  return (int *)0x0;\n}" statement_identifier : (ERROR ":" :) (labeled_statement "Plugin_manager::get_elf_object(Plugin_manager *this,void *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }\n  return (int *)0x0;\n}" statement_identifier : (ERROR ":get_elf_object(Plugin_manager *this,void *param_1)" : (call_expression "get_elf_object(Plugin_manager *this,void *param_1)" identifier (argument_list "(Plugin_manager *this,void *param_1)" ( (binary_expression "Plugin_manager *this" identifier * identifier) , (binary_expression "void *param_1" identifier * identifier) )))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  \n  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }\n  return (int *)0x0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (if_statement "if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }" if (parenthesized_expression "(((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0))" ( (binary_expression "((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)" (parenthesized_expression "((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0))" ( (binary_expression "(param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)" (parenthesized_expression "(param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2))" ( (binary_expression "param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)" identifier < (cast_expression "(void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)" ( (binary_expression "*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2" (binary_expression "*(int *)(this + 0x14) - *(int *)(this + 0x10)" (pointer_expression "*(int *)(this + 0x14)" * (cast_expression "(int *)(this + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) - (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) ))))) >> number_literal) )))) )) && (parenthesized_expression "(piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)" ( (comma_expression "piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0" (assignment_expression "piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4)" identifier = (pointer_expression "*(int **)(*(int *)(this + 0x10) + (int)param_1 * 4)" * (cast_expression "(int **)(*(int *)(this + 0x10) + (int)param_1 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(this + 0x10) + (int)param_1 * 4)" ( (binary_expression "*(int *)(this + 0x10) + (int)param_1 * 4" (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) + (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) , (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)" ( (comma_expression "iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0" (assignment_expression "iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x14))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x14))" ( (pointer_expression "**(code **)(*piVar2 + 0x14)" * (pointer_expression "*(code **)(*piVar2 + 0x14)" * (cast_expression "(code **)(*piVar2 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x14)" ( (binary_expression "*piVar2 + 0x14" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    return piVar2;\n  }" { (return_statement "return piVar2;" return identifier ;) })) (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))))
(translation_unit (declaration TYPE (pointer_declarator * IDENT) ;) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR : (call_expression IDENT (argument_list ( (binary_expression IDENT * IDENT) , (binary_expression IDENT * IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_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) ))))) >> LIT) )))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (return_statement return IDENT ;) })) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) }))))
(declaration "int * __thiscall" (primitive_type "int") (pointer_declarator "* __thiscall" (* "*") (identifier "__thiscall")) (; "")) (labeled_statement "gold::Plugin_manager::get_elf_object(Plugin_manager *this,void *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }\n  return (int *)0x0;\n}" (statement_identifier "gold") (: ":") (ERROR ":" (: ":")) (labeled_statement "Plugin_manager::get_elf_object(Plugin_manager *this,void *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }\n  return (int *)0x0;\n}" (statement_identifier "Plugin_manager") (: ":") (ERROR ":get_elf_object(Plugin_manager *this,void *param_1)" (: ":") (call_expression "get_elf_object(Plugin_manager *this,void *param_1)" (identifier "get_elf_object") (argument_list "(Plugin_manager *this,void *param_1)" (( "(") (binary_expression "Plugin_manager *this" (identifier "Plugin_manager") (* "*") (identifier "this")) (, ",") (binary_expression "void *param_1" (identifier "void") (* "*") (identifier "param_1")) () ")")))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  \n  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }\n  return (int *)0x0;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (if_statement "if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {\n    return piVar2;\n  }" (if "if") (parenthesized_expression "(((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0))" (( "(") (binary_expression "((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&\n     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)" (parenthesized_expression "((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0))" (( "(") (binary_expression "(param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&\n      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)" (parenthesized_expression "(param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2))" (( "(") (binary_expression "param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)" (identifier "param_1") (< "<") (cast_expression "(void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)" (( "(") (binary_expression "*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2" (binary_expression "*(int *)(this + 0x14) - *(int *)(this + 0x10)" (pointer_expression "*(int *)(this + 0x14)" (* "*") (cast_expression "(int *)(this + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x14)" (( "(") (binary_expression "this + 0x14" (identifier "this") (+ "+") (number_literal "0x14")) () ")")))) (- "-") (pointer_expression "*(int *)(this + 0x10)" (* "*") (cast_expression "(int *)(this + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")"))))) (>> ">>") (number_literal "2")) () ")")))) () ")")) (&& "&&") (parenthesized_expression "(piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)" (( "(") (comma_expression "piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0" (assignment_expression "piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(*(int *)(this + 0x10) + (int)param_1 * 4)" (* "*") (cast_expression "(int **)(*(int *)(this + 0x10) + (int)param_1 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(this + 0x10) + (int)param_1 * 4)" (( "(") (binary_expression "*(int *)(this + 0x10) + (int)param_1 * 4" (pointer_expression "*(int *)(this + 0x10)" (* "*") (cast_expression "(int *)(this + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (* "*") (number_literal "4"))) () ")"))))) (, ",") (binary_expression "piVar2 != (int *)0x0" (identifier "piVar2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)" (( "(") (comma_expression "iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0" (assignment_expression "iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*piVar2 + 0x14))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x14))" (( "(") (pointer_expression "**(code **)(*piVar2 + 0x14)" (* "*") (pointer_expression "*(code **)(*piVar2 + 0x14)" (* "*") (cast_expression "(code **)(*piVar2 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0x14)" (( "(") (binary_expression "*piVar2 + 0x14" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(piVar2)" (( "(") (identifier "piVar2") () ")")))) (, ",") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    return piVar2;\n  }" ({ "{") (return_statement "return piVar2;" (return "return") (identifier "piVar2") (; ";")) (} "}"))) (return_statement "return (int *)0x0;" (return "return") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: Object * get_elf_object(Plugin_manager * this, void * handle) */

type_2 * __thiscall var_1::Plugin_manager::get_elf_object(Plugin_manager *this,void *var_4)

{
  int var_6;
  type_1 ppOVar2;
  type_2 *var_5;
  
  ppOVar2 = (this->objects_).super__Vector_base<var_1::type_2*,var_2::allocator<var_1::type_2*>var_3>.
            _M_impl._M_start;
  if (((var_4 < (void *)((int)(this->objects_).
                               super__Vector_base<var_1::type_2*,var_2::allocator<var_1::type_2*>var_3>.
                               _M_impl._M_finish - (int)ppOVar2 >> 2)) &&
      (var_5 = ppOVar2[(int)var_4], var_5 != (type_2 *)0x0)) &&
     (var_6 = (*var_5->_vptr_Object[5])(var_5), var_6 == 0)) {
    return var_5;
  }
  return (type_2 *)0x0;
}


(translation_unit (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier)) (MISSING ";")) (labeled_statement label: (statement_identifier) (ERROR) (labeled_statement label: (statement_identifier) (ERROR (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (binary_expression left: (identifier) right: (identifier))))) (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (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)))))) right: (parenthesized_expression (comma_expression left: (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: (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: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (return_statement (identifier)))) (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))

/* gold::Plugin_manager::MASKED(void const*) */

int * __thiscall gold::Plugin_manager::MASKED(Plugin_manager *this,void *param_1)

{
  int iVar1;
  int *piVar2;
  
  if (((param_1 < (void *)(*(int *)(this + 0x14) - *(int *)(this + 0x10) >> 2)) &&
      (piVar2 = *(int **)(*(int *)(this + 0x10) + (int)param_1 * 4), piVar2 != (int *)0x0)) &&
     (iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2), iVar1 == 0)) {
    return piVar2;
  }
  return (int *)0x0;
}

