
/* DWARF original prototype: off_t section_header_offset(Elf_file<32,_true,_gold::Object> * this,
   uint shndx) */

off_t __thiscall
elfcpp::Elf_file<32,_true,_gold::Object>::section_header_offset
          (Elf_file<32,_true,_gold::Object> *this,uint shndx)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  Object *pOVar4;
  Object *pOVar5;
  
  uVar1 = this->shnum_;
  if (uVar1 == 0) {
    pOVar4 = this->file_;
    if (*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0) {
      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);
      (*(code *)PTR_error_004c1a54)(pOVar4,uVar2);
      uVar1 = this->shnum_;
      goto LAB_0014419c;
    }
  }
  else {
LAB_0014419c:
    if (shndx < uVar1) goto LAB_001441ac;
    pOVar4 = this->file_;
  }
  uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64);
  uVar1 = this->shnum_;
  if ((uVar1 == 0) && (*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0)) {
    pOVar5 = this->file_;
    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);
    (*(code *)PTR_error_004c1a54)(pOVar5,uVar3);
    uVar1 = this->shnum_;
  }
  (*(code *)PTR_error_004c1a54)(pOVar4,uVar2,shndx,uVar1);
LAB_001441ac:
  uVar1 = shndx * 0x28 + (int)this->shoff_;
  return CONCAT44((uint)(uVar1 < shndx * 0x28) + *(int *)&this->shoff_,uVar1);
}



/* elfcpp::Elf_file<32, true, gold::Object>::section_header_offset(unsigned int) const */

int __thiscall
elfcpp::Elf_file<32,true,gold::Object>::section_header_offset
          (Elf_file<32,true,gold::Object> *this,uint param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  
  uVar1 = *(uint *)(this + 0x10);
  if (uVar1 == 0) {
    uVar5 = *(undefined4 *)this;
    if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {
      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);
      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);
      uVar1 = *(uint *)(this + 0x10);
      goto LAB_0014419c;
    }
  }
  else {
LAB_0014419c:
    if (param_1 < uVar1) goto LAB_001441ac;
    uVar5 = *(undefined4 *)this;
  }
  uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64);
  iVar4 = *(int *)(this + 0x10);
  if ((iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)) {
    uVar6 = *(undefined4 *)this;
    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);
    (*(code *)PTR_error_004c1a54)(uVar6,uVar3);
    iVar4 = *(int *)(this + 0x10);
  }
  (*(code *)PTR_error_004c1a54)(uVar5,uVar2,param_1,iVar4);
LAB_001441ac:
  return (uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8);
}


lui gp,0x38
addiu gp,gp,0x51a0
addu gp,gp,t9
addiu sp,sp,-0x30
lw v0,0x10(a0)
sw gp,0x10(sp)
sw s1,0x1c(sp)
or s1,a1,zero
sw s0,0x18(sp)
or s0,a0,zero
sw ra,0x2c(sp)
sw s4,0x28(sp)
sw s3,0x24(sp)
bne v0,zero,0x0014419c
_sw s2,0x20(sp)
lw v0,0x8(a0)
lw v1,0xc(a0)
or v0,v0,v1
bne v0,zero,0x00144170
_lw s2,0x0(a0)
lw a0,-0x77f0(gp)
lw t9,-0x3610(gp)
jalr t9
_addiu a0,a0,-0x1f64
lw a3,0x10(s0)
or s3,v0,zero
bne a3,zero,0x00144154
_lw gp,0x10(sp)
lw v0,0x8(s0)
lw v1,0xc(s0)
or v0,v0,v1
beq v0,zero,0x00144158
_lw t9,-0x77ec(gp)
lw a0,-0x77f0(gp)
lw t9,-0x3610(gp)
lw s4,0x0(s0)
jalr t9
_addiu a0,a0,-0x1f9c
or a0,s4,zero
lw gp,0x10(sp)
lw t9,-0x77ec(gp)
jalr t9
_or a1,v0,zero
lw gp,0x10(sp)
lw a3,0x10(s0)
lw t9,-0x77ec(gp)
or a2,s1,zero
or a1,s3,zero
jalr t9
_or a0,s2,zero
b 0x001441ac
_sll a0,s1,0x2
lw a0,-0x77f0(gp)
lw t9,-0x3610(gp)
jalr t9
_addiu a0,a0,-0x1f9c
or a0,s2,zero
lw gp,0x10(sp)
lw t9,-0x77ec(gp)
jalr t9
_or a1,v0,zero
lw gp,0x10(sp)
lw v0,0x10(s0)
sltu v0,s1,v0
beq v0,zero,0x001441e8
_nop
sll a0,s1,0x2
lw v1,0xc(s0)
lw v0,0x8(s0)
addu a0,a0,s1
lw ra,0x2c(sp)
lw s4,0x28(sp)
sll a0,a0,0x3
lw s3,0x24(sp)
lw s2,0x20(sp)
addu v1,a0,v1
lw s1,0x1c(sp)
lw s0,0x18(sp)
addiu sp,sp,0x30
sltu a0,v1,a0
jr ra
_addu v0,a0,v0
b 0x001440f0
_lw s2,0x0(s0)
(translation_unit "/* elfcpp::Elf_file<32, true, gold::Object>::section_header_offset(unsigned int) const */\n\nint __thiscall\nelfcpp::Elf_file<32,true,gold::Object>::section_header_offset\n          (Elf_file<32,true,gold::Object> *this,uint param_1)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  \n  uVar1 = *(uint *)(this + 0x10);\n  if (uVar1 == 0) {\n    uVar5 = *(undefined4 *)this;\n    if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }\n  }\n  else {\nLAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;\n    uVar5 = *(undefined4 *)this;\n  }\n  uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64);\n  iVar4 = *(int *)(this + 0x10);\n  if ((iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)) {\n    uVar6 = *(undefined4 *)this;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n    (*(code *)PTR_error_004c1a54)(uVar6,uVar3);\n    iVar4 = *(int *)(this + 0x10);\n  }\n  (*(code *)PTR_error_004c1a54)(uVar5,uVar2,param_1,iVar4);\nLAB_001441ac:\n  return (uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8);\n}\n\n" comment (declaration "int __thiscall\nelfcpp::Elf_file<32,true,gold::Object>::section_header_offset\n          (Elf_file<32,true,gold::Object> *this,uint param_1)\n\n{\n  uint uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "elfcpp::" identifier : :) identifier (ERROR "<32" < number_literal) , identifier , (ERROR "gold::Object>::section_header_offset\n          (Elf_file<32,true,gold::Object> *this,uint param_1)\n\n{\n  uint" identifier : : identifier > : : (function_declarator "section_header_offset\n          (Elf_file<32,true,gold::Object> *this,uint param_1)" identifier (parameter_list "(Elf_file<32,true,gold::Object> *this,uint param_1)" ( (parameter_declaration "Elf_file" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "true" type_identifier) , (parameter_declaration "gold::Object> *this" type_identifier (ERROR "::Object>" : : identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint param_1" type_identifier identifier) ))) { identifier) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (expression_statement "uVar1 = *(uint *)(this + 0x10);" (assignment_expression "uVar1 = *(uint *)(this + 0x10)" identifier = (pointer_expression "*(uint *)(this + 0x10)" * (cast_expression "(uint *)(this + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (uVar1 == 0) {\n    uVar5 = *(undefined4 *)this;\n    if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }\n  }\n  else {\nLAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;\n    uVar5 = *(undefined4 *)this;\n  }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar5 = *(undefined4 *)this;\n    if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }\n  }" { (expression_statement "uVar5 = *(undefined4 *)this;" (assignment_expression "uVar5 = *(undefined4 *)this" identifier = (pointer_expression "*(undefined4 *)this" * (cast_expression "(undefined4 *)this" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }" if (parenthesized_expression "(*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)" ( (binary_expression "*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0" (binary_expression "*(int *)(this + 8) != 0" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) != number_literal) || (binary_expression "*(int *)(this + 0xc) != 0" (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) != number_literal)) )) (compound_statement "{\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }" { (expression_statement "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);" (assignment_expression "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" identifier = (call_expression "(*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" ( (pointer_expression "*(code *)PTR_gettext_004c5c30" * (cast_expression "(code *)PTR_gettext_004c5c30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__s_004c1a50 + -0x1f9c)" ( (binary_expression "PTR_s__s_004c1a50 + -0x1f9c" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR_error_004c1a54)(uVar5,uVar2);" (call_expression "(*(code *)PTR_error_004c1a54)(uVar5,uVar2)" (parenthesized_expression "(*(code *)PTR_error_004c1a54)" ( (pointer_expression "*(code *)PTR_error_004c1a54" * (cast_expression "(code *)PTR_error_004c1a54" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar5,uVar2)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = *(uint *)(this + 0x10);" (assignment_expression "uVar1 = *(uint *)(this + 0x10)" identifier = (pointer_expression "*(uint *)(this + 0x10)" * (cast_expression "(uint *)(this + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0014419c;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;\n    uVar5 = *(undefined4 *)this;\n  }" else (compound_statement "{\nLAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;\n    uVar5 = *(undefined4 *)this;\n  }" { (labeled_statement "LAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;" statement_identifier : (if_statement "if (param_1 < uVar1) goto LAB_001441ac;" if (parenthesized_expression "(param_1 < uVar1)" ( (binary_expression "param_1 < uVar1" identifier < identifier) )) (goto_statement "goto LAB_001441ac;" goto statement_identifier ;))) (expression_statement "uVar5 = *(undefined4 *)this;" (assignment_expression "uVar5 = *(undefined4 *)this" identifier = (pointer_expression "*(undefined4 *)this" * (cast_expression "(undefined4 *)this" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }))) (expression_statement "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64);" (assignment_expression "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64)" identifier = (call_expression "(*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" ( (pointer_expression "*(code *)PTR_gettext_004c5c30" * (cast_expression "(code *)PTR_gettext_004c5c30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__s_004c1a50 + -0x1f64)" ( (binary_expression "PTR_s__s_004c1a50 + -0x1f64" identifier + number_literal) )))) ;) (expression_statement "iVar4 = *(int *)(this + 0x10);" (assignment_expression "iVar4 = *(int *)(this + 0x10)" identifier = (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)) {\n    uVar6 = *(undefined4 *)this;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n    (*(code *)PTR_error_004c1a54)(uVar6,uVar3);\n    iVar4 = *(int *)(this + 0x10);\n  }" if (parenthesized_expression "((iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0))" ( (binary_expression "(iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) && (parenthesized_expression "(*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)" ( (binary_expression "*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0" (binary_expression "*(int *)(this + 8) != 0" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) != number_literal) || (binary_expression "*(int *)(this + 0xc) != 0" (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n    uVar6 = *(undefined4 *)this;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n    (*(code *)PTR_error_004c1a54)(uVar6,uVar3);\n    iVar4 = *(int *)(this + 0x10);\n  }" { (expression_statement "uVar6 = *(undefined4 *)this;" (assignment_expression "uVar6 = *(undefined4 *)this" identifier = (pointer_expression "*(undefined4 *)this" * (cast_expression "(undefined4 *)this" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" identifier = (call_expression "(*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" ( (pointer_expression "*(code *)PTR_gettext_004c5c30" * (cast_expression "(code *)PTR_gettext_004c5c30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__s_004c1a50 + -0x1f9c)" ( (binary_expression "PTR_s__s_004c1a50 + -0x1f9c" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR_error_004c1a54)(uVar6,uVar3);" (call_expression "(*(code *)PTR_error_004c1a54)(uVar6,uVar3)" (parenthesized_expression "(*(code *)PTR_error_004c1a54)" ( (pointer_expression "*(code *)PTR_error_004c1a54" * (cast_expression "(code *)PTR_error_004c1a54" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar6,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar4 = *(int *)(this + 0x10);" (assignment_expression "iVar4 = *(int *)(this + 0x10)" identifier = (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) ))))) ;) })) (expression_statement "(*(code *)PTR_error_004c1a54)(uVar5,uVar2,param_1,iVar4);" (call_expression "(*(code *)PTR_error_004c1a54)(uVar5,uVar2,param_1,iVar4)" (parenthesized_expression "(*(code *)PTR_error_004c1a54)" ( (pointer_expression "*(code *)PTR_error_004c1a54" * (cast_expression "(code *)PTR_error_004c1a54" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar5,uVar2,param_1,iVar4)" ( identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_001441ac:\n  return (uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8);" statement_identifier : (return_statement "return (uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8);" return (binary_expression "(uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8)" (call_expression "(uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28)" ( (binary_expression "param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28" (binary_expression "param_1 * 0x28 + *(int *)(this + 0xc)" (binary_expression "param_1 * 0x28" identifier * number_literal) + (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) < (binary_expression "param_1 * 0x28" identifier * number_literal)) ))) + (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;)) (ERROR "}" }))
(translation_unit "/* DWARF original prototype: off_t section_header_offset(Elf_file<32,_true,_gold::Object> * this,\n   uint shndx) */\n\noff_t __thiscall\nelfcpp::Elf_file<32,_true,_gold::Object>::section_header_offset\n          (Elf_file<32,_true,_gold::Object> *this,uint shndx)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  Object *pOVar4;\n  Object *pOVar5;\n  \n  uVar1 = this->shnum_;\n  if (uVar1 == 0) {\n    pOVar4 = this->file_;\n    if (*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(pOVar4,uVar2);\n      uVar1 = this->shnum_;\n      goto LAB_0014419c;\n    }\n  }\n  else {\nLAB_0014419c:\n    if (shndx < uVar1) goto LAB_001441ac;\n    pOVar4 = this->file_;\n  }\n  uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64);\n  uVar1 = this->shnum_;\n  if ((uVar1 == 0) && (*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0)) {\n    pOVar5 = this->file_;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n    (*(code *)PTR_error_004c1a54)(pOVar5,uVar3);\n    uVar1 = this->shnum_;\n  }\n  (*(code *)PTR_error_004c1a54)(pOVar4,uVar2,shndx,uVar1);\nLAB_001441ac:\n  uVar1 = shndx * 0x28 + (int)this->shoff_;\n  return CONCAT44((uint)(uVar1 < shndx * 0x28) + *(int *)&this->shoff_,uVar1);\n}\n\n" comment (declaration "off_t __thiscall\nelfcpp::Elf_file<32,_true,_gold::Object>::section_header_offset\n          (Elf_file<32,_true,_gold::Object> *this,uint shndx)\n\n{\n  uint uVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "elfcpp::" identifier : :) identifier (ERROR "<32" < number_literal) , identifier , (ERROR "_gold::Object>::section_header_offset\n          (Elf_file<32,_true,_gold::Object> *this,uint shndx)\n\n{\n  uint" identifier : : identifier > : : (function_declarator "section_header_offset\n          (Elf_file<32,_true,_gold::Object> *this,uint shndx)" identifier (parameter_list "(Elf_file<32,_true,_gold::Object> *this,uint shndx)" ( (parameter_declaration "Elf_file" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true" type_identifier) , (parameter_declaration "_gold::Object> *this" type_identifier (ERROR "::Object>" : : identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) ))) { identifier) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "Object *pOVar4;" type_identifier (pointer_declarator "*pOVar4" * identifier) ;) (declaration "Object *pOVar5;" type_identifier (pointer_declarator "*pOVar5" * identifier) ;) (expression_statement "uVar1 = this->shnum_;" (assignment_expression "uVar1 = this->shnum_" identifier = (field_expression "this->shnum_" identifier -> field_identifier)) ;) (if_statement "if (uVar1 == 0) {\n    pOVar4 = this->file_;\n    if (*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(pOVar4,uVar2);\n      uVar1 = this->shnum_;\n      goto LAB_0014419c;\n    }\n  }\n  else {\nLAB_0014419c:\n    if (shndx < uVar1) goto LAB_001441ac;\n    pOVar4 = this->file_;\n  }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    pOVar4 = this->file_;\n    if (*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(pOVar4,uVar2);\n      uVar1 = this->shnum_;\n      goto LAB_0014419c;\n    }\n  }" { (expression_statement "pOVar4 = this->file_;" (assignment_expression "pOVar4 = this->file_" identifier = (field_expression "this->file_" identifier -> field_identifier)) ;) (if_statement "if (*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(pOVar4,uVar2);\n      uVar1 = this->shnum_;\n      goto LAB_0014419c;\n    }" if (parenthesized_expression "(*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0)" ( (binary_expression "*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0" (binary_expression "*(int *)&this->shoff_ != 0" (pointer_expression "*(int *)&this->shoff_" * (cast_expression "(int *)&this->shoff_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->shoff_" & (field_expression "this->shoff_" identifier -> field_identifier)))) != number_literal) || (binary_expression "(int)this->shoff_ != 0" (cast_expression "(int)this->shoff_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->shoff_" identifier -> field_identifier)) != number_literal)) )) (compound_statement "{\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(pOVar4,uVar2);\n      uVar1 = this->shnum_;\n      goto LAB_0014419c;\n    }" { (expression_statement "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);" (assignment_expression "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" identifier = (call_expression "(*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" ( (pointer_expression "*(code *)PTR_gettext_004c5c30" * (cast_expression "(code *)PTR_gettext_004c5c30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__s_004c1a50 + -0x1f9c)" ( (binary_expression "PTR_s__s_004c1a50 + -0x1f9c" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR_error_004c1a54)(pOVar4,uVar2);" (call_expression "(*(code *)PTR_error_004c1a54)(pOVar4,uVar2)" (parenthesized_expression "(*(code *)PTR_error_004c1a54)" ( (pointer_expression "*(code *)PTR_error_004c1a54" * (cast_expression "(code *)PTR_error_004c1a54" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pOVar4,uVar2)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = this->shnum_;" (assignment_expression "uVar1 = this->shnum_" identifier = (field_expression "this->shnum_" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0014419c;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_0014419c:\n    if (shndx < uVar1) goto LAB_001441ac;\n    pOVar4 = this->file_;\n  }" else (compound_statement "{\nLAB_0014419c:\n    if (shndx < uVar1) goto LAB_001441ac;\n    pOVar4 = this->file_;\n  }" { (labeled_statement "LAB_0014419c:\n    if (shndx < uVar1) goto LAB_001441ac;" statement_identifier : (if_statement "if (shndx < uVar1) goto LAB_001441ac;" if (parenthesized_expression "(shndx < uVar1)" ( (binary_expression "shndx < uVar1" identifier < identifier) )) (goto_statement "goto LAB_001441ac;" goto statement_identifier ;))) (expression_statement "pOVar4 = this->file_;" (assignment_expression "pOVar4 = this->file_" identifier = (field_expression "this->file_" identifier -> field_identifier)) ;) }))) (expression_statement "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64);" (assignment_expression "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64)" identifier = (call_expression "(*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" ( (pointer_expression "*(code *)PTR_gettext_004c5c30" * (cast_expression "(code *)PTR_gettext_004c5c30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__s_004c1a50 + -0x1f64)" ( (binary_expression "PTR_s__s_004c1a50 + -0x1f64" identifier + number_literal) )))) ;) (expression_statement "uVar1 = this->shnum_;" (assignment_expression "uVar1 = this->shnum_" identifier = (field_expression "this->shnum_" identifier -> field_identifier)) ;) (if_statement "if ((uVar1 == 0) && (*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0)) {\n    pOVar5 = this->file_;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n    (*(code *)PTR_error_004c1a54)(pOVar5,uVar3);\n    uVar1 = this->shnum_;\n  }" if (parenthesized_expression "((uVar1 == 0) && (*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0))" ( (binary_expression "(uVar1 == 0) && (*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0)" (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) && (parenthesized_expression "(*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0)" ( (binary_expression "*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0" (binary_expression "*(int *)&this->shoff_ != 0" (pointer_expression "*(int *)&this->shoff_" * (cast_expression "(int *)&this->shoff_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->shoff_" & (field_expression "this->shoff_" identifier -> field_identifier)))) != number_literal) || (binary_expression "(int)this->shoff_ != 0" (cast_expression "(int)this->shoff_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->shoff_" identifier -> field_identifier)) != number_literal)) ))) )) (compound_statement "{\n    pOVar5 = this->file_;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n    (*(code *)PTR_error_004c1a54)(pOVar5,uVar3);\n    uVar1 = this->shnum_;\n  }" { (expression_statement "pOVar5 = this->file_;" (assignment_expression "pOVar5 = this->file_" identifier = (field_expression "this->file_" identifier -> field_identifier)) ;) (expression_statement "uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" identifier = (call_expression "(*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" ( (pointer_expression "*(code *)PTR_gettext_004c5c30" * (cast_expression "(code *)PTR_gettext_004c5c30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__s_004c1a50 + -0x1f9c)" ( (binary_expression "PTR_s__s_004c1a50 + -0x1f9c" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR_error_004c1a54)(pOVar5,uVar3);" (call_expression "(*(code *)PTR_error_004c1a54)(pOVar5,uVar3)" (parenthesized_expression "(*(code *)PTR_error_004c1a54)" ( (pointer_expression "*(code *)PTR_error_004c1a54" * (cast_expression "(code *)PTR_error_004c1a54" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pOVar5,uVar3)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = this->shnum_;" (assignment_expression "uVar1 = this->shnum_" identifier = (field_expression "this->shnum_" identifier -> field_identifier)) ;) })) (expression_statement "(*(code *)PTR_error_004c1a54)(pOVar4,uVar2,shndx,uVar1);" (call_expression "(*(code *)PTR_error_004c1a54)(pOVar4,uVar2,shndx,uVar1)" (parenthesized_expression "(*(code *)PTR_error_004c1a54)" ( (pointer_expression "*(code *)PTR_error_004c1a54" * (cast_expression "(code *)PTR_error_004c1a54" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pOVar4,uVar2,shndx,uVar1)" ( identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_001441ac:\n  uVar1 = shndx * 0x28 + (int)this->shoff_;" statement_identifier : (expression_statement "uVar1 = shndx * 0x28 + (int)this->shoff_;" (assignment_expression "uVar1 = shndx * 0x28 + (int)this->shoff_" identifier = (binary_expression "shndx * 0x28 + (int)this->shoff_" (binary_expression "shndx * 0x28" identifier * number_literal) + (cast_expression "(int)this->shoff_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->shoff_" identifier -> field_identifier)))) ;)) (return_statement "return CONCAT44((uint)(uVar1 < shndx * 0x28) + *(int *)&this->shoff_,uVar1);" return (call_expression "CONCAT44((uint)(uVar1 < shndx * 0x28) + *(int *)&this->shoff_,uVar1)" identifier (argument_list "((uint)(uVar1 < shndx * 0x28) + *(int *)&this->shoff_,uVar1)" ( (binary_expression "(uint)(uVar1 < shndx * 0x28) + *(int *)&this->shoff_" (call_expression "(uint)(uVar1 < shndx * 0x28)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < shndx * 0x28)" ( (binary_expression "uVar1 < shndx * 0x28" identifier < (binary_expression "shndx * 0x28" identifier * number_literal)) ))) + (pointer_expression "*(int *)&this->shoff_" * (cast_expression "(int *)&this->shoff_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->shoff_" & (field_expression "this->shoff_" identifier -> field_identifier))))) , identifier ))) ;) (ERROR "}" }))
(translation_unit "int __thiscall\nelfcpp::Elf_file<32,true,gold::Object>::section_header_offset\n          (Elf_file<32,true,gold::Object> *this,uint param_1)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  \n  uVar1 = *(uint *)(this + 0x10);\n  if (uVar1 == 0) {\n    uVar5 = *(undefined4 *)this;\n    if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }\n  }\n  else {\nLAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;\n    uVar5 = *(undefined4 *)this;\n  }\n  uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64);\n  iVar4 = *(int *)(this + 0x10);\n  if ((iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)) {\n    uVar6 = *(undefined4 *)this;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n    (*(code *)PTR_error_004c1a54)(uVar6,uVar3);\n    iVar4 = *(int *)(this + 0x10);\n  }\n  (*(code *)PTR_error_004c1a54)(uVar5,uVar2,param_1,iVar4);\nLAB_001441ac:\n  return (uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8);\n}\n\n" (declaration "int __thiscall\nelfcpp::Elf_file<32,true,gold::Object>::section_header_offset\n          (Elf_file<32,true,gold::Object> *this,uint param_1)\n\n{\n  uint uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "elfcpp::" identifier : :) identifier (ERROR "<32" < number_literal) , identifier , (ERROR "gold::Object>::section_header_offset\n          (Elf_file<32,true,gold::Object> *this,uint param_1)\n\n{\n  uint" identifier : : identifier > : : (function_declarator "section_header_offset\n          (Elf_file<32,true,gold::Object> *this,uint param_1)" identifier (parameter_list "(Elf_file<32,true,gold::Object> *this,uint param_1)" ( (parameter_declaration "Elf_file" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "true" type_identifier) , (parameter_declaration "gold::Object> *this" type_identifier (ERROR "::Object>" : : identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint param_1" type_identifier identifier) ))) { identifier) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (expression_statement "uVar1 = *(uint *)(this + 0x10);" (assignment_expression "uVar1 = *(uint *)(this + 0x10)" identifier = (pointer_expression "*(uint *)(this + 0x10)" * (cast_expression "(uint *)(this + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (uVar1 == 0) {\n    uVar5 = *(undefined4 *)this;\n    if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }\n  }\n  else {\nLAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;\n    uVar5 = *(undefined4 *)this;\n  }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar5 = *(undefined4 *)this;\n    if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }\n  }" { (expression_statement "uVar5 = *(undefined4 *)this;" (assignment_expression "uVar5 = *(undefined4 *)this" identifier = (pointer_expression "*(undefined4 *)this" * (cast_expression "(undefined4 *)this" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }" if (parenthesized_expression "(*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)" ( (binary_expression "*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0" (binary_expression "*(int *)(this + 8) != 0" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) != number_literal) || (binary_expression "*(int *)(this + 0xc) != 0" (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) != number_literal)) )) (compound_statement "{\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }" { (expression_statement "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);" (assignment_expression "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" identifier = (call_expression "(*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" ( (pointer_expression "*(code *)PTR_gettext_004c5c30" * (cast_expression "(code *)PTR_gettext_004c5c30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__s_004c1a50 + -0x1f9c)" ( (binary_expression "PTR_s__s_004c1a50 + -0x1f9c" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR_error_004c1a54)(uVar5,uVar2);" (call_expression "(*(code *)PTR_error_004c1a54)(uVar5,uVar2)" (parenthesized_expression "(*(code *)PTR_error_004c1a54)" ( (pointer_expression "*(code *)PTR_error_004c1a54" * (cast_expression "(code *)PTR_error_004c1a54" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar5,uVar2)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = *(uint *)(this + 0x10);" (assignment_expression "uVar1 = *(uint *)(this + 0x10)" identifier = (pointer_expression "*(uint *)(this + 0x10)" * (cast_expression "(uint *)(this + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0014419c;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;\n    uVar5 = *(undefined4 *)this;\n  }" else (compound_statement "{\nLAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;\n    uVar5 = *(undefined4 *)this;\n  }" { (labeled_statement "LAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;" statement_identifier : (if_statement "if (param_1 < uVar1) goto LAB_001441ac;" if (parenthesized_expression "(param_1 < uVar1)" ( (binary_expression "param_1 < uVar1" identifier < identifier) )) (goto_statement "goto LAB_001441ac;" goto statement_identifier ;))) (expression_statement "uVar5 = *(undefined4 *)this;" (assignment_expression "uVar5 = *(undefined4 *)this" identifier = (pointer_expression "*(undefined4 *)this" * (cast_expression "(undefined4 *)this" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }))) (expression_statement "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64);" (assignment_expression "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64)" identifier = (call_expression "(*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" ( (pointer_expression "*(code *)PTR_gettext_004c5c30" * (cast_expression "(code *)PTR_gettext_004c5c30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__s_004c1a50 + -0x1f64)" ( (binary_expression "PTR_s__s_004c1a50 + -0x1f64" identifier + number_literal) )))) ;) (expression_statement "iVar4 = *(int *)(this + 0x10);" (assignment_expression "iVar4 = *(int *)(this + 0x10)" identifier = (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)) {\n    uVar6 = *(undefined4 *)this;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n    (*(code *)PTR_error_004c1a54)(uVar6,uVar3);\n    iVar4 = *(int *)(this + 0x10);\n  }" if (parenthesized_expression "((iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0))" ( (binary_expression "(iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) && (parenthesized_expression "(*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)" ( (binary_expression "*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0" (binary_expression "*(int *)(this + 8) != 0" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) != number_literal) || (binary_expression "*(int *)(this + 0xc) != 0" (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n    uVar6 = *(undefined4 *)this;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n    (*(code *)PTR_error_004c1a54)(uVar6,uVar3);\n    iVar4 = *(int *)(this + 0x10);\n  }" { (expression_statement "uVar6 = *(undefined4 *)this;" (assignment_expression "uVar6 = *(undefined4 *)this" identifier = (pointer_expression "*(undefined4 *)this" * (cast_expression "(undefined4 *)this" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" identifier = (call_expression "(*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" ( (pointer_expression "*(code *)PTR_gettext_004c5c30" * (cast_expression "(code *)PTR_gettext_004c5c30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__s_004c1a50 + -0x1f9c)" ( (binary_expression "PTR_s__s_004c1a50 + -0x1f9c" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR_error_004c1a54)(uVar6,uVar3);" (call_expression "(*(code *)PTR_error_004c1a54)(uVar6,uVar3)" (parenthesized_expression "(*(code *)PTR_error_004c1a54)" ( (pointer_expression "*(code *)PTR_error_004c1a54" * (cast_expression "(code *)PTR_error_004c1a54" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar6,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar4 = *(int *)(this + 0x10);" (assignment_expression "iVar4 = *(int *)(this + 0x10)" identifier = (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) ))))) ;) })) (expression_statement "(*(code *)PTR_error_004c1a54)(uVar5,uVar2,param_1,iVar4);" (call_expression "(*(code *)PTR_error_004c1a54)(uVar5,uVar2,param_1,iVar4)" (parenthesized_expression "(*(code *)PTR_error_004c1a54)" ( (pointer_expression "*(code *)PTR_error_004c1a54" * (cast_expression "(code *)PTR_error_004c1a54" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar5,uVar2,param_1,iVar4)" ( identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_001441ac:\n  return (uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8);" statement_identifier : (return_statement "return (uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8);" return (binary_expression "(uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8)" (call_expression "(uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28)" ( (binary_expression "param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28" (binary_expression "param_1 * 0x28 + *(int *)(this + 0xc)" (binary_expression "param_1 * 0x28" identifier * number_literal) + (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) < (binary_expression "param_1 * 0x28" identifier * number_literal)) ))) + (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;)) (ERROR "}" }))
(translation_unit (declaration TYPE (ms_call_modifier __thiscall) (ERROR IDENT : :) IDENT (ERROR < LIT) , IDENT , (ERROR IDENT : : IDENT > : : (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) (ERROR < LIT) , (parameter_declaration TYPE) , (parameter_declaration TYPE (ERROR : : IDENT >) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) { IDENT) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) || (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) || (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (return_statement return (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (binary_expression IDENT * LIT)) ))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (ERROR }))
(declaration "int __thiscall\nelfcpp::Elf_file<32,true,gold::Object>::section_header_offset\n          (Elf_file<32,true,gold::Object> *this,uint param_1)\n\n{\n  uint uVar1;" (primitive_type "int") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "elfcpp::" (identifier "elfcpp") (: ":") (: ":")) (identifier "Elf_file") (ERROR "<32" (< "<") (number_literal "32")) (, ",") (identifier "true") (, ",") (ERROR "gold::Object>::section_header_offset\n          (Elf_file<32,true,gold::Object> *this,uint param_1)\n\n{\n  uint" (identifier "gold") (: ":") (: ":") (identifier "Object") (> ">") (: ":") (: ":") (function_declarator "section_header_offset\n          (Elf_file<32,true,gold::Object> *this,uint param_1)" (identifier "section_header_offset") (parameter_list "(Elf_file<32,true,gold::Object> *this,uint param_1)" (( "(") (parameter_declaration "Elf_file" (type_identifier "Elf_file")) (ERROR "<32" (< "<") (number_literal "32")) (, ",") (parameter_declaration "true" (type_identifier "true")) (, ",") (parameter_declaration "gold::Object> *this" (type_identifier "gold") (ERROR "::Object>" (: ":") (: ":") (identifier "Object") (> ">")) (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) () ")"))) ({ "{") (identifier "uint")) (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (expression_statement "uVar1 = *(uint *)(this + 0x10);" (assignment_expression "uVar1 = *(uint *)(this + 0x10)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(this + 0x10)" (* "*") (cast_expression "(uint *)(this + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (uVar1 == 0) {\n    uVar5 = *(undefined4 *)this;\n    if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }\n  }\n  else {\nLAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;\n    uVar5 = *(undefined4 *)this;\n  }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar5 = *(undefined4 *)this;\n    if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }\n  }" ({ "{") (expression_statement "uVar5 = *(undefined4 *)this;" (assignment_expression "uVar5 = *(undefined4 *)this" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)this" (* "*") (cast_expression "(undefined4 *)this" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this")))) (; ";")) (if_statement "if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }" (if "if") (parenthesized_expression "(*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)" (( "(") (binary_expression "*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0" (binary_expression "*(int *)(this + 8) != 0" (pointer_expression "*(int *)(this + 8)" (* "*") (cast_expression "(int *)(this + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "*(int *)(this + 0xc) != 0" (pointer_expression "*(int *)(this + 0xc)" (* "*") (cast_expression "(int *)(this + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0xc)" (( "(") (binary_expression "this + 0xc" (identifier "this") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);\n      uVar1 = *(uint *)(this + 0x10);\n      goto LAB_0014419c;\n    }" ({ "{") (expression_statement "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);" (assignment_expression "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" (identifier "uVar2") (= "=") (call_expression "(*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" (( "(") (pointer_expression "*(code *)PTR_gettext_004c5c30" (* "*") (cast_expression "(code *)PTR_gettext_004c5c30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_gettext_004c5c30"))) () ")")) (argument_list "(PTR_s__s_004c1a50 + -0x1f9c)" (( "(") (binary_expression "PTR_s__s_004c1a50 + -0x1f9c" (identifier "PTR_s__s_004c1a50") (+ "+") (number_literal "-0x1f9c")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR_error_004c1a54)(uVar5,uVar2);" (call_expression "(*(code *)PTR_error_004c1a54)(uVar5,uVar2)" (parenthesized_expression "(*(code *)PTR_error_004c1a54)" (( "(") (pointer_expression "*(code *)PTR_error_004c1a54" (* "*") (cast_expression "(code *)PTR_error_004c1a54" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_error_004c1a54"))) () ")")) (argument_list "(uVar5,uVar2)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "uVar1 = *(uint *)(this + 0x10);" (assignment_expression "uVar1 = *(uint *)(this + 0x10)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(this + 0x10)" (* "*") (cast_expression "(uint *)(this + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (goto_statement "goto LAB_0014419c;" (goto "goto") (statement_identifier "LAB_0014419c") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;\n    uVar5 = *(undefined4 *)this;\n  }" (else "else") (compound_statement "{\nLAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;\n    uVar5 = *(undefined4 *)this;\n  }" ({ "{") (labeled_statement "LAB_0014419c:\n    if (param_1 < uVar1) goto LAB_001441ac;" (statement_identifier "LAB_0014419c") (: ":") (if_statement "if (param_1 < uVar1) goto LAB_001441ac;" (if "if") (parenthesized_expression "(param_1 < uVar1)" (( "(") (binary_expression "param_1 < uVar1" (identifier "param_1") (< "<") (identifier "uVar1")) () ")")) (goto_statement "goto LAB_001441ac;" (goto "goto") (statement_identifier "LAB_001441ac") (; ";")))) (expression_statement "uVar5 = *(undefined4 *)this;" (assignment_expression "uVar5 = *(undefined4 *)this" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)this" (* "*") (cast_expression "(undefined4 *)this" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this")))) (; ";")) (} "}")))) (expression_statement "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64);" (assignment_expression "uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64)" (identifier "uVar2") (= "=") (call_expression "(*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" (( "(") (pointer_expression "*(code *)PTR_gettext_004c5c30" (* "*") (cast_expression "(code *)PTR_gettext_004c5c30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_gettext_004c5c30"))) () ")")) (argument_list "(PTR_s__s_004c1a50 + -0x1f64)" (( "(") (binary_expression "PTR_s__s_004c1a50 + -0x1f64" (identifier "PTR_s__s_004c1a50") (+ "+") (number_literal "-0x1f64")) () ")")))) (; ";")) (expression_statement "iVar4 = *(int *)(this + 0x10);" (assignment_expression "iVar4 = *(int *)(this + 0x10)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(this + 0x10)" (* "*") (cast_expression "(int *)(this + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)) {\n    uVar6 = *(undefined4 *)this;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n    (*(code *)PTR_error_004c1a54)(uVar6,uVar3);\n    iVar4 = *(int *)(this + 0x10);\n  }" (if "if") (parenthesized_expression "((iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0))" (( "(") (binary_expression "(iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)" (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)" (( "(") (binary_expression "*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0" (binary_expression "*(int *)(this + 8) != 0" (pointer_expression "*(int *)(this + 8)" (* "*") (cast_expression "(int *)(this + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "*(int *)(this + 0xc) != 0" (pointer_expression "*(int *)(this + 0xc)" (* "*") (cast_expression "(int *)(this + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0xc)" (( "(") (binary_expression "this + 0xc" (identifier "this") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    uVar6 = *(undefined4 *)this;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);\n    (*(code *)PTR_error_004c1a54)(uVar6,uVar3);\n    iVar4 = *(int *)(this + 0x10);\n  }" ({ "{") (expression_statement "uVar6 = *(undefined4 *)this;" (assignment_expression "uVar6 = *(undefined4 *)this" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)this" (* "*") (cast_expression "(undefined4 *)this" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this")))) (; ";")) (expression_statement "uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" (identifier "uVar3") (= "=") (call_expression "(*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" (( "(") (pointer_expression "*(code *)PTR_gettext_004c5c30" (* "*") (cast_expression "(code *)PTR_gettext_004c5c30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_gettext_004c5c30"))) () ")")) (argument_list "(PTR_s__s_004c1a50 + -0x1f9c)" (( "(") (binary_expression "PTR_s__s_004c1a50 + -0x1f9c" (identifier "PTR_s__s_004c1a50") (+ "+") (number_literal "-0x1f9c")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR_error_004c1a54)(uVar6,uVar3);" (call_expression "(*(code *)PTR_error_004c1a54)(uVar6,uVar3)" (parenthesized_expression "(*(code *)PTR_error_004c1a54)" (( "(") (pointer_expression "*(code *)PTR_error_004c1a54" (* "*") (cast_expression "(code *)PTR_error_004c1a54" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_error_004c1a54"))) () ")")) (argument_list "(uVar6,uVar3)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar4 = *(int *)(this + 0x10);" (assignment_expression "iVar4 = *(int *)(this + 0x10)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(this + 0x10)" (* "*") (cast_expression "(int *)(this + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_error_004c1a54)(uVar5,uVar2,param_1,iVar4);" (call_expression "(*(code *)PTR_error_004c1a54)(uVar5,uVar2,param_1,iVar4)" (parenthesized_expression "(*(code *)PTR_error_004c1a54)" (( "(") (pointer_expression "*(code *)PTR_error_004c1a54" (* "*") (cast_expression "(code *)PTR_error_004c1a54" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_error_004c1a54"))) () ")")) (argument_list "(uVar5,uVar2,param_1,iVar4)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar2") (, ",") (identifier "param_1") (, ",") (identifier "iVar4") () ")"))) (; ";")) (labeled_statement "LAB_001441ac:\n  return (uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8);" (statement_identifier "LAB_001441ac") (: ":") (return_statement "return (uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8);" (return "return") (binary_expression "(uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8)" (call_expression "(uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28)" (( "(") (binary_expression "param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28" (binary_expression "param_1 * 0x28 + *(int *)(this + 0xc)" (binary_expression "param_1 * 0x28" (identifier "param_1") (* "*") (number_literal "0x28")) (+ "+") (pointer_expression "*(int *)(this + 0xc)" (* "*") (cast_expression "(int *)(this + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0xc)" (( "(") (binary_expression "this + 0xc" (identifier "this") (+ "+") (number_literal "0xc")) () ")"))))) (< "<") (binary_expression "param_1 * 0x28" (identifier "param_1") (* "*") (number_literal "0x28"))) () ")"))) (+ "+") (pointer_expression "*(int *)(this + 8)" (* "*") (cast_expression "(int *)(this + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (ERROR "}" (} "}"))

/* DWARF original prototype: off_t section_header_offset(Elf_file<32,_true,_gold::Object> * this,
   uint shndx) */

type_1 __thiscall
elfcpp::Elf_file<32,_true,_gold::type_3>::section_header_offset
          (Elf_file<32,_true,_gold::type_3> *this,uint var_3)

{
  uint var_1;
  type_2 uVar2;
  type_2 uVar3;
  type_3 *pOVar4;
  type_3 *pOVar5;
  
  var_1 = this->shnum_;
  if (var_1 == 0) {
    pOVar4 = this->file_;
    if (*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0) {
      uVar2 = (*(type_4 *)PTR_gettext_004c5c30)(var_2 + -0x1f9c);
      (*(type_4 *)PTR_error_004c1a54)(pOVar4,uVar2);
      var_1 = this->shnum_;
      goto LAB_0014419c;
    }
  }
  else {
LAB_0014419c:
    if (var_3 < var_1) goto LAB_001441ac;
    pOVar4 = this->file_;
  }
  uVar2 = (*(type_4 *)PTR_gettext_004c5c30)(var_2 + -0x1f64);
  var_1 = this->shnum_;
  if ((var_1 == 0) && (*(int *)&this->shoff_ != 0 || (int)this->shoff_ != 0)) {
    pOVar5 = this->file_;
    uVar3 = (*(type_4 *)PTR_gettext_004c5c30)(var_2 + -0x1f9c);
    (*(type_4 *)PTR_error_004c1a54)(pOVar5,uVar3);
    var_1 = this->shnum_;
  }
  (*(type_4 *)PTR_error_004c1a54)(pOVar4,uVar2,var_3,var_1);
LAB_001441ac:
  var_1 = var_3 * 0x28 + (int)this->shoff_;
  return var_4((uint)(var_1 < var_3 * 0x28) + *(int *)&this->shoff_,var_1);
}


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

/* elfcpp::Elf_file<32, true, gold::Object>::MASKED(unsigned int) const */

int __thiscall
elfcpp::Elf_file<32,true,gold::Object>::MASKED
          (Elf_file<32,true,gold::Object> *this,uint param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  
  uVar1 = *(uint *)(this + 0x10);
  if (uVar1 == 0) {
    uVar5 = *(undefined4 *)this;
    if (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0) {
      uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);
      (*(code *)PTR_error_004c1a54)(uVar5,uVar2);
      uVar1 = *(uint *)(this + 0x10);
      goto LAB_0014419c;
    }
  }
  else {
LAB_0014419c:
    if (param_1 < uVar1) goto LAB_001441ac;
    uVar5 = *(undefined4 *)this;
  }
  uVar2 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f64);
  iVar4 = *(int *)(this + 0x10);
  if ((iVar4 == 0) && (*(int *)(this + 8) != 0 || *(int *)(this + 0xc) != 0)) {
    uVar6 = *(undefined4 *)this;
    uVar3 = (*(code *)PTR_gettext_004c5c30)(PTR_s__s_004c1a50 + -0x1f9c);
    (*(code *)PTR_error_004c1a54)(uVar6,uVar3);
    iVar4 = *(int *)(this + 0x10);
  }
  (*(code *)PTR_error_004c1a54)(uVar5,uVar2,param_1,iVar4);
LAB_001441ac:
  return (uint)(param_1 * 0x28 + *(int *)(this + 0xc) < param_1 * 0x28) + *(int *)(this + 8);
}

