
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: uint symbol_section_and_value(Sized_relobj_file<32,_true> * this, uint
   sym, Address * value, bool * is_ordinary) */

uint __thiscall
gold::Sized_relobj_file<32,_true>::symbol_section_and_value
          (Sized_relobj_file<32,_true> *this,uint sym,Address *value,bool *is_ordinary)

{
  uint uVar1;
  undefined *puVar2;
  Xindex *this_00;
  Input_file *this_01;
  _func_int_varargs *p_Var3;
  Location loc;
  section_size_type symbols_size;
  
  p_Var3 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object[0xe];
  if (p_Var3 == (_func_int_varargs *)PTR_do_section_contents_004c3d5c) {
    elfcpp::Elf_file<32,_true,_gold::Object>::section_contents
              (&loc,&this->elf_file_,this->symtab_shndx_);
    if (loc.data_size._0_4_ == 0) {
      symbols_size = loc.data_size._4_4_;
      puVar2 = PTR_empty_004c1fd4;
      if (loc.data_size._4_4_ != 0) {
        this_01 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.input_file_;
        if (this_01 == (Input_file *)0x0) goto LAB_001dd42c;
        puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(&this_01->file_);
      }
      goto LAB_001dd2dc;
    }
  }
  else {
    puVar2 = (undefined *)(*p_Var3)(this,this->symtab_shndx_,&symbols_size,0);
LAB_001dd2dc:
    if (sym < symbols_size >> 4) {
      uVar1 = (uint)*(ushort *)(puVar2 + sym * 0x10 + 0xe);
      *value = *(Address *)(puVar2 + sym * 0x10 + 4);
      if (0xfeff < uVar1) {
        if (uVar1 != 0xffff) {
          *is_ordinary = false;
          return uVar1;
        }
        this_00 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;
        if (this_00 == (Xindex *)0x0) {
          this_00 = (Xindex *)
                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object
                      [0x1b])(this);
          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;
        }
        uVar1 = Xindex::sym_xindex_to_shndx(this_00,(Object *)this,sym);
      }
      *is_ordinary = true;
      return uVar1;
    }
    (*(code *)PTR_do_gold_unreachable_004c1a30)
              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);
  }
  this_01 = (Input_file *)(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584);
  (*(code *)PTR_do_gold_unreachable_004c1a30)(this_01,0xc0,PTR_s__s_004c1a50 + 0x5d64);
LAB_001dd42c:
                    /* WARNING: Subroutine does not return */
  Object::input_file((Object *)this_01);
}



/* gold::Sized_relobj_file<32, true>::symbol_section_and_value(unsigned int, unsigned int*, bool*)
    */

void __thiscall
gold::Sized_relobj_file<32,true>::symbol_section_and_value
          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)

{
  ushort uVar1;
  undefined *puVar2;
  Xindex *this_00;
  undefined1 local_30 [8];
  int local_28;
  uint local_24;
  uint local_20 [3];
  
  if (*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c) {
    elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);
    if (local_28 != 0) {
      (*(code *)PTR_do_gold_unreachable_004c1a30)
                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,
                 PTR_s__s_004c1a50 + 0x5d64);
      return;
    }
    local_20[0] = local_24;
    puVar2 = PTR_empty_004c1fd4;
    if (local_24 != 0) {
      if (*(int *)(this + 0x1c) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_001ce8a4();
      }
      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);
    }
  }
  else {
    puVar2 = (undefined *)
             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);
  }
  if (local_20[0] >> 4 <= param_1) {
    (*(code *)PTR_do_gold_unreachable_004c1a30)
              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);
    return;
  }
  uVar1 = *(ushort *)(puVar2 + param_1 * 0x10 + 0xe);
  *param_2 = *(uint *)(puVar2 + param_1 * 0x10 + 4);
  if (0xfeff < uVar1) {
    if (uVar1 != 0xffff) {
      *param_3 = false;
      return;
    }
    this_00 = *(Xindex **)(this + 0x30);
    if (this_00 == (Xindex *)0x0) {
      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);
      *(Xindex **)(this + 0x30) = this_00;
    }
    Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);
  }
  *param_3 = true;
  return;
}


lui gp,0x2f
addiu gp,gp,-0x4020
addu gp,gp,t9
addiu sp,sp,-0x60
lw v1,-0x54e4(gp)
lw v0,0xb4(a0)
sw s3,0x58(sp)
or s3,a1,zero
lw a1,0x0(a0)
sw gp,0x28(sp)
sw s2,0x54(sp)
or s2,a3,zero
sw s1,0x50(sp)
or s1,a2,zero
sw s0,0x4c(sp)
sw ra,0x5c(sp)
lw t9,0x38(a1)
bne t9,v1,0x001dd3b8
_or s0,a0,zero
lw t9,-0x54e0(gp)
addiu a1,a0,0x90
addiu a0,sp,0x30
bal 0x001dd114
_or a2,v0,zero
lw v0,0x38(sp)
lw gp,0x28(sp)
bne v0,zero,0x001dd410
_lw v1,0x3c(sp)
bne v1,zero,0x001dd330
_sw v1,0x40(sp)
lw v0,-0x726c(gp)
srl v1,v1,0x4
sltu v1,s3,v1
beq v1,zero,0x001dd3f4
_sll v1,s3,0x4
addu v1,v0,v1
lhu v0,0xe(v1)
lw a0,0x4(v1)
ori v1,zero,0xff00
sltu v1,v0,v1
bne v1,zero,0x001dd394
_sw a0,0x0(s1)
ori v1,zero,0xffff
beq v0,v1,0x001dd378
_lw ra,0x5c(sp)
lw s3,0x58(sp)
lw s1,0x50(sp)
lw s0,0x4c(sp)
sb zero,0x0(s2)
lw s2,0x54(sp)
jr ra
_addiu sp,sp,0x60
lw a0,0x1c(s0)
lw t1,0x34(sp)
beq a0,zero,0x001dd42c
_lw t0,0x30(sp)
lw a3,0x24(s0)
li v0,0x1
lw a2,0x20(s0)
addiu a0,a0,0x20
lw t9,-0x76cc(gp)
sw v1,0x18(sp)
sw zero,0x20(sp)
sw v0,0x1c(sp)
sw t1,0x14(sp)
jalr t9
_sw t0,0x10(sp)
lw gp,0x28(sp)
b 0x001dd2dc
_lw v1,0x40(sp)
lw a0,0x30(s0)
beq a0,zero,0x001dd3d4
_nop
lw t9,-0x7790(gp)
or a2,s3,zero
bal 0x001cecc8
_or a1,s0,zero
lw ra,0x5c(sp)
li v1,0x1
lw s3,0x58(sp)
lw s1,0x50(sp)
lw s0,0x4c(sp)
sb v1,0x0(s2)
lw s2,0x54(sp)
jr ra
_addiu sp,sp,0x60
or a3,zero,zero
addiu a2,sp,0x40
jalr t9
_or a1,v0,zero
lw gp,0x28(sp)
b 0x001dd2dc
_lw v1,0x40(sp)
lw v0,0x0(s0)
lw t9,0x6c(v0)
jalr t9
_or a0,s0,zero
lw gp,0x28(sp)
or a0,v0,zero
b 0x001dd384
_sw v0,0x30(s0)
lw a2,-0x77f0(gp)
li a1,0x3af
lw a0,-0x77f0(gp)
lw t9,-0x7810(gp)
addiu a2,a2,0x5b9c
jalr t9
_addiu a0,a0,0x4d70
lw a2,-0x77f0(gp)
li a1,0xc0
lw a0,-0x7fc4(gp)
lw t9,-0x7810(gp)
addiu a2,a2,0x5d64
jalr t9
_addiu a0,a0,0x4584
lw t9,-0x55f8(gp)
addiu t9,t9,-0x175c
bal 0x001ce8a4
_nop
(translation_unit "/* gold::Sized_relobj_file<32, true>::symbol_section_and_value(unsigned int, unsigned int*, bool*)\n    */\n\nvoid __thiscall\ngold::Sized_relobj_file<32,true>::symbol_section_and_value\n          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)\n\n{\n  ushort uVar1;\n  undefined *puVar2;\n  Xindex *this_00;\n  undefined1 local_30 [8];\n  int local_28;\n  uint local_24;\n  uint local_20 [3];\n  \n  if (*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c) {\n    elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);\n    if (local_28 != 0) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }\n    local_20[0] = local_24;\n    puVar2 = PTR_empty_004c1fd4;\n    if (local_24 != 0) {\n      if (*(int *)(this + 0x1c) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }\n  }\n  else {\n    puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);\n  }\n  if (local_20[0] >> 4 <= param_1) {\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);\n    return;\n  }\n  uVar1 = *(ushort *)(puVar2 + param_1 * 0x10 + 0xe);\n  *param_2 = *(uint *)(puVar2 + param_1 * 0x10 + 4);\n  if (0xfeff < uVar1) {\n    if (uVar1 != 0xffff) {\n      *param_3 = false;\n      return;\n    }\n    this_00 = *(Xindex **)(this + 0x30);\n    if (this_00 == (Xindex *)0x0) {\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }\n    Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);\n  }\n  *param_3 = true;\n  return;\n}\n\n" comment (declaration "void __thiscall\ngold::Sized_relobj_file<32,true>::symbol_section_and_value\n          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)\n\n{\n  ushort uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "true>::symbol_section_and_value\n          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)\n\n{\n  ushort" identifier > : : (function_declarator "symbol_section_and_value\n          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)" identifier (parameter_list "(Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)" ( (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "bool *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) { identifier) identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "Xindex *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "undefined1 local_30 [8];" type_identifier (array_declarator "local_30 [8]" identifier [ number_literal ]) ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "uint local_20 [3];" type_identifier (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (if_statement "if (*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c) {\n    elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);\n    if (local_28 != 0) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }\n    local_20[0] = local_24;\n    puVar2 = PTR_empty_004c1fd4;\n    if (local_24 != 0) {\n      if (*(int *)(this + 0x1c) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }\n  }\n  else {\n    puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);\n  }" if (parenthesized_expression "(*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c)" ( (binary_expression "*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c" (pointer_expression "*(code **)(*(int *)this + 0x38)" * (cast_expression "(code **)(*(int *)this + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0x38)" ( (binary_expression "*(int *)this + 0x38" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_section_contents_004c3d5c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);\n    if (local_28 != 0) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }\n    local_20[0] = local_24;\n    puVar2 = PTR_empty_004c1fd4;\n    if (local_24 != 0) {\n      if (*(int *)(this + 0x1c) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }\n  }" { (labeled_statement "elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);" statement_identifier (ERROR "::Elf_file<32,true,gold::Object>:" : : (comma_expression "Elf_file<32,true,gold" (binary_expression "Elf_file<32" identifier < number_literal) , (comma_expression "true,gold" true , identifier)) : : identifier > :) : (expression_statement "section_contents((uint)local_30);" (call_expression "section_contents((uint)local_30)" identifier (argument_list "((uint)local_30)" ( (cast_expression "(uint)local_30" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;)) (if_statement "if (local_28 != 0) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }" if (parenthesized_expression "(local_28 != 0)" ( (binary_expression "local_28 != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }" { (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584" identifier + number_literal) , number_literal , (binary_expression "PTR_s__s_004c1a50 + 0x5d64" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "local_20[0] = local_24;" (assignment_expression "local_20[0] = local_24" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2 = PTR_empty_004c1fd4;" (assignment_expression "puVar2 = PTR_empty_004c1fd4" identifier = identifier) ;) (if_statement "if (local_24 != 0) {\n      if (*(int *)(this + 0x1c) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\n      if (*(int *)(this + 0x1c) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }" { (if_statement "if (*(int *)(this + 0x1c) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001ce8a4();\n      }" if (parenthesized_expression "(*(int *)(this + 0x1c) == 0)" ( (binary_expression "*(int *)(this + 0x1c) == 0" (pointer_expression "*(int *)(this + 0x1c)" * (cast_expression "(int *)(this + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1c)" ( (binary_expression "this + 0x1c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_001ce8a4();\n      }" { comment (expression_statement "FUN_001ce8a4();" (call_expression "FUN_001ce8a4()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);" (assignment_expression "puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20)" identifier = (cast_expression "(undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20)" (parenthesized_expression "(*(code *)PTR_get_view_004c1b74)" ( (pointer_expression "*(code *)PTR_get_view_004c1b74" * (cast_expression "(code *)PTR_get_view_004c1b74" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)(this + 0x1c) + 0x20)" ( (binary_expression "*(int *)(this + 0x1c) + 0x20" (pointer_expression "*(int *)(this + 0x1c)" * (cast_expression "(int *)(this + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1c)" ( (binary_expression "this + 0x1c" identifier + number_literal) )))) + number_literal) ))))) ;) })) }) (else_clause "else {\n    puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);\n  }" else (compound_statement "{\n    puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);\n  }" { (expression_statement "puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);" (assignment_expression "puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0)" identifier = (cast_expression "(undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0)" (parenthesized_expression "(**(code **)(*(int *)this + 0x38))" ( (pointer_expression "**(code **)(*(int *)this + 0x38)" * (pointer_expression "*(code **)(*(int *)this + 0x38)" * (cast_expression "(code **)(*(int *)this + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0x38)" ( (binary_expression "*(int *)this + 0x38" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(this,*(undefined4 *)(this + 0xb4),local_20,0)" ( identifier , (pointer_expression "*(undefined4 *)(this + 0xb4)" * (cast_expression "(undefined4 *)(this + 0xb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xb4)" ( (binary_expression "this + 0xb4" identifier + number_literal) )))) , identifier , number_literal ))))) ;) }))) (if_statement "if (local_20[0] >> 4 <= param_1) {\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);\n    return;\n  }" if (parenthesized_expression "(local_20[0] >> 4 <= param_1)" ( (binary_expression "local_20[0] >> 4 <= param_1" (binary_expression "local_20[0] >> 4" (subscript_expression "local_20[0]" identifier [ number_literal ]) >> number_literal) <= identifier) )) (compound_statement "{\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);\n    return;\n  }" { (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c)" ( (binary_expression "PTR_s__s_004c1a50 + 0x4d70" identifier + number_literal) , number_literal , (binary_expression "PTR_s__s_004c1a50 + 0x5b9c" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar1 = *(ushort *)(puVar2 + param_1 * 0x10 + 0xe);" (assignment_expression "uVar1 = *(ushort *)(puVar2 + param_1 * 0x10 + 0xe)" identifier = (pointer_expression "*(ushort *)(puVar2 + param_1 * 0x10 + 0xe)" * (cast_expression "(ushort *)(puVar2 + param_1 * 0x10 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + param_1 * 0x10 + 0xe)" ( (binary_expression "puVar2 + param_1 * 0x10 + 0xe" (binary_expression "puVar2 + param_1 * 0x10" identifier + (binary_expression "param_1 * 0x10" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "*param_2 = *(uint *)(puVar2 + param_1 * 0x10 + 4);" (assignment_expression "*param_2 = *(uint *)(puVar2 + param_1 * 0x10 + 4)" (pointer_expression "*param_2" * identifier) = (pointer_expression "*(uint *)(puVar2 + param_1 * 0x10 + 4)" * (cast_expression "(uint *)(puVar2 + param_1 * 0x10 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + param_1 * 0x10 + 4)" ( (binary_expression "puVar2 + param_1 * 0x10 + 4" (binary_expression "puVar2 + param_1 * 0x10" identifier + (binary_expression "param_1 * 0x10" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar1) {\n    if (uVar1 != 0xffff) {\n      *param_3 = false;\n      return;\n    }\n    this_00 = *(Xindex **)(this + 0x30);\n    if (this_00 == (Xindex *)0x0) {\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }\n    Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);\n  }" if (parenthesized_expression "(0xfeff < uVar1)" ( (binary_expression "0xfeff < uVar1" number_literal < identifier) )) (compound_statement "{\n    if (uVar1 != 0xffff) {\n      *param_3 = false;\n      return;\n    }\n    this_00 = *(Xindex **)(this + 0x30);\n    if (this_00 == (Xindex *)0x0) {\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }\n    Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);\n  }" { (if_statement "if (uVar1 != 0xffff) {\n      *param_3 = false;\n      return;\n    }" if (parenthesized_expression "(uVar1 != 0xffff)" ( (binary_expression "uVar1 != 0xffff" identifier != number_literal) )) (compound_statement "{\n      *param_3 = false;\n      return;\n    }" { (expression_statement "*param_3 = false;" (assignment_expression "*param_3 = false" (pointer_expression "*param_3" * identifier) = false) ;) (return_statement "return;" return ;) })) (expression_statement "this_00 = *(Xindex **)(this + 0x30);" (assignment_expression "this_00 = *(Xindex **)(this + 0x30)" identifier = (pointer_expression "*(Xindex **)(this + 0x30)" * (cast_expression "(Xindex **)(this + 0x30)" ( (type_descriptor "Xindex **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x30)" ( (binary_expression "this + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (this_00 == (Xindex *)0x0) {\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }" if (parenthesized_expression "(this_00 == (Xindex *)0x0)" ( (binary_expression "this_00 == (Xindex *)0x0" identifier == (cast_expression "(Xindex *)0x0" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }" { (expression_statement "this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);" (assignment_expression "this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this)" identifier = (cast_expression "(Xindex *)(**(code **)(*(int *)this + 0x6c))(this)" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)this + 0x6c))(this)" (parenthesized_expression "(**(code **)(*(int *)this + 0x6c))" ( (pointer_expression "**(code **)(*(int *)this + 0x6c)" * (pointer_expression "*(code **)(*(int *)this + 0x6c)" * (cast_expression "(code **)(*(int *)this + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0x6c)" ( (binary_expression "*(int *)this + 0x6c" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(this)" ( identifier ))))) ;) (expression_statement "*(Xindex **)(this + 0x30) = this_00;" (assignment_expression "*(Xindex **)(this + 0x30) = this_00" (pointer_expression "*(Xindex **)(this + 0x30)" * (cast_expression "(Xindex **)(this + 0x30)" ( (type_descriptor "Xindex **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x30)" ( (binary_expression "this + 0x30" identifier + number_literal) )))) = identifier) ;) })) (labeled_statement "Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);" statement_identifier : (ERROR ":" :) (expression_statement "sym_xindex_to_shndx(this_00,(Object *)this,param_1);" (call_expression "sym_xindex_to_shndx(this_00,(Object *)this,param_1)" identifier (argument_list "(this_00,(Object *)this,param_1)" ( identifier , (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) })) (expression_statement "*param_3 = true;" (assignment_expression "*param_3 = true" (pointer_expression "*param_3" * identifier) = true) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* DWARF original prototype: uint symbol_section_and_value(Sized_relobj_file<32,_true> * this, uint\n   sym, Address * value, bool * is_ordinary) */\n\nuint __thiscall\ngold::Sized_relobj_file<32,_true>::symbol_section_and_value\n          (Sized_relobj_file<32,_true> *this,uint sym,Address *value,bool *is_ordinary)\n\n{\n  uint uVar1;\n  undefined *puVar2;\n  Xindex *this_00;\n  Input_file *this_01;\n  _func_int_varargs *p_Var3;\n  Location loc;\n  section_size_type symbols_size;\n  \n  p_Var3 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object[0xe];\n  if (p_Var3 == (_func_int_varargs *)PTR_do_section_contents_004c3d5c) {\n    elfcpp::Elf_file<32,_true,_gold::Object>::section_contents\n              (&loc,&this->elf_file_,this->symtab_shndx_);\n    if (loc.data_size._0_4_ == 0) {\n      symbols_size = loc.data_size._4_4_;\n      puVar2 = PTR_empty_004c1fd4;\n      if (loc.data_size._4_4_ != 0) {\n        this_01 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.input_file_;\n        if (this_01 == (Input_file *)0x0) goto LAB_001dd42c;\n        puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(&this_01->file_);\n      }\n      goto LAB_001dd2dc;\n    }\n  }\n  else {\n    puVar2 = (undefined *)(*p_Var3)(this,this->symtab_shndx_,&symbols_size,0);\nLAB_001dd2dc:\n    if (sym < symbols_size >> 4) {\n      uVar1 = (uint)*(ushort *)(puVar2 + sym * 0x10 + 0xe);\n      *value = *(Address *)(puVar2 + sym * 0x10 + 4);\n      if (0xfeff < uVar1) {\n        if (uVar1 != 0xffff) {\n          *is_ordinary = false;\n          return uVar1;\n        }\n        this_00 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n        if (this_00 == (Xindex *)0x0) {\n          this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this);\n          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n        }\n        uVar1 = Xindex::sym_xindex_to_shndx(this_00,(Object *)this,sym);\n      }\n      *is_ordinary = true;\n      return uVar1;\n    }\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);\n  }\n  this_01 = (Input_file *)(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584);\n  (*(code *)PTR_do_gold_unreachable_004c1a30)(this_01,0xc0,PTR_s__s_004c1a50 + 0x5d64);\nLAB_001dd42c:\n                    /* WARNING: Subroutine does not return */\n  Object::input_file((Object *)this_01);\n}\n\n" comment comment comment (declaration "uint __thiscall\ngold::Sized_relobj_file<32,_true>::symbol_section_and_value\n          (Sized_relobj_file<32,_true> *this,uint sym,Address *value,bool *is_ordinary)\n\n{\n  uint uVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>::symbol_section_and_value\n          (Sized_relobj_file<32,_true> *this,uint sym,Address *value,bool *is_ordinary)\n\n{\n  uint" identifier > : : (function_declarator "symbol_section_and_value\n          (Sized_relobj_file<32,_true> *this,uint sym,Address *value,bool *is_ordinary)" identifier (parameter_list "(Sized_relobj_file<32,_true> *this,uint sym,Address *value,bool *is_ordinary)" ( (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint sym" type_identifier identifier) , (parameter_declaration "Address *value" type_identifier (pointer_declarator "*value" * identifier)) , (parameter_declaration "bool *is_ordinary" primitive_type (pointer_declarator "*is_ordinary" * identifier)) ))) { identifier) identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "Xindex *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "Input_file *this_01;" type_identifier (pointer_declarator "*this_01" * identifier) ;) (declaration "_func_int_varargs *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "Location loc;" type_identifier identifier ;) (declaration "section_size_type symbols_size;" type_identifier identifier ;) (expression_statement "p_Var3 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object[0xe];" (assignment_expression "p_Var3 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object[0xe]" identifier = (subscript_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object[0xe]" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<32,_true>)" ( (comma_expression "this->super_Sized_relobj<32,_true" (binary_expression "this->super_Sized_relobj<32" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var3 == (_func_int_varargs *)PTR_do_section_contents_004c3d5c) {\n    elfcpp::Elf_file<32,_true,_gold::Object>::section_contents\n              (&loc,&this->elf_file_,this->symtab_shndx_);\n    if (loc.data_size._0_4_ == 0) {\n      symbols_size = loc.data_size._4_4_;\n      puVar2 = PTR_empty_004c1fd4;\n      if (loc.data_size._4_4_ != 0) {\n        this_01 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.input_file_;\n        if (this_01 == (Input_file *)0x0) goto LAB_001dd42c;\n        puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(&this_01->file_);\n      }\n      goto LAB_001dd2dc;\n    }\n  }\n  else {\n    puVar2 = (undefined *)(*p_Var3)(this,this->symtab_shndx_,&symbols_size,0);\nLAB_001dd2dc:\n    if (sym < symbols_size >> 4) {\n      uVar1 = (uint)*(ushort *)(puVar2 + sym * 0x10 + 0xe);\n      *value = *(Address *)(puVar2 + sym * 0x10 + 4);\n      if (0xfeff < uVar1) {\n        if (uVar1 != 0xffff) {\n          *is_ordinary = false;\n          return uVar1;\n        }\n        this_00 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n        if (this_00 == (Xindex *)0x0) {\n          this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this);\n          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n        }\n        uVar1 = Xindex::sym_xindex_to_shndx(this_00,(Object *)this,sym);\n      }\n      *is_ordinary = true;\n      return uVar1;\n    }\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);\n  }" if (parenthesized_expression "(p_Var3 == (_func_int_varargs *)PTR_do_section_contents_004c3d5c)" ( (binary_expression "p_Var3 == (_func_int_varargs *)PTR_do_section_contents_004c3d5c" identifier == (cast_expression "(_func_int_varargs *)PTR_do_section_contents_004c3d5c" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    elfcpp::Elf_file<32,_true,_gold::Object>::section_contents\n              (&loc,&this->elf_file_,this->symtab_shndx_);\n    if (loc.data_size._0_4_ == 0) {\n      symbols_size = loc.data_size._4_4_;\n      puVar2 = PTR_empty_004c1fd4;\n      if (loc.data_size._4_4_ != 0) {\n        this_01 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.input_file_;\n        if (this_01 == (Input_file *)0x0) goto LAB_001dd42c;\n        puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(&this_01->file_);\n      }\n      goto LAB_001dd2dc;\n    }\n  }" { (labeled_statement "elfcpp::Elf_file<32,_true,_gold::Object>::section_contents\n              (&loc,&this->elf_file_,this->symtab_shndx_);" statement_identifier (ERROR "::Elf_file<32,_true,_gold::Object>:" : : (comma_expression "Elf_file<32,_true,_gold" (binary_expression "Elf_file<32" identifier < number_literal) , (comma_expression "_true,_gold" identifier , identifier)) : : identifier > :) : (expression_statement "section_contents\n              (&loc,&this->elf_file_,this->symtab_shndx_);" (call_expression "section_contents\n              (&loc,&this->elf_file_,this->symtab_shndx_)" identifier (argument_list "(&loc,&this->elf_file_,this->symtab_shndx_)" ( (pointer_expression "&loc" & identifier) , (pointer_expression "&this->elf_file_" & (field_expression "this->elf_file_" identifier -> field_identifier)) , (field_expression "this->symtab_shndx_" identifier -> field_identifier) ))) ;)) (if_statement "if (loc.data_size._0_4_ == 0) {\n      symbols_size = loc.data_size._4_4_;\n      puVar2 = PTR_empty_004c1fd4;\n      if (loc.data_size._4_4_ != 0) {\n        this_01 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.input_file_;\n        if (this_01 == (Input_file *)0x0) goto LAB_001dd42c;\n        puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(&this_01->file_);\n      }\n      goto LAB_001dd2dc;\n    }" if (parenthesized_expression "(loc.data_size._0_4_ == 0)" ( (binary_expression "loc.data_size._0_4_ == 0" (field_expression "loc.data_size._0_4_" (field_expression "loc.data_size" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n      symbols_size = loc.data_size._4_4_;\n      puVar2 = PTR_empty_004c1fd4;\n      if (loc.data_size._4_4_ != 0) {\n        this_01 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.input_file_;\n        if (this_01 == (Input_file *)0x0) goto LAB_001dd42c;\n        puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(&this_01->file_);\n      }\n      goto LAB_001dd2dc;\n    }" { (expression_statement "symbols_size = loc.data_size._4_4_;" (assignment_expression "symbols_size = loc.data_size._4_4_" identifier = (field_expression "loc.data_size._4_4_" (field_expression "loc.data_size" identifier . field_identifier) . field_identifier)) ;) (expression_statement "puVar2 = PTR_empty_004c1fd4;" (assignment_expression "puVar2 = PTR_empty_004c1fd4" identifier = identifier) ;) (if_statement "if (loc.data_size._4_4_ != 0) {\n        this_01 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.input_file_;\n        if (this_01 == (Input_file *)0x0) goto LAB_001dd42c;\n        puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(&this_01->file_);\n      }" if (parenthesized_expression "(loc.data_size._4_4_ != 0)" ( (binary_expression "loc.data_size._4_4_ != 0" (field_expression "loc.data_size._4_4_" (field_expression "loc.data_size" identifier . field_identifier) . field_identifier) != number_literal) )) (compound_statement "{\n        this_01 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.input_file_;\n        if (this_01 == (Input_file *)0x0) goto LAB_001dd42c;\n        puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(&this_01->file_);\n      }" { (expression_statement "this_01 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.input_file_;" (assignment_expression "this_01 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.input_file_" identifier = (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.input_file_" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<32,_true>)" ( (comma_expression "this->super_Sized_relobj<32,_true" (binary_expression "this->super_Sized_relobj<32" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (this_01 == (Input_file *)0x0) goto LAB_001dd42c;" if (parenthesized_expression "(this_01 == (Input_file *)0x0)" ( (binary_expression "this_01 == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001dd42c;" goto statement_identifier ;)) (expression_statement "puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(&this_01->file_);" (assignment_expression "puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(&this_01->file_)" identifier = (cast_expression "(undefined *)(*(code *)PTR_get_view_004c1b74)(&this_01->file_)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_get_view_004c1b74)(&this_01->file_)" (parenthesized_expression "(*(code *)PTR_get_view_004c1b74)" ( (pointer_expression "*(code *)PTR_get_view_004c1b74" * (cast_expression "(code *)PTR_get_view_004c1b74" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&this_01->file_)" ( (pointer_expression "&this_01->file_" & (field_expression "this_01->file_" identifier -> field_identifier)) ))))) ;) })) (goto_statement "goto LAB_001dd2dc;" goto statement_identifier ;) })) }) (else_clause "else {\n    puVar2 = (undefined *)(*p_Var3)(this,this->symtab_shndx_,&symbols_size,0);\nLAB_001dd2dc:\n    if (sym < symbols_size >> 4) {\n      uVar1 = (uint)*(ushort *)(puVar2 + sym * 0x10 + 0xe);\n      *value = *(Address *)(puVar2 + sym * 0x10 + 4);\n      if (0xfeff < uVar1) {\n        if (uVar1 != 0xffff) {\n          *is_ordinary = false;\n          return uVar1;\n        }\n        this_00 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n        if (this_00 == (Xindex *)0x0) {\n          this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this);\n          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n        }\n        uVar1 = Xindex::sym_xindex_to_shndx(this_00,(Object *)this,sym);\n      }\n      *is_ordinary = true;\n      return uVar1;\n    }\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);\n  }" else (compound_statement "{\n    puVar2 = (undefined *)(*p_Var3)(this,this->symtab_shndx_,&symbols_size,0);\nLAB_001dd2dc:\n    if (sym < symbols_size >> 4) {\n      uVar1 = (uint)*(ushort *)(puVar2 + sym * 0x10 + 0xe);\n      *value = *(Address *)(puVar2 + sym * 0x10 + 4);\n      if (0xfeff < uVar1) {\n        if (uVar1 != 0xffff) {\n          *is_ordinary = false;\n          return uVar1;\n        }\n        this_00 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n        if (this_00 == (Xindex *)0x0) {\n          this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this);\n          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n        }\n        uVar1 = Xindex::sym_xindex_to_shndx(this_00,(Object *)this,sym);\n      }\n      *is_ordinary = true;\n      return uVar1;\n    }\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);\n  }" { (expression_statement "puVar2 = (undefined *)(*p_Var3)(this,this->symtab_shndx_,&symbols_size,0);" (assignment_expression "puVar2 = (undefined *)(*p_Var3)(this,this->symtab_shndx_,&symbols_size,0)" identifier = (cast_expression "(undefined *)(*p_Var3)(this,this->symtab_shndx_,&symbols_size,0)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*p_Var3)(this,this->symtab_shndx_,&symbols_size,0)" (parenthesized_expression "(*p_Var3)" ( (pointer_expression "*p_Var3" * identifier) )) (argument_list "(this,this->symtab_shndx_,&symbols_size,0)" ( identifier , (field_expression "this->symtab_shndx_" identifier -> field_identifier) , (pointer_expression "&symbols_size" & identifier) , number_literal ))))) ;) (labeled_statement "LAB_001dd2dc:\n    if (sym < symbols_size >> 4) {\n      uVar1 = (uint)*(ushort *)(puVar2 + sym * 0x10 + 0xe);\n      *value = *(Address *)(puVar2 + sym * 0x10 + 4);\n      if (0xfeff < uVar1) {\n        if (uVar1 != 0xffff) {\n          *is_ordinary = false;\n          return uVar1;\n        }\n        this_00 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n        if (this_00 == (Xindex *)0x0) {\n          this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this);\n          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n        }\n        uVar1 = Xindex::sym_xindex_to_shndx(this_00,(Object *)this,sym);\n      }\n      *is_ordinary = true;\n      return uVar1;\n    }" statement_identifier : (if_statement "if (sym < symbols_size >> 4) {\n      uVar1 = (uint)*(ushort *)(puVar2 + sym * 0x10 + 0xe);\n      *value = *(Address *)(puVar2 + sym * 0x10 + 4);\n      if (0xfeff < uVar1) {\n        if (uVar1 != 0xffff) {\n          *is_ordinary = false;\n          return uVar1;\n        }\n        this_00 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n        if (this_00 == (Xindex *)0x0) {\n          this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this);\n          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n        }\n        uVar1 = Xindex::sym_xindex_to_shndx(this_00,(Object *)this,sym);\n      }\n      *is_ordinary = true;\n      return uVar1;\n    }" if (parenthesized_expression "(sym < symbols_size >> 4)" ( (binary_expression "sym < symbols_size >> 4" identifier < (binary_expression "symbols_size >> 4" identifier >> number_literal)) )) (compound_statement "{\n      uVar1 = (uint)*(ushort *)(puVar2 + sym * 0x10 + 0xe);\n      *value = *(Address *)(puVar2 + sym * 0x10 + 4);\n      if (0xfeff < uVar1) {\n        if (uVar1 != 0xffff) {\n          *is_ordinary = false;\n          return uVar1;\n        }\n        this_00 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n        if (this_00 == (Xindex *)0x0) {\n          this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this);\n          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n        }\n        uVar1 = Xindex::sym_xindex_to_shndx(this_00,(Object *)this,sym);\n      }\n      *is_ordinary = true;\n      return uVar1;\n    }" { (expression_statement "uVar1 = (uint)*(ushort *)(puVar2 + sym * 0x10 + 0xe);" (assignment_expression "uVar1 = (uint)*(ushort *)(puVar2 + sym * 0x10 + 0xe)" identifier = (binary_expression "(uint)*(ushort *)(puVar2 + sym * 0x10 + 0xe)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(puVar2 + sym * 0x10 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + sym * 0x10 + 0xe)" ( (binary_expression "puVar2 + sym * 0x10 + 0xe" (binary_expression "puVar2 + sym * 0x10" identifier + (binary_expression "sym * 0x10" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "*value = *(Address *)(puVar2 + sym * 0x10 + 4);" (assignment_expression "*value = *(Address *)(puVar2 + sym * 0x10 + 4)" (pointer_expression "*value" * identifier) = (pointer_expression "*(Address *)(puVar2 + sym * 0x10 + 4)" * (cast_expression "(Address *)(puVar2 + sym * 0x10 + 4)" ( (type_descriptor "Address *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + sym * 0x10 + 4)" ( (binary_expression "puVar2 + sym * 0x10 + 4" (binary_expression "puVar2 + sym * 0x10" identifier + (binary_expression "sym * 0x10" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar1) {\n        if (uVar1 != 0xffff) {\n          *is_ordinary = false;\n          return uVar1;\n        }\n        this_00 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n        if (this_00 == (Xindex *)0x0) {\n          this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this);\n          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n        }\n        uVar1 = Xindex::sym_xindex_to_shndx(this_00,(Object *)this,sym);\n      }" if (parenthesized_expression "(0xfeff < uVar1)" ( (binary_expression "0xfeff < uVar1" number_literal < identifier) )) (compound_statement "{\n        if (uVar1 != 0xffff) {\n          *is_ordinary = false;\n          return uVar1;\n        }\n        this_00 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;\n        if (this_00 == (Xindex *)0x0) {\n          this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this);\n          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n        }\n        uVar1 = Xindex::sym_xindex_to_shndx(this_00,(Object *)this,sym);\n      }" { (if_statement "if (uVar1 != 0xffff) {\n          *is_ordinary = false;\n          return uVar1;\n        }" if (parenthesized_expression "(uVar1 != 0xffff)" ( (binary_expression "uVar1 != 0xffff" identifier != number_literal) )) (compound_statement "{\n          *is_ordinary = false;\n          return uVar1;\n        }" { (expression_statement "*is_ordinary = false;" (assignment_expression "*is_ordinary = false" (pointer_expression "*is_ordinary" * identifier) = false) ;) (return_statement "return uVar1;" return identifier ;) })) (expression_statement "this_00 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;" (assignment_expression "this_00 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_" identifier = (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<32,_true>)" ( (comma_expression "this->super_Sized_relobj<32,_true" (binary_expression "this->super_Sized_relobj<32" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (this_00 == (Xindex *)0x0) {\n          this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this);\n          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n        }" if (parenthesized_expression "(this_00 == (Xindex *)0x0)" ( (binary_expression "this_00 == (Xindex *)0x0" identifier == (cast_expression "(Xindex *)0x0" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this);\n          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;\n        }" { (expression_statement "this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this);" (assignment_expression "this_00 = (Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this)" identifier = (cast_expression "(Xindex *)\n                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this)" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])(this)" (parenthesized_expression "(*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b])" ( (pointer_expression "*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b]" * (subscript_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object\n                      [0x1b]" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<32,_true>)" ( (comma_expression "this->super_Sized_relobj<32,_true" (binary_expression "this->super_Sized_relobj<32" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) )) (argument_list "(this)" ( identifier ))))) ;) (expression_statement "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00;" (assignment_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = this_00" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<32,_true>)" ( (comma_expression "this->super_Sized_relobj<32,_true" (binary_expression "this->super_Sized_relobj<32" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) })) (ERROR "uVar1 = Xindex::" (assignment_expression "uVar1 = Xindex" identifier = identifier) : :) (expression_statement "sym_xindex_to_shndx(this_00,(Object *)this,sym);" (call_expression "sym_xindex_to_shndx(this_00,(Object *)this,sym)" identifier (argument_list "(this_00,(Object *)this,sym)" ( identifier , (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) })) (expression_statement "*is_ordinary = true;" (assignment_expression "*is_ordinary = true" (pointer_expression "*is_ordinary" * identifier) = true) ;) (return_statement "return uVar1;" return identifier ;) }))) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c)" ( (binary_expression "PTR_s__s_004c1a50 + 0x4d70" identifier + number_literal) , number_literal , (binary_expression "PTR_s__s_004c1a50 + 0x5b9c" identifier + number_literal) ))) ;) }))) (expression_statement "this_01 = (Input_file *)(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584);" (assignment_expression "this_01 = (Input_file *)(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584)" identifier = (cast_expression "(Input_file *)(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584)" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)(this_01,0xc0,PTR_s__s_004c1a50 + 0x5d64);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)(this_01,0xc0,PTR_s__s_004c1a50 + 0x5d64)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(this_01,0xc0,PTR_s__s_004c1a50 + 0x5d64)" ( identifier , number_literal , (binary_expression "PTR_s__s_004c1a50 + 0x5d64" identifier + number_literal) ))) ;) (labeled_statement "LAB_001dd42c:\n                    /* WARNING: Subroutine does not return */\n  Object::input_file((Object *)this_01);" statement_identifier : comment (labeled_statement "Object::input_file((Object *)this_01);" statement_identifier : (ERROR ":" :) (expression_statement "input_file((Object *)this_01);" (call_expression "input_file((Object *)this_01)" identifier (argument_list "((Object *)this_01)" ( (cast_expression "(Object *)this_01" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (ERROR "}" }))
(translation_unit "void __thiscall\ngold::Sized_relobj_file<32,true>::symbol_section_and_value\n          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)\n\n{\n  ushort uVar1;\n  undefined *puVar2;\n  Xindex *this_00;\n  undefined1 local_30 [8];\n  int local_28;\n  uint local_24;\n  uint local_20 [3];\n  \n  if (*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c) {\n    elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);\n    if (local_28 != 0) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }\n    local_20[0] = local_24;\n    puVar2 = PTR_empty_004c1fd4;\n    if (local_24 != 0) {\n      if (*(int *)(this + 0x1c) == 0) {\n                    \n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }\n  }\n  else {\n    puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);\n  }\n  if (local_20[0] >> 4 <= param_1) {\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);\n    return;\n  }\n  uVar1 = *(ushort *)(puVar2 + param_1 * 0x10 + 0xe);\n  *param_2 = *(uint *)(puVar2 + param_1 * 0x10 + 4);\n  if (0xfeff < uVar1) {\n    if (uVar1 != 0xffff) {\n      *param_3 = false;\n      return;\n    }\n    this_00 = *(Xindex **)(this + 0x30);\n    if (this_00 == (Xindex *)0x0) {\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }\n    Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);\n  }\n  *param_3 = true;\n  return;\n}\n\n" (declaration "void __thiscall\ngold::Sized_relobj_file<32,true>::symbol_section_and_value\n          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)\n\n{\n  ushort uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "true>::symbol_section_and_value\n          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)\n\n{\n  ushort" identifier > : : (function_declarator "symbol_section_and_value\n          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)" identifier (parameter_list "(Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)" ( (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "bool *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) { identifier) identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "Xindex *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "undefined1 local_30 [8];" type_identifier (array_declarator "local_30 [8]" identifier [ number_literal ]) ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "uint local_20 [3];" type_identifier (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (if_statement "if (*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c) {\n    elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);\n    if (local_28 != 0) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }\n    local_20[0] = local_24;\n    puVar2 = PTR_empty_004c1fd4;\n    if (local_24 != 0) {\n      if (*(int *)(this + 0x1c) == 0) {\n                    \n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }\n  }\n  else {\n    puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);\n  }" if (parenthesized_expression "(*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c)" ( (binary_expression "*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c" (pointer_expression "*(code **)(*(int *)this + 0x38)" * (cast_expression "(code **)(*(int *)this + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0x38)" ( (binary_expression "*(int *)this + 0x38" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_section_contents_004c3d5c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);\n    if (local_28 != 0) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }\n    local_20[0] = local_24;\n    puVar2 = PTR_empty_004c1fd4;\n    if (local_24 != 0) {\n      if (*(int *)(this + 0x1c) == 0) {\n                    \n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }\n  }" { (labeled_statement "elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);" statement_identifier (ERROR "::Elf_file<32,true,gold::Object>:" : : (comma_expression "Elf_file<32,true,gold" (binary_expression "Elf_file<32" identifier < number_literal) , (comma_expression "true,gold" true , identifier)) : : identifier > :) : (expression_statement "section_contents((uint)local_30);" (call_expression "section_contents((uint)local_30)" identifier (argument_list "((uint)local_30)" ( (cast_expression "(uint)local_30" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;)) (if_statement "if (local_28 != 0) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }" if (parenthesized_expression "(local_28 != 0)" ( (binary_expression "local_28 != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }" { (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584" identifier + number_literal) , number_literal , (binary_expression "PTR_s__s_004c1a50 + 0x5d64" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "local_20[0] = local_24;" (assignment_expression "local_20[0] = local_24" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2 = PTR_empty_004c1fd4;" (assignment_expression "puVar2 = PTR_empty_004c1fd4" identifier = identifier) ;) (if_statement "if (local_24 != 0) {\n      if (*(int *)(this + 0x1c) == 0) {\n                    \n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\n      if (*(int *)(this + 0x1c) == 0) {\n                    \n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }" { (if_statement "if (*(int *)(this + 0x1c) == 0) {\n                    \n        FUN_001ce8a4();\n      }" if (parenthesized_expression "(*(int *)(this + 0x1c) == 0)" ( (binary_expression "*(int *)(this + 0x1c) == 0" (pointer_expression "*(int *)(this + 0x1c)" * (cast_expression "(int *)(this + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1c)" ( (binary_expression "this + 0x1c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n        FUN_001ce8a4();\n      }" { (expression_statement "FUN_001ce8a4();" (call_expression "FUN_001ce8a4()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);" (assignment_expression "puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20)" identifier = (cast_expression "(undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20)" (parenthesized_expression "(*(code *)PTR_get_view_004c1b74)" ( (pointer_expression "*(code *)PTR_get_view_004c1b74" * (cast_expression "(code *)PTR_get_view_004c1b74" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)(this + 0x1c) + 0x20)" ( (binary_expression "*(int *)(this + 0x1c) + 0x20" (pointer_expression "*(int *)(this + 0x1c)" * (cast_expression "(int *)(this + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1c)" ( (binary_expression "this + 0x1c" identifier + number_literal) )))) + number_literal) ))))) ;) })) }) (else_clause "else {\n    puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);\n  }" else (compound_statement "{\n    puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);\n  }" { (expression_statement "puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);" (assignment_expression "puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0)" identifier = (cast_expression "(undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0)" (parenthesized_expression "(**(code **)(*(int *)this + 0x38))" ( (pointer_expression "**(code **)(*(int *)this + 0x38)" * (pointer_expression "*(code **)(*(int *)this + 0x38)" * (cast_expression "(code **)(*(int *)this + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0x38)" ( (binary_expression "*(int *)this + 0x38" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(this,*(undefined4 *)(this + 0xb4),local_20,0)" ( identifier , (pointer_expression "*(undefined4 *)(this + 0xb4)" * (cast_expression "(undefined4 *)(this + 0xb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xb4)" ( (binary_expression "this + 0xb4" identifier + number_literal) )))) , identifier , number_literal ))))) ;) }))) (if_statement "if (local_20[0] >> 4 <= param_1) {\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);\n    return;\n  }" if (parenthesized_expression "(local_20[0] >> 4 <= param_1)" ( (binary_expression "local_20[0] >> 4 <= param_1" (binary_expression "local_20[0] >> 4" (subscript_expression "local_20[0]" identifier [ number_literal ]) >> number_literal) <= identifier) )) (compound_statement "{\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);\n    return;\n  }" { (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c)" ( (binary_expression "PTR_s__s_004c1a50 + 0x4d70" identifier + number_literal) , number_literal , (binary_expression "PTR_s__s_004c1a50 + 0x5b9c" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar1 = *(ushort *)(puVar2 + param_1 * 0x10 + 0xe);" (assignment_expression "uVar1 = *(ushort *)(puVar2 + param_1 * 0x10 + 0xe)" identifier = (pointer_expression "*(ushort *)(puVar2 + param_1 * 0x10 + 0xe)" * (cast_expression "(ushort *)(puVar2 + param_1 * 0x10 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + param_1 * 0x10 + 0xe)" ( (binary_expression "puVar2 + param_1 * 0x10 + 0xe" (binary_expression "puVar2 + param_1 * 0x10" identifier + (binary_expression "param_1 * 0x10" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "*param_2 = *(uint *)(puVar2 + param_1 * 0x10 + 4);" (assignment_expression "*param_2 = *(uint *)(puVar2 + param_1 * 0x10 + 4)" (pointer_expression "*param_2" * identifier) = (pointer_expression "*(uint *)(puVar2 + param_1 * 0x10 + 4)" * (cast_expression "(uint *)(puVar2 + param_1 * 0x10 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + param_1 * 0x10 + 4)" ( (binary_expression "puVar2 + param_1 * 0x10 + 4" (binary_expression "puVar2 + param_1 * 0x10" identifier + (binary_expression "param_1 * 0x10" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar1) {\n    if (uVar1 != 0xffff) {\n      *param_3 = false;\n      return;\n    }\n    this_00 = *(Xindex **)(this + 0x30);\n    if (this_00 == (Xindex *)0x0) {\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }\n    Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);\n  }" if (parenthesized_expression "(0xfeff < uVar1)" ( (binary_expression "0xfeff < uVar1" number_literal < identifier) )) (compound_statement "{\n    if (uVar1 != 0xffff) {\n      *param_3 = false;\n      return;\n    }\n    this_00 = *(Xindex **)(this + 0x30);\n    if (this_00 == (Xindex *)0x0) {\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }\n    Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);\n  }" { (if_statement "if (uVar1 != 0xffff) {\n      *param_3 = false;\n      return;\n    }" if (parenthesized_expression "(uVar1 != 0xffff)" ( (binary_expression "uVar1 != 0xffff" identifier != number_literal) )) (compound_statement "{\n      *param_3 = false;\n      return;\n    }" { (expression_statement "*param_3 = false;" (assignment_expression "*param_3 = false" (pointer_expression "*param_3" * identifier) = false) ;) (return_statement "return;" return ;) })) (expression_statement "this_00 = *(Xindex **)(this + 0x30);" (assignment_expression "this_00 = *(Xindex **)(this + 0x30)" identifier = (pointer_expression "*(Xindex **)(this + 0x30)" * (cast_expression "(Xindex **)(this + 0x30)" ( (type_descriptor "Xindex **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x30)" ( (binary_expression "this + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (this_00 == (Xindex *)0x0) {\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }" if (parenthesized_expression "(this_00 == (Xindex *)0x0)" ( (binary_expression "this_00 == (Xindex *)0x0" identifier == (cast_expression "(Xindex *)0x0" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }" { (expression_statement "this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);" (assignment_expression "this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this)" identifier = (cast_expression "(Xindex *)(**(code **)(*(int *)this + 0x6c))(this)" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)this + 0x6c))(this)" (parenthesized_expression "(**(code **)(*(int *)this + 0x6c))" ( (pointer_expression "**(code **)(*(int *)this + 0x6c)" * (pointer_expression "*(code **)(*(int *)this + 0x6c)" * (cast_expression "(code **)(*(int *)this + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0x6c)" ( (binary_expression "*(int *)this + 0x6c" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(this)" ( identifier ))))) ;) (expression_statement "*(Xindex **)(this + 0x30) = this_00;" (assignment_expression "*(Xindex **)(this + 0x30) = this_00" (pointer_expression "*(Xindex **)(this + 0x30)" * (cast_expression "(Xindex **)(this + 0x30)" ( (type_descriptor "Xindex **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x30)" ( (binary_expression "this + 0x30" identifier + number_literal) )))) = identifier) ;) })) (labeled_statement "Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);" statement_identifier : (ERROR ":" :) (expression_statement "sym_xindex_to_shndx(this_00,(Object *)this,param_1);" (call_expression "sym_xindex_to_shndx(this_00,(Object *)this,param_1)" identifier (argument_list "(this_00,(Object *)this,param_1)" ( identifier , (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) })) (expression_statement "*param_3 = true;" (assignment_expression "*param_3 = true" (pointer_expression "*param_3" * identifier) = true) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ms_call_modifier __thiscall) (ERROR IDENT : :) IDENT (ERROR < LIT) , (ERROR IDENT > : : (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) (ERROR < LIT) , (parameter_declaration TYPE (ERROR >) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) { IDENT) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (labeled_statement statement_identifier (ERROR : : (comma_expression (binary_expression IDENT < LIT) , (comma_expression BOOL , IDENT)) : : IDENT > :) : (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) >> LIT) <= IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = BOOL) ;) (return_statement return ;) })) (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 { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT ))) ;)) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = BOOL) ;) (return_statement return ;) (ERROR }))
(declaration "void __thiscall\ngold::Sized_relobj_file<32,true>::symbol_section_and_value\n          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)\n\n{\n  ushort uVar1;" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (identifier "Sized_relobj_file") (ERROR "<32" (< "<") (number_literal "32")) (, ",") (ERROR "true>::symbol_section_and_value\n          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)\n\n{\n  ushort" (identifier "true") (> ">") (: ":") (: ":") (function_declarator "symbol_section_and_value\n          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)" (identifier "symbol_section_and_value") (parameter_list "(Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)" (( "(") (parameter_declaration "Sized_relobj_file" (type_identifier "Sized_relobj_file")) (ERROR "<32" (< "<") (number_literal "32")) (, ",") (parameter_declaration "true> *this" (type_identifier "true") (ERROR ">" (> ">")) (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "bool *param_3" (primitive_type "bool") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) ({ "{") (identifier "ushort")) (identifier "uVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "Xindex *this_00;" (type_identifier "Xindex") (pointer_declarator "*this_00" (* "*") (identifier "this_00")) (; ";")) (declaration "undefined1 local_30 [8];" (type_identifier "undefined1") (array_declarator "local_30 [8]" (identifier "local_30") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "uint local_20 [3];" (type_identifier "uint") (array_declarator "local_20 [3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]")) (; ";")) (if_statement "if (*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c) {\n    elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);\n    if (local_28 != 0) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }\n    local_20[0] = local_24;\n    puVar2 = PTR_empty_004c1fd4;\n    if (local_24 != 0) {\n      if (*(int *)(this + 0x1c) == 0) {\n                    \n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }\n  }\n  else {\n    puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);\n  }" (if "if") (parenthesized_expression "(*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c)" (( "(") (binary_expression "*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c" (pointer_expression "*(code **)(*(int *)this + 0x38)" (* "*") (cast_expression "(code **)(*(int *)this + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)this + 0x38)" (( "(") (binary_expression "*(int *)this + 0x38" (pointer_expression "*(int *)this" (* "*") (cast_expression "(int *)this" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this"))) (+ "+") (number_literal "0x38")) () ")")))) (== "==") (cast_expression "(code *)PTR_do_section_contents_004c3d5c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_section_contents_004c3d5c"))) () ")")) (compound_statement "{\n    elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);\n    if (local_28 != 0) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }\n    local_20[0] = local_24;\n    puVar2 = PTR_empty_004c1fd4;\n    if (local_24 != 0) {\n      if (*(int *)(this + 0x1c) == 0) {\n                    \n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }\n  }" ({ "{") (labeled_statement "elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);" (statement_identifier "elfcpp") (ERROR "::Elf_file<32,true,gold::Object>:" (: ":") (: ":") (comma_expression "Elf_file<32,true,gold" (binary_expression "Elf_file<32" (identifier "Elf_file") (< "<") (number_literal "32")) (, ",") (comma_expression "true,gold" (true "true") (, ",") (identifier "gold"))) (: ":") (: ":") (identifier "Object") (> ">") (: ":")) (: ":") (expression_statement "section_contents((uint)local_30);" (call_expression "section_contents((uint)local_30)" (identifier "section_contents") (argument_list "((uint)local_30)" (( "(") (cast_expression "(uint)local_30" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_30")) () ")"))) (; ";"))) (if_statement "if (local_28 != 0) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }" (if "if") (parenthesized_expression "(local_28 != 0)" (( "(") (binary_expression "local_28 != 0" (identifier "local_28") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);\n      return;\n    }" ({ "{") (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" (( "(") (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" (* "*") (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_gold_unreachable_004c1a30"))) () ")")) (argument_list "(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,\n                 PTR_s__s_004c1a50 + 0x5d64)" (( "(") (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584" (identifier "PTR_s_ral_options14Struct_no_crefE_004c127c") (+ "+") (number_literal "0x4584")) (, ",") (number_literal "0xc0") (, ",") (binary_expression "PTR_s__s_004c1a50 + 0x5d64" (identifier "PTR_s__s_004c1a50") (+ "+") (number_literal "0x5d64")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_20[0] = local_24;" (assignment_expression "local_20[0] = local_24" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "puVar2 = PTR_empty_004c1fd4;" (assignment_expression "puVar2 = PTR_empty_004c1fd4" (identifier "puVar2") (= "=") (identifier "PTR_empty_004c1fd4")) (; ";")) (if_statement "if (local_24 != 0) {\n      if (*(int *)(this + 0x1c) == 0) {\n                    \n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }" (if "if") (parenthesized_expression "(local_24 != 0)" (( "(") (binary_expression "local_24 != 0" (identifier "local_24") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(int *)(this + 0x1c) == 0) {\n                    \n        FUN_001ce8a4();\n      }\n      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);\n    }" ({ "{") (if_statement "if (*(int *)(this + 0x1c) == 0) {\n                    \n        FUN_001ce8a4();\n      }" (if "if") (parenthesized_expression "(*(int *)(this + 0x1c) == 0)" (( "(") (binary_expression "*(int *)(this + 0x1c) == 0" (pointer_expression "*(int *)(this + 0x1c)" (* "*") (cast_expression "(int *)(this + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x1c)" (( "(") (binary_expression "this + 0x1c" (identifier "this") (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_001ce8a4();\n      }" ({ "{") (expression_statement "FUN_001ce8a4();" (call_expression "FUN_001ce8a4()" (identifier "FUN_001ce8a4") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);" (assignment_expression "puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20)" (identifier "puVar2") (= "=") (cast_expression "(undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20)" (parenthesized_expression "(*(code *)PTR_get_view_004c1b74)" (( "(") (pointer_expression "*(code *)PTR_get_view_004c1b74" (* "*") (cast_expression "(code *)PTR_get_view_004c1b74" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_get_view_004c1b74"))) () ")")) (argument_list "(*(int *)(this + 0x1c) + 0x20)" (( "(") (binary_expression "*(int *)(this + 0x1c) + 0x20" (pointer_expression "*(int *)(this + 0x1c)" (* "*") (cast_expression "(int *)(this + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x1c)" (( "(") (binary_expression "this + 0x1c" (identifier "this") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);\n  }" (else "else") (compound_statement "{\n    puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);\n  }" ({ "{") (expression_statement "puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);" (assignment_expression "puVar2 = (undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0)" (identifier "puVar2") (= "=") (cast_expression "(undefined *)\n             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0)" (parenthesized_expression "(**(code **)(*(int *)this + 0x38))" (( "(") (pointer_expression "**(code **)(*(int *)this + 0x38)" (* "*") (pointer_expression "*(code **)(*(int *)this + 0x38)" (* "*") (cast_expression "(code **)(*(int *)this + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)this + 0x38)" (( "(") (binary_expression "*(int *)this + 0x38" (pointer_expression "*(int *)this" (* "*") (cast_expression "(int *)this" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this"))) (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "(this,*(undefined4 *)(this + 0xb4),local_20,0)" (( "(") (identifier "this") (, ",") (pointer_expression "*(undefined4 *)(this + 0xb4)" (* "*") (cast_expression "(undefined4 *)(this + 0xb4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0xb4)" (( "(") (binary_expression "this + 0xb4" (identifier "this") (+ "+") (number_literal "0xb4")) () ")")))) (, ",") (identifier "local_20") (, ",") (number_literal "0") () ")"))))) (; ";")) (} "}")))) (if_statement "if (local_20[0] >> 4 <= param_1) {\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);\n    return;\n  }" (if "if") (parenthesized_expression "(local_20[0] >> 4 <= param_1)" (( "(") (binary_expression "local_20[0] >> 4 <= param_1" (binary_expression "local_20[0] >> 4" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (>> ">>") (number_literal "4")) (<= "<=") (identifier "param_1")) () ")")) (compound_statement "{\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);\n    return;\n  }" ({ "{") (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" (( "(") (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" (* "*") (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_gold_unreachable_004c1a30"))) () ")")) (argument_list "(PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c)" (( "(") (binary_expression "PTR_s__s_004c1a50 + 0x4d70" (identifier "PTR_s__s_004c1a50") (+ "+") (number_literal "0x4d70")) (, ",") (number_literal "0x3af") (, ",") (binary_expression "PTR_s__s_004c1a50 + 0x5b9c" (identifier "PTR_s__s_004c1a50") (+ "+") (number_literal "0x5b9c")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar1 = *(ushort *)(puVar2 + param_1 * 0x10 + 0xe);" (assignment_expression "uVar1 = *(ushort *)(puVar2 + param_1 * 0x10 + 0xe)" (identifier "uVar1") (= "=") (pointer_expression "*(ushort *)(puVar2 + param_1 * 0x10 + 0xe)" (* "*") (cast_expression "(ushort *)(puVar2 + param_1 * 0x10 + 0xe)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + param_1 * 0x10 + 0xe)" (( "(") (binary_expression "puVar2 + param_1 * 0x10 + 0xe" (binary_expression "puVar2 + param_1 * 0x10" (identifier "puVar2") (+ "+") (binary_expression "param_1 * 0x10" (identifier "param_1") (* "*") (number_literal "0x10"))) (+ "+") (number_literal "0xe")) () ")"))))) (; ";")) (expression_statement "*param_2 = *(uint *)(puVar2 + param_1 * 0x10 + 4);" (assignment_expression "*param_2 = *(uint *)(puVar2 + param_1 * 0x10 + 4)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*(uint *)(puVar2 + param_1 * 0x10 + 4)" (* "*") (cast_expression "(uint *)(puVar2 + param_1 * 0x10 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + param_1 * 0x10 + 4)" (( "(") (binary_expression "puVar2 + param_1 * 0x10 + 4" (binary_expression "puVar2 + param_1 * 0x10" (identifier "puVar2") (+ "+") (binary_expression "param_1 * 0x10" (identifier "param_1") (* "*") (number_literal "0x10"))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (0xfeff < uVar1) {\n    if (uVar1 != 0xffff) {\n      *param_3 = false;\n      return;\n    }\n    this_00 = *(Xindex **)(this + 0x30);\n    if (this_00 == (Xindex *)0x0) {\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }\n    Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);\n  }" (if "if") (parenthesized_expression "(0xfeff < uVar1)" (( "(") (binary_expression "0xfeff < uVar1" (number_literal "0xfeff") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n    if (uVar1 != 0xffff) {\n      *param_3 = false;\n      return;\n    }\n    this_00 = *(Xindex **)(this + 0x30);\n    if (this_00 == (Xindex *)0x0) {\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }\n    Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);\n  }" ({ "{") (if_statement "if (uVar1 != 0xffff) {\n      *param_3 = false;\n      return;\n    }" (if "if") (parenthesized_expression "(uVar1 != 0xffff)" (( "(") (binary_expression "uVar1 != 0xffff" (identifier "uVar1") (!= "!=") (number_literal "0xffff")) () ")")) (compound_statement "{\n      *param_3 = false;\n      return;\n    }" ({ "{") (expression_statement "*param_3 = false;" (assignment_expression "*param_3 = false" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (false "false")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "this_00 = *(Xindex **)(this + 0x30);" (assignment_expression "this_00 = *(Xindex **)(this + 0x30)" (identifier "this_00") (= "=") (pointer_expression "*(Xindex **)(this + 0x30)" (* "*") (cast_expression "(Xindex **)(this + 0x30)" (( "(") (type_descriptor "Xindex **" (type_identifier "Xindex") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x30)" (( "(") (binary_expression "this + 0x30" (identifier "this") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (this_00 == (Xindex *)0x0) {\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }" (if "if") (parenthesized_expression "(this_00 == (Xindex *)0x0)" (( "(") (binary_expression "this_00 == (Xindex *)0x0" (identifier "this_00") (== "==") (cast_expression "(Xindex *)0x0" (( "(") (type_descriptor "Xindex *" (type_identifier "Xindex") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);\n      *(Xindex **)(this + 0x30) = this_00;\n    }" ({ "{") (expression_statement "this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);" (assignment_expression "this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this)" (identifier "this_00") (= "=") (cast_expression "(Xindex *)(**(code **)(*(int *)this + 0x6c))(this)" (( "(") (type_descriptor "Xindex *" (type_identifier "Xindex") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*(int *)this + 0x6c))(this)" (parenthesized_expression "(**(code **)(*(int *)this + 0x6c))" (( "(") (pointer_expression "**(code **)(*(int *)this + 0x6c)" (* "*") (pointer_expression "*(code **)(*(int *)this + 0x6c)" (* "*") (cast_expression "(code **)(*(int *)this + 0x6c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)this + 0x6c)" (( "(") (binary_expression "*(int *)this + 0x6c" (pointer_expression "*(int *)this" (* "*") (cast_expression "(int *)this" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this"))) (+ "+") (number_literal "0x6c")) () ")"))))) () ")")) (argument_list "(this)" (( "(") (identifier "this") () ")"))))) (; ";")) (expression_statement "*(Xindex **)(this + 0x30) = this_00;" (assignment_expression "*(Xindex **)(this + 0x30) = this_00" (pointer_expression "*(Xindex **)(this + 0x30)" (* "*") (cast_expression "(Xindex **)(this + 0x30)" (( "(") (type_descriptor "Xindex **" (type_identifier "Xindex") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x30)" (( "(") (binary_expression "this + 0x30" (identifier "this") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "this_00")) (; ";")) (} "}"))) (labeled_statement "Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);" (statement_identifier "Xindex") (: ":") (ERROR ":" (: ":")) (expression_statement "sym_xindex_to_shndx(this_00,(Object *)this,param_1);" (call_expression "sym_xindex_to_shndx(this_00,(Object *)this,param_1)" (identifier "sym_xindex_to_shndx") (argument_list "(this_00,(Object *)this,param_1)" (( "(") (identifier "this_00") (, ",") (cast_expression "(Object *)this" (( "(") (type_descriptor "Object *" (type_identifier "Object") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this")) (, ",") (identifier "param_1") () ")"))) (; ";"))) (} "}"))) (expression_statement "*param_3 = true;" (assignment_expression "*param_3 = true" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (true "true")) (; ";")) (return_statement "return;" (return "return") (; ";")) (ERROR "}" (} "}"))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: uint symbol_section_and_value(Sized_relobj_file<32,_true> * this, uint
   sym, Address * value, bool * is_ordinary) */

type_1 __thiscall
gold::Sized_relobj_file<32,_true>::symbol_section_and_value
          (Sized_relobj_file<32,_true> *this,type_1 var_4,type_10 *value,bool *is_ordinary)

{
  type_1 var_7;
  type_2 *var_6;
  type_3 *var_8;
  type_4 *var_3;
  type_5 *var_1;
  type_6 loc;
  type_7 var_5;
  
  var_1 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object[0xe];
  if (var_1 == (type_5 *)PTR_do_section_contents_004c3d5c) {
    elfcpp::Elf_file<32,_true,_gold::type_11>::var_2
              (&loc,&this->elf_file_,this->symtab_shndx_);
    if (loc.data_size._0_4_ == 0) {
      var_5 = loc.data_size._4_4_;
      var_6 = PTR_empty_004c1fd4;
      if (loc.data_size._4_4_ != 0) {
        var_3 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.input_file_;
        if (var_3 == (type_4 *)0x0) goto LAB_001dd42c;
        var_6 = (type_2 *)(*(type_8 *)PTR_get_view_004c1b74)(&var_3->file_);
      }
      goto LAB_001dd2dc;
    }
  }
  else {
    var_6 = (type_2 *)(*var_1)(this,this->symtab_shndx_,&var_5,0);
LAB_001dd2dc:
    if (var_4 < var_5 >> 4) {
      var_7 = (type_1)*(type_9 *)(var_6 + var_4 * 0x10 + 0xe);
      *value = *(type_10 *)(var_6 + var_4 * 0x10 + 4);
      if (0xfeff < var_7) {
        if (var_7 != 0xffff) {
          *is_ordinary = false;
          return var_7;
        }
        var_8 = (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_;
        if (var_8 == (type_3 *)0x0) {
          var_8 = (type_3 *)
                    (*(this->super_Sized_relobj<32,_true>).super_Relobj.super_Object._vptr_Object
                      [0x1b])(this);
          (this->super_Sized_relobj<32,_true>).super_Relobj.super_Object.xindex_ = var_8;
        }
        var_7 = type_3::var_9(var_8,(type_11 *)this,var_4);
      }
      *is_ordinary = true;
      return var_7;
    }
    (*(type_8 *)PTR_do_gold_unreachable_004c1a30)
              (var_10 + 0x4d70,0x3af,var_10 + 0x5b9c);
  }
  var_3 = (type_4 *)(var_11 + 0x4584);
  (*(type_8 *)PTR_do_gold_unreachable_004c1a30)(var_3,0xc0,var_10 + 0x5d64);
LAB_001dd42c:
                    /* WARNING: Subroutine does not return */
  Object::var_12((type_11 *)var_3);
}


(translation_unit (declaration type: (primitive_type) declarator: (ms_call_modifier) (ERROR (identifier)) declarator: (identifier) (ERROR (number_literal)) (ERROR (identifier) (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier)) (ERROR (number_literal)) (parameter_declaration type: (type_identifier) (ERROR) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) (identifier)) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (ERROR (comma_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (comma_expression left: (true) right: (identifier))) (identifier)) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (return_statement))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))) arguments: (argument_list (identifier) (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))))) (identifier) (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (return_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: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (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: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (false))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_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: (identifier) right: (number_literal))))) right: (identifier))))) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)) (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (true))) (return_statement) (ERROR))

/* gold::Sized_relobj_file<32, true>::MASKED(unsigned int, unsigned int*, bool*)
    */

void __thiscall
gold::Sized_relobj_file<32,true>::MASKED
          (Sized_relobj_file<32,true> *this,uint param_1,uint *param_2,bool *param_3)

{
  ushort uVar1;
  undefined *puVar2;
  Xindex *this_00;
  undefined1 local_30 [8];
  int local_28;
  uint local_24;
  uint local_20 [3];
  
  if (*(code **)(*(int *)this + 0x38) == (code *)PTR_do_section_contents_004c3d5c) {
    elfcpp::Elf_file<32,true,gold::Object>::section_contents((uint)local_30);
    if (local_28 != 0) {
      (*(code *)PTR_do_gold_unreachable_004c1a30)
                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x4584,0xc0,
                 PTR_s__s_004c1a50 + 0x5d64);
      return;
    }
    local_20[0] = local_24;
    puVar2 = PTR_empty_004c1fd4;
    if (local_24 != 0) {
      if (*(int *)(this + 0x1c) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_001ce8a4();
      }
      puVar2 = (undefined *)(*(code *)PTR_get_view_004c1b74)(*(int *)(this + 0x1c) + 0x20);
    }
  }
  else {
    puVar2 = (undefined *)
             (**(code **)(*(int *)this + 0x38))(this,*(undefined4 *)(this + 0xb4),local_20,0);
  }
  if (local_20[0] >> 4 <= param_1) {
    (*(code *)PTR_do_gold_unreachable_004c1a30)
              (PTR_s__s_004c1a50 + 0x4d70,0x3af,PTR_s__s_004c1a50 + 0x5b9c);
    return;
  }
  uVar1 = *(ushort *)(puVar2 + param_1 * 0x10 + 0xe);
  *param_2 = *(uint *)(puVar2 + param_1 * 0x10 + 4);
  if (0xfeff < uVar1) {
    if (uVar1 != 0xffff) {
      *param_3 = false;
      return;
    }
    this_00 = *(Xindex **)(this + 0x30);
    if (this_00 == (Xindex *)0x0) {
      this_00 = (Xindex *)(**(code **)(*(int *)this + 0x6c))(this);
      *(Xindex **)(this + 0x30) = this_00;
    }
    Xindex::sym_xindex_to_shndx(this_00,(Object *)this,param_1);
  }
  *param_3 = true;
  return;
}

