
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: uint sym_xindex_to_shndx(Xindex * this, Object * object, uint symndx)
    */

uint __thiscall gold::Xindex::sym_xindex_to_shndx(Xindex *this,Object *object,uint symndx)

{
}



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

uint FUN_00121c60(int param_1,int param_2,uint param_3)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {
    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);
    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {
      return uVar1;
    }
    uVar2 = gettext("extended index for symbol %u out of range: %u");
  }
  else {
    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");
  }
  FUN_00121be0(param_2,uVar2,param_3);
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0003a210
ADD EBX,0x2f2397
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ESP + 0x28]
MOV ESI,dword ptr [ESP + 0x24]
MOV EDX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EAX + 0x8]
SUB EAX,EDX
SAR EAX,0x2
CMP EDI,EAX
JNC 0x00121ce0
MOV EBP,dword ptr [EDX + EDI*0x4]
CMP EBP,0xfeff
JBE 0x00121cb0
CMP EBP,dword ptr [ESI + 0x28]
JNC 0x00121cb0
ADD ESP,0xc
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
LEA EAX,[EBX + 0xffeeaf68]
PUSH EAX
CALL 0x0002c440
ADD ESP,0x10
PUSH EBP
PUSH EDI
XOR EBP,EBP
PUSH EAX
PUSH ESI
CALL 0x00121be0
ADD ESP,0x10
MOV EAX,EBP
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
LEA EAX,[EBX + 0xffeeaf34]
PUSH EAX
CALL 0x0002c440
ADD ESP,0xc
JMP 0x00121cc3
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint FUN_00121c60(int param_1,int param_2,uint param_3)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  \n  if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }\n  else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }\n  FUN_00121be0(param_2,uVar2,param_3);\n  return 0;\n}\n\n" comment (function_definition "uint FUN_00121c60(int param_1,int param_2,uint param_3)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  \n  if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }\n  else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }\n  FUN_00121be0(param_2,uVar2,param_3);\n  return 0;\n}" type_identifier (function_declarator "FUN_00121c60(int param_1,int param_2,uint param_3)" identifier (parameter_list "(int param_1,int param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  undefined4 uVar2;\n  \n  if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }\n  else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }\n  FUN_00121be0(param_2,uVar2,param_3);\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (if_statement "if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }\n  else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }" if (parenthesized_expression "(param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2))" ( (binary_expression "param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)" identifier < (call_expression "(uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)" ( (binary_expression "*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2" (binary_expression "*(int *)(param_1 + 8) - *(int *)(param_1 + 4)" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) >> number_literal) )))) )) (compound_statement "{\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }" { (expression_statement "uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);" (assignment_expression "uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4)" identifier = (pointer_expression "*(uint *)(*(int *)(param_1 + 4) + param_3 * 4)" * (cast_expression "(uint *)(*(int *)(param_1 + 4) + param_3 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + param_3 * 4)" ( (binary_expression "*(int *)(param_1 + 4) + param_3 * 4" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + (binary_expression "param_3 * 4" identifier * number_literal)) ))))) ;) (if_statement "if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }" if (parenthesized_expression "((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28)))" ( (binary_expression "(0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))" (parenthesized_expression "(0xfeff < uVar1)" ( (binary_expression "0xfeff < uVar1" number_literal < identifier) )) && (parenthesized_expression "(uVar1 < *(uint *)(param_2 + 0x28))" ( (binary_expression "uVar1 < *(uint *)(param_2 + 0x28)" identifier < (pointer_expression "*(uint *)(param_2 + 0x28)" * (cast_expression "(uint *)(param_2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      return uVar1;\n    }" { (return_statement "return uVar1;" return identifier ;) })) (expression_statement "uVar2 = gettext("extended index for symbol %u out of range: %u");" (assignment_expression "uVar2 = gettext("extended index for symbol %u out of range: %u")" identifier = (call_expression "gettext("extended index for symbol %u out of range: %u")" identifier (argument_list "("extended index for symbol %u out of range: %u")" ( (string_literal ""extended index for symbol %u out of range: %u"" " string_content ") )))) ;) }) (else_clause "else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }" else (compound_statement "{\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }" { (expression_statement "uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");" (assignment_expression "uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section")" identifier = (call_expression "gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section")" identifier (argument_list "("symbol %u out of range for SHT_SYMTAB_SHNDX section")" ( (string_literal ""symbol %u out of range for SHT_SYMTAB_SHNDX section"" " string_content ") )))) ;) }))) (expression_statement "FUN_00121be0(param_2,uVar2,param_3);" (call_expression "FUN_00121be0(param_2,uVar2,param_3)" identifier (argument_list "(param_2,uVar2,param_3)" ( identifier , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: uint sym_xindex_to_shndx(Xindex * this, Object * object, uint symndx)\n    */\n\nuint __thiscall gold::Xindex::sym_xindex_to_shndx(Xindex *this,Object *object,uint symndx)\n\n{\n}\n\n" comment comment (function_definition "uint __thiscall gold::Xindex::sym_xindex_to_shndx(Xindex *this,Object *object,uint symndx)\n\n{\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Xindex::" identifier : : identifier : :) (function_declarator "sym_xindex_to_shndx(Xindex *this,Object *object,uint symndx)" identifier (parameter_list "(Xindex *this,Object *object,uint symndx)" ( (parameter_declaration "Xindex *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Object *object" type_identifier (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint symndx" type_identifier identifier) ))) (compound_statement "{\n}" { })))
(translation_unit "uint FUN_00121c60(int param_1,int param_2,uint param_3)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  \n  if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }\n  else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }\n  FUN_00121be0(param_2,uVar2,param_3);\n  return 0;\n}\n\n" (function_definition "uint FUN_00121c60(int param_1,int param_2,uint param_3)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  \n  if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }\n  else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }\n  FUN_00121be0(param_2,uVar2,param_3);\n  return 0;\n}" type_identifier (function_declarator "FUN_00121c60(int param_1,int param_2,uint param_3)" identifier (parameter_list "(int param_1,int param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  undefined4 uVar2;\n  \n  if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }\n  else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }\n  FUN_00121be0(param_2,uVar2,param_3);\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (if_statement "if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }\n  else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }" if (parenthesized_expression "(param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2))" ( (binary_expression "param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)" identifier < (call_expression "(uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)" ( (binary_expression "*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2" (binary_expression "*(int *)(param_1 + 8) - *(int *)(param_1 + 4)" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) >> number_literal) )))) )) (compound_statement "{\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }" { (expression_statement "uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);" (assignment_expression "uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4)" identifier = (pointer_expression "*(uint *)(*(int *)(param_1 + 4) + param_3 * 4)" * (cast_expression "(uint *)(*(int *)(param_1 + 4) + param_3 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + param_3 * 4)" ( (binary_expression "*(int *)(param_1 + 4) + param_3 * 4" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + (binary_expression "param_3 * 4" identifier * number_literal)) ))))) ;) (if_statement "if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }" if (parenthesized_expression "((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28)))" ( (binary_expression "(0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))" (parenthesized_expression "(0xfeff < uVar1)" ( (binary_expression "0xfeff < uVar1" number_literal < identifier) )) && (parenthesized_expression "(uVar1 < *(uint *)(param_2 + 0x28))" ( (binary_expression "uVar1 < *(uint *)(param_2 + 0x28)" identifier < (pointer_expression "*(uint *)(param_2 + 0x28)" * (cast_expression "(uint *)(param_2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      return uVar1;\n    }" { (return_statement "return uVar1;" return identifier ;) })) (expression_statement "uVar2 = gettext("extended index for symbol %u out of range: %u");" (assignment_expression "uVar2 = gettext("extended index for symbol %u out of range: %u")" identifier = (call_expression "gettext("extended index for symbol %u out of range: %u")" identifier (argument_list "("extended index for symbol %u out of range: %u")" ( (string_literal ""extended index for symbol %u out of range: %u"" " string_content ") )))) ;) }) (else_clause "else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }" else (compound_statement "{\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }" { (expression_statement "uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");" (assignment_expression "uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section")" identifier = (call_expression "gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section")" identifier (argument_list "("symbol %u out of range for SHT_SYMTAB_SHNDX section")" ( (string_literal ""symbol %u out of range for SHT_SYMTAB_SHNDX section"" " string_content ") )))) ;) }))) (expression_statement "FUN_00121be0(param_2,uVar2,param_3);" (call_expression "FUN_00121be0(param_2,uVar2,param_3)" identifier (argument_list "(param_2,uVar2,param_3)" ( identifier , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (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) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return LIT ;) })))
(function_definition "uint FUN_00121c60(int param_1,int param_2,uint param_3)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  \n  if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }\n  else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }\n  FUN_00121be0(param_2,uVar2,param_3);\n  return 0;\n}" (type_identifier "uint") (function_declarator "FUN_00121c60(int param_1,int param_2,uint param_3)" (identifier "FUN_00121c60") (parameter_list "(int param_1,int param_2,uint param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  uint uVar1;\n  undefined4 uVar2;\n  \n  if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }\n  else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }\n  FUN_00121be0(param_2,uVar2,param_3);\n  return 0;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (if_statement "if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }\n  else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }" (if "if") (parenthesized_expression "(param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2))" (( "(") (binary_expression "param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)" (identifier "param_3") (< "<") (call_expression "(uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)" (( "(") (binary_expression "*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2" (binary_expression "*(int *)(param_1 + 8) - *(int *)(param_1 + 4)" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (- "-") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (>> ">>") (number_literal "2")) () ")")))) () ")")) (compound_statement "{\n    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);\n    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }\n    uVar2 = gettext("extended index for symbol %u out of range: %u");\n  }" ({ "{") (expression_statement "uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);" (assignment_expression "uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(*(int *)(param_1 + 4) + param_3 * 4)" (* "*") (cast_expression "(uint *)(*(int *)(param_1 + 4) + param_3 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 4) + param_3 * 4)" (( "(") (binary_expression "*(int *)(param_1 + 4) + param_3 * 4" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "param_3 * 4" (identifier "param_3") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {\n      return uVar1;\n    }" (if "if") (parenthesized_expression "((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28)))" (( "(") (binary_expression "(0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))" (parenthesized_expression "(0xfeff < uVar1)" (( "(") (binary_expression "0xfeff < uVar1" (number_literal "0xfeff") (< "<") (identifier "uVar1")) () ")")) (&& "&&") (parenthesized_expression "(uVar1 < *(uint *)(param_2 + 0x28))" (( "(") (binary_expression "uVar1 < *(uint *)(param_2 + 0x28)" (identifier "uVar1") (< "<") (pointer_expression "*(uint *)(param_2 + 0x28)" (* "*") (cast_expression "(uint *)(param_2 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n      return uVar1;\n    }" ({ "{") (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}"))) (expression_statement "uVar2 = gettext("extended index for symbol %u out of range: %u");" (assignment_expression "uVar2 = gettext("extended index for symbol %u out of range: %u")" (identifier "uVar2") (= "=") (call_expression "gettext("extended index for symbol %u out of range: %u")" (identifier "gettext") (argument_list "("extended index for symbol %u out of range: %u")" (( "(") (string_literal ""extended index for symbol %u out of range: %u"" (" """) (string_content "extended index for symbol %u out of range: %u") (" """)) () ")")))) (; ";")) (} "}")) (else_clause "else {\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }" (else "else") (compound_statement "{\n    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");\n  }" ({ "{") (expression_statement "uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");" (assignment_expression "uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section")" (identifier "uVar2") (= "=") (call_expression "gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section")" (identifier "gettext") (argument_list "("symbol %u out of range for SHT_SYMTAB_SHNDX section")" (( "(") (string_literal ""symbol %u out of range for SHT_SYMTAB_SHNDX section"" (" """) (string_content "symbol %u out of range for SHT_SYMTAB_SHNDX section") (" """)) () ")")))) (; ";")) (} "}")))) (expression_statement "FUN_00121be0(param_2,uVar2,param_3);" (call_expression "FUN_00121be0(param_2,uVar2,param_3)" (identifier "FUN_00121be0") (argument_list "(param_2,uVar2,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "uVar2") (, ",") (identifier "param_3") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: uint sym_xindex_to_shndx(Xindex * this, Object * object, uint symndx)
    */

type_1 __thiscall gold::type_2::function_1(type_2 *this,type_3 *object,type_1 symndx)

{
}


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

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

uint MASKED(int param_1,int param_2,uint param_3)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (param_3 < (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4) >> 2)) {
    uVar1 = *(uint *)(*(int *)(param_1 + 4) + param_3 * 4);
    if ((0xfeff < uVar1) && (uVar1 < *(uint *)(param_2 + 0x28))) {
      return uVar1;
    }
    uVar2 = gettext("extended index for symbol %u out of range: %u");
  }
  else {
    uVar2 = gettext("symbol %u out of range for SHT_SYMTAB_SHNDX section");
  }
  FUN_00121be0(param_2,uVar2,param_3);
  return 0;
}

