
/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: uint next_symndx(Track_relocs<32,_false> * this) */

uint __thiscall gold::Track_relocs<32,_false>::next_symndx(Track_relocs<32,_false> *this)

{
  Target *pTVar1;
  uint uVar2;
  
  if (this->len_ <= this->pos_) {
    return 0xffffffff;
  }
  pTVar1 = parameters->target_;
  if (pTVar1 != (Target *)0x0) {
    if (pTVar1->_vptr_Target[0x3e] == Sized_target<32,_false>::get_r_sym) {
      return *(uint *)(this->prelocs_ + this->pos_ + 4) >> 8;
    }
    uVar2 = (*pTVar1->_vptr_Target[0x3e])(pTVar1,this->prelocs_ + this->pos_);
    return uVar2;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/parameters.h",0x73,"sized_target");
}



/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

uint FUN_00319d60(int *param_1)

{
  int *piVar1;
  uint uVar2;
  
  uVar2 = param_1[2];
  if ((uint)param_1[1] <= uVar2) {
    return 0xffffffff;
  }
  piVar1 = *(int **)(DAT_005ea7c8 + 0xc);
  if (piVar1 != (int *)0x0) {
    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {
      return *(uint *)(uVar2 + *param_1 + 4) >> 8;
    }
    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);
    return uVar2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);
}


CALL 0x00074f06
ADD ECX,0x2d029b
PUSH ESI
PUSH EBX
SUB ESP,0x4
MOV EDX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EDX + 0x8]
CMP EAX,dword ptr [EDX + 0x4]
JNC 0x00319db0
LEA EBX,[ECX + 0x7c8]
MOV EBX,dword ptr [EBX]
MOV EBX,dword ptr [EBX + 0xc]
TEST EBX,EBX
JZ 0x00319dd0
MOV ESI,dword ptr [EBX]
ADD EAX,dword ptr [EDX]
LEA EDX,[ECX + 0xffa86e60]
MOV ESI,dword ptr [ESI + 0xf8]
CMP ESI,EDX
JNZ 0x00319dc0
MOV EAX,dword ptr [EAX + 0x4]
ADD ESP,0x4
POP EBX
POP ESI
SHR EAX,0x8
RET
ADD ESP,0x4
MOV EAX,0xffffffff
POP EBX
POP ESI
RET
SUB ESP,0x8
PUSH EAX
PUSH EBX
CALL ESI
ADD ESP,0x10
ADD ESP,0x4
POP EBX
POP ESI
RET
PUSH EAX
LEA EAX,[ECX + 0xffeac384]
MOV EBX,ECX
PUSH EAX
LEA EAX,[ECX + 0xffe5e26d]
PUSH 0x73
PUSH EAX
CALL 0x002446e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n\nuint FUN_00319d60(int *param_1)\n\n{\n  int *piVar1;\n  uint uVar2;\n  \n  uVar2 = param_1[2];\n  if ((uint)param_1[1] <= uVar2) {\n    return 0xffffffff;\n  }\n  piVar1 = *(int **)(DAT_005ea7c8 + 0xc);\n  if (piVar1 != (int *)0x0) {\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);\n}\n\n" comment (function_definition "uint FUN_00319d60(int *param_1)\n\n{\n  int *piVar1;\n  uint uVar2;\n  \n  uVar2 = param_1[2];\n  if ((uint)param_1[1] <= uVar2) {\n    return 0xffffffff;\n  }\n  piVar1 = *(int **)(DAT_005ea7c8 + 0xc);\n  if (piVar1 != (int *)0x0) {\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);\n}" type_identifier (function_declarator "FUN_00319d60(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  \n  uVar2 = param_1[2];\n  if ((uint)param_1[1] <= uVar2) {\n    return 0xffffffff;\n  }\n  piVar1 = *(int **)(DAT_005ea7c8 + 0xc);\n  if (piVar1 != (int *)0x0) {\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (expression_statement "uVar2 = param_1[2];" (assignment_expression "uVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (if_statement "if ((uint)param_1[1] <= uVar2) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "((uint)param_1[1] <= uVar2)" ( (binary_expression "(uint)param_1[1] <= uVar2" (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "piVar1 = *(int **)(DAT_005ea7c8 + 0xc);" (assignment_expression "piVar1 = *(int **)(DAT_005ea7c8 + 0xc)" identifier = (pointer_expression "*(int **)(DAT_005ea7c8 + 0xc)" * (cast_expression "(int **)(DAT_005ea7c8 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_005ea7c8 + 0xc)" ( (binary_expression "DAT_005ea7c8 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (piVar1 != (int *)0x0) {\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }" if (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }" { (if_statement "if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }" if (parenthesized_expression "(*(code **)(*piVar1 + 0xf8) == FUN_00070e60)" ( (binary_expression "*(code **)(*piVar1 + 0xf8) == FUN_00070e60" (pointer_expression "*(code **)(*piVar1 + 0xf8)" * (cast_expression "(code **)(*piVar1 + 0xf8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0xf8)" ( (binary_expression "*piVar1 + 0xf8" (pointer_expression "*piVar1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }" { (return_statement "return *(uint *)(uVar2 + *param_1 + 4) >> 8;" return (binary_expression "*(uint *)(uVar2 + *param_1 + 4) >> 8" (pointer_expression "*(uint *)(uVar2 + *param_1 + 4)" * (cast_expression "(uint *)(uVar2 + *param_1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + *param_1 + 4)" ( (binary_expression "uVar2 + *param_1 + 4" (binary_expression "uVar2 + *param_1" identifier + (pointer_expression "*param_1" * identifier)) + number_literal) )))) >> number_literal) ;) })) (expression_statement "uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);" (assignment_expression "uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1)" identifier = (call_expression "(**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1)" (parenthesized_expression "(**(code **)(*piVar1 + 0xf8))" ( (pointer_expression "**(code **)(*piVar1 + 0xf8)" * (pointer_expression "*(code **)(*piVar1 + 0xf8)" * (cast_expression "(code **)(*piVar1 + 0xf8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0xf8)" ( (binary_expression "*piVar1 + 0xf8" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1,uVar2 + *param_1)" ( identifier , (binary_expression "uVar2 + *param_1" identifier + (pointer_expression "*param_1" * identifier)) )))) ;) (return_statement "return uVar2;" return identifier ;) })) comment (expression_statement "FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);" (call_expression "FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2)" identifier (argument_list "("../../gold/parameters.h",0x73,"sized_target",uVar2)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""sized_target"" " string_content ") , identifier ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* DWARF original prototype: uint next_symndx(Track_relocs<32,_false> * this) */\n\nuint __thiscall gold::Track_relocs<32,_false>::next_symndx(Track_relocs<32,_false> *this)\n\n{\n  Target *pTVar1;\n  uint uVar2;\n  \n  if (this->len_ <= this->pos_) {\n    return 0xffffffff;\n  }\n  pTVar1 = parameters->target_;\n  if (pTVar1 != (Target *)0x0) {\n    if (pTVar1->_vptr_Target[0x3e] == Sized_target<32,_false>::get_r_sym) {\n      return *(uint *)(this->prelocs_ + this->pos_ + 4) >> 8;\n    }\n    uVar2 = (*pTVar1->_vptr_Target[0x3e])(pTVar1,this->prelocs_ + this->pos_);\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/parameters.h",0x73,"sized_target");\n}\n\n" comment comment comment comment (declaration "uint __thiscall gold::Track_relocs<32,_false>::next_symndx(Track_relocs<32,_false> *this)\n\n{\n  Target *pTVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_false>::next_symndx(Track_relocs<32,_false> *this)\n\n{\n  Target" identifier > : : (function_declarator "next_symndx(Track_relocs<32,_false> *this)" identifier (parameter_list "(Track_relocs<32,_false> *this)" ( (parameter_declaration "Track_relocs" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) ))) { identifier) (pointer_declarator "*pTVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (if_statement "if (this->len_ <= this->pos_) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(this->len_ <= this->pos_)" ( (binary_expression "this->len_ <= this->pos_" (field_expression "this->len_" identifier -> field_identifier) <= (field_expression "this->pos_" identifier -> field_identifier)) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "pTVar1 = parameters->target_;" (assignment_expression "pTVar1 = parameters->target_" identifier = (field_expression "parameters->target_" identifier -> field_identifier)) ;) (if_statement "if (pTVar1 != (Target *)0x0) {\n    if (pTVar1->_vptr_Target[0x3e] == Sized_target<32,_false>::get_r_sym) {\n      return *(uint *)(this->prelocs_ + this->pos_ + 4) >> 8;\n    }\n    uVar2 = (*pTVar1->_vptr_Target[0x3e])(pTVar1,this->prelocs_ + this->pos_);\n    return uVar2;\n  }" if (parenthesized_expression "(pTVar1 != (Target *)0x0)" ( (binary_expression "pTVar1 != (Target *)0x0" identifier != (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (pTVar1->_vptr_Target[0x3e] == Sized_target<32,_false>::get_r_sym) {\n      return *(uint *)(this->prelocs_ + this->pos_ + 4) >> 8;\n    }\n    uVar2 = (*pTVar1->_vptr_Target[0x3e])(pTVar1,this->prelocs_ + this->pos_);\n    return uVar2;\n  }" { (if_statement "if (pTVar1->_vptr_Target[0x3e] == Sized_target<32,_false>::get_r_sym) {\n      return *(uint *)(this->prelocs_ + this->pos_ + 4) >> 8;\n    }" if (parenthesized_expression "(pTVar1->_vptr_Target[0x3e] == Sized_target<32,_false>::get_r_sym)" ( (comma_expression "pTVar1->_vptr_Target[0x3e] == Sized_target<32,_false>::get_r_sym" (binary_expression "pTVar1->_vptr_Target[0x3e] == Sized_target<32" (subscript_expression "pTVar1->_vptr_Target[0x3e]" (field_expression "pTVar1->_vptr_Target" identifier -> field_identifier) [ number_literal ]) == (binary_expression "Sized_target<32" identifier < number_literal)) , (binary_expression "_false>::get_r_sym" identifier > (ERROR "::" : :) identifier)) )) (compound_statement "{\n      return *(uint *)(this->prelocs_ + this->pos_ + 4) >> 8;\n    }" { (return_statement "return *(uint *)(this->prelocs_ + this->pos_ + 4) >> 8;" return (binary_expression "*(uint *)(this->prelocs_ + this->pos_ + 4) >> 8" (pointer_expression "*(uint *)(this->prelocs_ + this->pos_ + 4)" * (cast_expression "(uint *)(this->prelocs_ + this->pos_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this->prelocs_ + this->pos_ + 4)" ( (binary_expression "this->prelocs_ + this->pos_ + 4" (binary_expression "this->prelocs_ + this->pos_" (field_expression "this->prelocs_" identifier -> field_identifier) + (field_expression "this->pos_" identifier -> field_identifier)) + number_literal) )))) >> number_literal) ;) })) (expression_statement "uVar2 = (*pTVar1->_vptr_Target[0x3e])(pTVar1,this->prelocs_ + this->pos_);" (assignment_expression "uVar2 = (*pTVar1->_vptr_Target[0x3e])(pTVar1,this->prelocs_ + this->pos_)" identifier = (call_expression "(*pTVar1->_vptr_Target[0x3e])(pTVar1,this->prelocs_ + this->pos_)" (parenthesized_expression "(*pTVar1->_vptr_Target[0x3e])" ( (pointer_expression "*pTVar1->_vptr_Target[0x3e]" * (subscript_expression "pTVar1->_vptr_Target[0x3e]" (field_expression "pTVar1->_vptr_Target" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pTVar1,this->prelocs_ + this->pos_)" ( identifier , (binary_expression "this->prelocs_ + this->pos_" (field_expression "this->prelocs_" identifier -> field_identifier) + (field_expression "this->pos_" identifier -> field_identifier)) )))) ;) (return_statement "return uVar2;" return identifier ;) })) comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x73,"sized_target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x73,"sized_target")" identifier (argument_list "("../../gold/parameters.h",0x73,"sized_target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""sized_target"" " string_content ") ))) ;) (ERROR "}" }))
(translation_unit "uint FUN_00319d60(int *param_1)\n\n{\n  int *piVar1;\n  uint uVar2;\n  \n  uVar2 = param_1[2];\n  if ((uint)param_1[1] <= uVar2) {\n    return 0xffffffff;\n  }\n  piVar1 = *(int **)(DAT_005ea7c8 + 0xc);\n  if (piVar1 != (int *)0x0) {\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }\n                    \n  FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);\n}\n\n" (function_definition "uint FUN_00319d60(int *param_1)\n\n{\n  int *piVar1;\n  uint uVar2;\n  \n  uVar2 = param_1[2];\n  if ((uint)param_1[1] <= uVar2) {\n    return 0xffffffff;\n  }\n  piVar1 = *(int **)(DAT_005ea7c8 + 0xc);\n  if (piVar1 != (int *)0x0) {\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }\n                    \n  FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);\n}" type_identifier (function_declarator "FUN_00319d60(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  \n  uVar2 = param_1[2];\n  if ((uint)param_1[1] <= uVar2) {\n    return 0xffffffff;\n  }\n  piVar1 = *(int **)(DAT_005ea7c8 + 0xc);\n  if (piVar1 != (int *)0x0) {\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }\n                    \n  FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (expression_statement "uVar2 = param_1[2];" (assignment_expression "uVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (if_statement "if ((uint)param_1[1] <= uVar2) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "((uint)param_1[1] <= uVar2)" ( (binary_expression "(uint)param_1[1] <= uVar2" (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "piVar1 = *(int **)(DAT_005ea7c8 + 0xc);" (assignment_expression "piVar1 = *(int **)(DAT_005ea7c8 + 0xc)" identifier = (pointer_expression "*(int **)(DAT_005ea7c8 + 0xc)" * (cast_expression "(int **)(DAT_005ea7c8 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_005ea7c8 + 0xc)" ( (binary_expression "DAT_005ea7c8 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (piVar1 != (int *)0x0) {\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }" if (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }" { (if_statement "if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }" if (parenthesized_expression "(*(code **)(*piVar1 + 0xf8) == FUN_00070e60)" ( (binary_expression "*(code **)(*piVar1 + 0xf8) == FUN_00070e60" (pointer_expression "*(code **)(*piVar1 + 0xf8)" * (cast_expression "(code **)(*piVar1 + 0xf8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0xf8)" ( (binary_expression "*piVar1 + 0xf8" (pointer_expression "*piVar1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }" { (return_statement "return *(uint *)(uVar2 + *param_1 + 4) >> 8;" return (binary_expression "*(uint *)(uVar2 + *param_1 + 4) >> 8" (pointer_expression "*(uint *)(uVar2 + *param_1 + 4)" * (cast_expression "(uint *)(uVar2 + *param_1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + *param_1 + 4)" ( (binary_expression "uVar2 + *param_1 + 4" (binary_expression "uVar2 + *param_1" identifier + (pointer_expression "*param_1" * identifier)) + number_literal) )))) >> number_literal) ;) })) (expression_statement "uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);" (assignment_expression "uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1)" identifier = (call_expression "(**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1)" (parenthesized_expression "(**(code **)(*piVar1 + 0xf8))" ( (pointer_expression "**(code **)(*piVar1 + 0xf8)" * (pointer_expression "*(code **)(*piVar1 + 0xf8)" * (cast_expression "(code **)(*piVar1 + 0xf8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0xf8)" ( (binary_expression "*piVar1 + 0xf8" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1,uVar2 + *param_1)" ( identifier , (binary_expression "uVar2 + *param_1" identifier + (pointer_expression "*param_1" * identifier)) )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);" (call_expression "FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2)" identifier (argument_list "("../../gold/parameters.h",0x73,"sized_target",uVar2)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""sized_target"" " string_content ") , identifier ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (return_statement return (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (pointer_expression * IDENT)) + LIT) )))) >> LIT) ;) })) (expression_statement (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 + (pointer_expression * IDENT)) )))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })))
(function_definition "uint FUN_00319d60(int *param_1)\n\n{\n  int *piVar1;\n  uint uVar2;\n  \n  uVar2 = param_1[2];\n  if ((uint)param_1[1] <= uVar2) {\n    return 0xffffffff;\n  }\n  piVar1 = *(int **)(DAT_005ea7c8 + 0xc);\n  if (piVar1 != (int *)0x0) {\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }\n                    \n  FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);\n}" (type_identifier "uint") (function_declarator "FUN_00319d60(int *param_1)" (identifier "FUN_00319d60") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  \n  uVar2 = param_1[2];\n  if ((uint)param_1[1] <= uVar2) {\n    return 0xffffffff;\n  }\n  piVar1 = *(int **)(DAT_005ea7c8 + 0xc);\n  if (piVar1 != (int *)0x0) {\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }\n                    \n  FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (expression_statement "uVar2 = param_1[2];" (assignment_expression "uVar2 = param_1[2]" (identifier "uVar2") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((uint)param_1[1] <= uVar2) {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "((uint)param_1[1] <= uVar2)" (( "(") (binary_expression "(uint)param_1[1] <= uVar2" (cast_expression "(uint)param_1[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (<= "<=") (identifier "uVar2")) () ")")) (compound_statement "{\n    return 0xffffffff;\n  }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (expression_statement "piVar1 = *(int **)(DAT_005ea7c8 + 0xc);" (assignment_expression "piVar1 = *(int **)(DAT_005ea7c8 + 0xc)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(DAT_005ea7c8 + 0xc)" (* "*") (cast_expression "(int **)(DAT_005ea7c8 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_005ea7c8 + 0xc)" (( "(") (binary_expression "DAT_005ea7c8 + 0xc" (identifier "DAT_005ea7c8") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (piVar1 != (int *)0x0) {\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }" (if "if") (parenthesized_expression "(piVar1 != (int *)0x0)" (( "(") (binary_expression "piVar1 != (int *)0x0" (identifier "piVar1") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }\n    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);\n    return uVar2;\n  }" ({ "{") (if_statement "if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }" (if "if") (parenthesized_expression "(*(code **)(*piVar1 + 0xf8) == FUN_00070e60)" (( "(") (binary_expression "*(code **)(*piVar1 + 0xf8) == FUN_00070e60" (pointer_expression "*(code **)(*piVar1 + 0xf8)" (* "*") (cast_expression "(code **)(*piVar1 + 0xf8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 0xf8)" (( "(") (binary_expression "*piVar1 + 0xf8" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "0xf8")) () ")")))) (== "==") (identifier "FUN_00070e60")) () ")")) (compound_statement "{\n      return *(uint *)(uVar2 + *param_1 + 4) >> 8;\n    }" ({ "{") (return_statement "return *(uint *)(uVar2 + *param_1 + 4) >> 8;" (return "return") (binary_expression "*(uint *)(uVar2 + *param_1 + 4) >> 8" (pointer_expression "*(uint *)(uVar2 + *param_1 + 4)" (* "*") (cast_expression "(uint *)(uVar2 + *param_1 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + *param_1 + 4)" (( "(") (binary_expression "uVar2 + *param_1 + 4" (binary_expression "uVar2 + *param_1" (identifier "uVar2") (+ "+") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (+ "+") (number_literal "4")) () ")")))) (>> ">>") (number_literal "8")) (; ";")) (} "}"))) (expression_statement "uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);" (assignment_expression "uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1)" (parenthesized_expression "(**(code **)(*piVar1 + 0xf8))" (( "(") (pointer_expression "**(code **)(*piVar1 + 0xf8)" (* "*") (pointer_expression "*(code **)(*piVar1 + 0xf8)" (* "*") (cast_expression "(code **)(*piVar1 + 0xf8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 0xf8)" (( "(") (binary_expression "*piVar1 + 0xf8" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "0xf8")) () ")"))))) () ")")) (argument_list "(piVar1,uVar2 + *param_1)" (( "(") (identifier "piVar1") (, ",") (binary_expression "uVar2 + *param_1" (identifier "uVar2") (+ "+") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);" (call_expression "FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2)" (identifier "FUN_002446e0") (argument_list "("../../gold/parameters.h",0x73,"sized_target",uVar2)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x73") (, ",") (string_literal ""sized_target"" (" """) (string_content "sized_target") (" """)) (, ",") (identifier "uVar2") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: uint next_symndx(Track_relocs<32,_false> * this) */

type_1 __thiscall gold::Track_relocs<32,var_3>::next_symndx(Track_relocs<32,var_3> *this)

{
  type_2 *var_1;
  type_1 uVar2;
  
  if (this->len_ <= this->pos_) {
    return 0xffffffff;
  }
  var_1 = parameters->target_;
  if (var_1 != (type_2 *)0x0) {
    if (var_1->_vptr_Target[0x3e] == var_2<32,var_3>::var_4) {
      return *(type_1 *)(this->prelocs_ + this->pos_ + 4) >> 8;
    }
    uVar2 = (*var_1->_vptr_Target[0x3e])(var_1,this->prelocs_ + this->pos_);
    return uVar2;
  }
                    /* WARNING: Subroutine does not return */
  var_5("../../gold/parameters.h",0x73,"sized_target");
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (return_statement (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (number_literal))))) right: (number_literal))))) (expression_statement (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) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (return_statement (identifier)))) (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.cx replaced with injection: get_pc_thunk_cx */

uint MASKED(int *param_1)

{
  int *piVar1;
  uint uVar2;
  
  uVar2 = param_1[2];
  if ((uint)param_1[1] <= uVar2) {
    return 0xffffffff;
  }
  piVar1 = *(int **)(DAT_005ea7c8 + 0xc);
  if (piVar1 != (int *)0x0) {
    if (*(code **)(*piVar1 + 0xf8) == FUN_00070e60) {
      return *(uint *)(uVar2 + *param_1 + 4) >> 8;
    }
    uVar2 = (**(code **)(*piVar1 + 0xf8))(piVar1,uVar2 + *param_1);
    return uVar2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_002446e0("../../gold/parameters.h",0x73,"sized_target",uVar2);
}

