
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: void initialize_shnum(Elf_file<64,_true,_gold::Incremental_binary> *
   this) */

void __thiscall
elfcpp::Elf_file<64,_true,_gold::Incremental_binary>::initialize_shnum
          (Elf_file<64,_true,_gold::Incremental_binary> *this)

{
  Elf_file<64,_true,_gold::Incremental_binary> *pEVar1;
  char *format;
  Elf_file<64,_true,_gold::Incremental_binary> *this_00;
  uchar *puVar2;
  uint uVar3;
  size_t size;
  Output_file *this_1;
  Incremental_binary *this_01;
  undefined4 in_stack_ffffffec;
  
  if ((this->shnum_ == 0) || (this->shstrndx_ == 0xffff)) {
    size = *(size_t *)&this->shoff_;
    pEVar1 = *(Elf_file<64,_true,_gold::Incremental_binary> **)((int)&this->shoff_ + 4);
    if (size != 0 || pEVar1 != (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) {
      this_01 = this->file_;
      this_1 = this_01->output_;
      this_00 = this;
      if (-1 < (int)size) {
        size = (pEVar1 + 2 < pEVar1) + size;
        this_00 = (Elf_file<64,_true,_gold::Incremental_binary> *)
                  (uint)((int)*(size_t *)&this_1->file_size_ < (int)size);
        if ((this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&
           ((*(size_t *)&this_1->file_size_ != size ||
            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)
                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))) {
          puVar2 = this_1->base_;
          if (this->shnum_ == 0) {
            uVar3 = this->shstrndx_;
            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);
          }
          else {
            uVar3 = this->shstrndx_;
          }
          if (uVar3 == 0xffff) {
            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);
            this->shstrndx_ = uVar3;
            if (this->shnum_ <= uVar3) {
              if (0xffff < uVar3) {
                this->shstrndx_ = uVar3 - 0x100;
                this->large_shndx_offset_ = -0x100;
                if (uVar3 - 0x100 < this->shnum_) {
                  return;
                }
              }
              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);
              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);
              return;
            }
          }
          return;
        }
      }
                    /* WARNING: Subroutine does not return */
      gold::Output_file::get_output_view
                ((Output_file *)this_00,CONCAT44(0x43a1d0,in_stack_ffffffec),size,this_1);
    }
  }
  return;
}



/* elfcpp::Elf_file<64, true, gold::Incremental_binary>::initialize_shnum() */

void __thiscall
elfcpp::Elf_file<64,true,gold::Incremental_binary>::initialize_shnum
          (Elf_file<64,true,gold::Incremental_binary> *this)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  char *pcVar5;
  
  if ((*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff)) {
    iVar3 = *(int *)(this + 8);
    uVar1 = *(uint *)(this + 0xc);
    if (iVar3 != 0 || uVar1 != 0) {
      pcVar5 = *(char **)this;
      iVar4 = *(int *)(pcVar5 + 0x28);
      if (-1 < iVar3) {
        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;
        if ((iVar3 <= *(int *)(iVar4 + 8)) &&
           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {
          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;
          if (*(int *)(this + 0x10) == 0) {
            iVar4 = *(int *)(this + 0x14);
            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);
          }
          else {
            iVar4 = *(int *)(this + 0x14);
          }
          if (iVar4 == 0xffff) {
            uVar1 = *(uint *)(iVar3 + 0x28);
            *(uint *)(this + 0x14) = uVar1;
            if (*(uint *)(this + 0x10) <= uVar1) {
              if (0xffff < uVar1) {
                *(uint *)(this + 0x14) = uVar1 - 0x100;
                *(undefined4 *)(this + 0x18) = 0xffffff00;
                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {
                  return;
                }
              }
              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);
              gold::Incremental_binary::error
                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));
              return;
            }
          }
          return;
        }
      }
                    /* WARNING: Subroutine does not return */
      FUN_000f2f54();
    }
  }
  return;
}


lui gp,0x33
addiu gp,gp,-0x3a1c
addu gp,gp,t9
lw v1,0x10(a0)
beq v1,zero,0x0010dc18
_ori v0,zero,0xffff
lw a1,0x14(a0)
beq a1,v0,0x0010dc18
_nop
jr ra
_nop
lw a1,0x8(a0)
lw v0,0xc(a0)
or a2,a1,v0
beq a2,zero,0x0010dc10
_nop
addiu sp,sp,-0x28
sw s1,0x20(sp)
sw gp,0x10(sp)
sw s0,0x1c(sp)
or s0,a0,zero
sw ra,0x24(sp)
lw s1,0x0(a0)
bltz a1,0x0010dd40
_lw a2,0x28(s1)
addiu t0,v0,0x40
lw a3,0x8(a2)
sltu a0,t0,v0
addu a1,a0,a1
slt a0,a3,a1
bne a0,zero,0x0010dd44
_lw t9,-0x6190(gp)
beq a3,a1,0x0010dd30
_nop
lw a0,0x10(a2)
beq v1,zero,0x0010dca4
_addu v0,a0,v0
lw a0,0x14(s0)
ori v1,zero,0xffff
beq a0,v1,0x0010dcbc
_nop
lw ra,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x28
lw v1,0x24(v0)
lw a0,0x14(s0)
sw v1,0x10(s0)
ori v1,zero,0xffff
bne a0,v1,0x0010dc94
_lw ra,0x24(sp)
lw v0,0x28(v0)
lw v1,0x10(s0)
sltu a0,v0,v1
bne a0,zero,0x0010dc90
_sw v0,0x14(s0)
lui a0,0x1
sltu a0,v0,a0
bne a0,zero,0x0010dcf4
_addiu v0,v0,-0x100
sltu v1,v0,v1
sw v0,0x14(s0)
li v0,-0x100
bne v1,zero,0x0010dc90
_sw v0,0x18(s0)
lw a0,-0x7fc4(gp)
lw t9,-0x39b8(gp)
jalr t9
_addiu a0,a0,0x4eac
or a0,s1,zero
lw gp,0x10(sp)
or a1,v0,zero
lw a3,0x10(s0)
lw a2,0x14(s0)
lw ra,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
lw t9,-0x60d0(gp)
b 0x000f30ec
_addiu sp,sp,0x28
lw a0,0xc(a2)
sltu t0,a0,t0
beq t0,zero,0x0010dc74
_nop
lw t9,-0x6190(gp)
addiu t9,t9,0x2f54
bal 0x000f2f54
_nop
(translation_unit "/* elfcpp::Elf_file<64, true, gold::Incremental_binary>::initialize_shnum() */\n\nvoid __thiscall\nelfcpp::Elf_file<64,true,gold::Incremental_binary>::initialize_shnum\n          (Elf_file<64,true,gold::Incremental_binary> *this)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  \n  if ((*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff)) {\n    iVar3 = *(int *)(this + 8);\n    uVar1 = *(uint *)(this + 0xc);\n    if (iVar3 != 0 || uVar1 != 0) {\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_000f2f54();\n    }\n  }\n  return;\n}\n\n" comment (declaration "void __thiscall\nelfcpp::Elf_file<64,true,gold::Incremental_binary>::initialize_shnum\n          (Elf_file<64,true,gold::Incremental_binary> *this)\n\n{\n  uint uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "elfcpp::" identifier : :) identifier (ERROR "<64" < number_literal) , identifier , (ERROR "gold::Incremental_binary>::initialize_shnum\n          (Elf_file<64,true,gold::Incremental_binary> *this)\n\n{\n  uint" identifier : : identifier > : : (function_declarator "initialize_shnum\n          (Elf_file<64,true,gold::Incremental_binary> *this)" identifier (parameter_list "(Elf_file<64,true,gold::Incremental_binary> *this)" ( (parameter_declaration "Elf_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "true" type_identifier) , (parameter_declaration "gold::Incremental_binary> *this" type_identifier (ERROR "::Incremental_binary>" : : identifier >) (pointer_declarator "*this" * identifier)) ))) { identifier) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (if_statement "if ((*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff)) {\n    iVar3 = *(int *)(this + 8);\n    uVar1 = *(uint *)(this + 0xc);\n    if (iVar3 != 0 || uVar1 != 0) {\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_000f2f54();\n    }\n  }" if (parenthesized_expression "((*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff))" ( (binary_expression "(*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff)" (parenthesized_expression "(*(int *)(this + 0x10) == 0)" ( (binary_expression "*(int *)(this + 0x10) == 0" (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(int *)(this + 0x14) == 0xffff)" ( (binary_expression "*(int *)(this + 0x14) == 0xffff" (pointer_expression "*(int *)(this + 0x14)" * (cast_expression "(int *)(this + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    iVar3 = *(int *)(this + 8);\n    uVar1 = *(uint *)(this + 0xc);\n    if (iVar3 != 0 || uVar1 != 0) {\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_000f2f54();\n    }\n  }" { (expression_statement "iVar3 = *(int *)(this + 8);" (assignment_expression "iVar3 = *(int *)(this + 8)" identifier = (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) ))))) ;) (expression_statement "uVar1 = *(uint *)(this + 0xc);" (assignment_expression "uVar1 = *(uint *)(this + 0xc)" identifier = (pointer_expression "*(uint *)(this + 0xc)" * (cast_expression "(uint *)(this + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0 || uVar1 != 0) {\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_000f2f54();\n    }" if (parenthesized_expression "(iVar3 != 0 || uVar1 != 0)" ( (binary_expression "iVar3 != 0 || uVar1 != 0" (binary_expression "iVar3 != 0" identifier != number_literal) || (binary_expression "uVar1 != 0" identifier != number_literal)) )) (compound_statement "{\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_000f2f54();\n    }" { (expression_statement "pcVar5 = *(char **)this;" (assignment_expression "pcVar5 = *(char **)this" identifier = (pointer_expression "*(char **)this" * (cast_expression "(char **)this" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar4 = *(int *)(pcVar5 + 0x28);" (assignment_expression "iVar4 = *(int *)(pcVar5 + 0x28)" identifier = (pointer_expression "*(int *)(pcVar5 + 0x28)" * (cast_expression "(int *)(pcVar5 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x28)" ( (binary_expression "pcVar5 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (compound_statement "{\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }" { (expression_statement "iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;" (assignment_expression "iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3" identifier = (binary_expression "(uint)(uVar1 + 0x40 < uVar1) + iVar3" (call_expression "(uint)(uVar1 + 0x40 < uVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 + 0x40 < uVar1)" ( (binary_expression "uVar1 + 0x40 < uVar1" (binary_expression "uVar1 + 0x40" identifier + number_literal) < identifier) ))) + identifier)) ;) (if_statement "if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }" if (parenthesized_expression "((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc)))))" ( (binary_expression "(iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))" (parenthesized_expression "(iVar3 <= *(int *)(iVar4 + 8))" ( (binary_expression "iVar3 <= *(int *)(iVar4 + 8)" identifier <= (pointer_expression "*(int *)(iVar4 + 8)" * (cast_expression "(int *)(iVar4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) ))))) )) && (parenthesized_expression "((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))" ( (parenthesized_expression "(*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc)))" ( (binary_expression "*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))" (binary_expression "*(int *)(iVar4 + 8) != iVar3" (pointer_expression "*(int *)(iVar4 + 8)" * (cast_expression "(int *)(iVar4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))) != identifier) || (parenthesized_expression "(uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))" ( (binary_expression "uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc)" (binary_expression "uVar1 + 0x40" identifier + number_literal) <= (pointer_expression "*(uint *)(iVar4 + 0xc)" * (cast_expression "(uint *)(iVar4 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }" { (expression_statement "iVar3 = *(int *)(iVar4 + 0x10) + uVar1;" (assignment_expression "iVar3 = *(int *)(iVar4 + 0x10) + uVar1" identifier = (binary_expression "*(int *)(iVar4 + 0x10) + uVar1" (pointer_expression "*(int *)(iVar4 + 0x10)" * (cast_expression "(int *)(iVar4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) + identifier)) ;) (if_statement "if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }" if (parenthesized_expression "(*(int *)(this + 0x10) == 0)" ( (binary_expression "*(int *)(this + 0x10) == 0" (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }" { (expression_statement "iVar4 = *(int *)(this + 0x14);" (assignment_expression "iVar4 = *(int *)(this + 0x14)" identifier = (pointer_expression "*(int *)(this + 0x14)" * (cast_expression "(int *)(this + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);" (assignment_expression "*(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24)" (pointer_expression "*(undefined4 *)(this + 0x10)" * (cast_expression "(undefined4 *)(this + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar3 + 0x24)" * (cast_expression "(undefined4 *)(iVar3 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            iVar4 = *(int *)(this + 0x14);\n          }" else (compound_statement "{\n            iVar4 = *(int *)(this + 0x14);\n          }" { (expression_statement "iVar4 = *(int *)(this + 0x14);" (assignment_expression "iVar4 = *(int *)(this + 0x14)" identifier = (pointer_expression "*(int *)(this + 0x14)" * (cast_expression "(int *)(this + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }" if (parenthesized_expression "(iVar4 == 0xffff)" ( (binary_expression "iVar4 == 0xffff" identifier == number_literal) )) (compound_statement "{\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }" { (expression_statement "uVar1 = *(uint *)(iVar3 + 0x28);" (assignment_expression "uVar1 = *(uint *)(iVar3 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar3 + 0x28)" * (cast_expression "(uint *)(iVar3 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(this + 0x14) = uVar1;" (assignment_expression "*(uint *)(this + 0x14) = uVar1" (pointer_expression "*(uint *)(this + 0x14)" * (cast_expression "(uint *)(this + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }" if (parenthesized_expression "(*(uint *)(this + 0x10) <= uVar1)" ( (binary_expression "*(uint *)(this + 0x10) <= uVar1" (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) )))) <= identifier) )) (compound_statement "{\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }" { (if_statement "if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }" if (parenthesized_expression "(0xffff < uVar1)" ( (binary_expression "0xffff < uVar1" number_literal < identifier) )) (compound_statement "{\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }" { (expression_statement "*(uint *)(this + 0x14) = uVar1 - 0x100;" (assignment_expression "*(uint *)(this + 0x14) = uVar1 - 0x100" (pointer_expression "*(uint *)(this + 0x14)" * (cast_expression "(uint *)(this + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) = (binary_expression "uVar1 - 0x100" identifier - number_literal)) ;) (expression_statement "*(undefined4 *)(this + 0x18) = 0xffffff00;" (assignment_expression "*(undefined4 *)(this + 0x18) = 0xffffff00" (pointer_expression "*(undefined4 *)(this + 0x18)" * (cast_expression "(undefined4 *)(this + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }" if (parenthesized_expression "(uVar1 - 0x100 < *(uint *)(this + 0x10))" ( (binary_expression "uVar1 - 0x100 < *(uint *)(this + 0x10)" (binary_expression "uVar1 - 0x100" identifier - number_literal) < (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) ))))) )) (compound_statement "{\n                  return;\n                }" { (return_statement "return;" return ;) })) })) (expression_statement "uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);" (assignment_expression "uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac)" identifier = (call_expression "(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_0043220c + 0x4eac)" ( (binary_expression "PTR_LAB_0043220c + 0x4eac" identifier + number_literal) )))) ;) (labeled_statement "gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));" statement_identifier : (ERROR ":" :) (labeled_statement "Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));" statement_identifier : (ERROR ":" :) (expression_statement "error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));" (call_expression "error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10))" identifier (argument_list "(pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(this + 0x14)" * (cast_expression "(undefined4 *)(this + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(this + 0x10)" * (cast_expression "(undefined4 *)(this + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) ))) ;))) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })) })) comment (expression_statement "FUN_000f2f54();" (call_expression "FUN_000f2f54()" identifier (argument_list "()" ( ))) ;) })) })) (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/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* DWARF original prototype: void initialize_shnum(Elf_file<64,_true,_gold::Incremental_binary> *\n   this) */\n\nvoid __thiscall\nelfcpp::Elf_file<64,_true,_gold::Incremental_binary>::initialize_shnum\n          (Elf_file<64,_true,_gold::Incremental_binary> *this)\n\n{\n  Elf_file<64,_true,_gold::Incremental_binary> *pEVar1;\n  char *format;\n  Elf_file<64,_true,_gold::Incremental_binary> *this_00;\n  uchar *puVar2;\n  uint uVar3;\n  size_t size;\n  Output_file *this_1;\n  Incremental_binary *this_01;\n  undefined4 in_stack_ffffffec;\n  \n  if ((this->shnum_ == 0) || (this->shstrndx_ == 0xffff)) {\n    size = *(size_t *)&this->shoff_;\n    pEVar1 = *(Elf_file<64,_true,_gold::Incremental_binary> **)((int)&this->shoff_ + 4);\n    if (size != 0 || pEVar1 != (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) {\n      this_01 = this->file_;\n      this_1 = this_01->output_;\n      this_00 = this;\n      if (-1 < (int)size) {\n        size = (pEVar1 + 2 < pEVar1) + size;\n        this_00 = (Elf_file<64,_true,_gold::Incremental_binary> *)\n                  (uint)((int)*(size_t *)&this_1->file_size_ < (int)size);\n        if ((this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))) {\n          puVar2 = this_1->base_;\n          if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }\n          if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::Output_file::get_output_view\n                ((Output_file *)this_00,CONCAT44(0x43a1d0,in_stack_ffffffec),size,this_1);\n    }\n  }\n  return;\n}\n\n" comment comment comment comment comment comment comment (declaration "void __thiscall\nelfcpp::Elf_file<64,_true,_gold::Incremental_binary>::initialize_shnum\n          (Elf_file<64,_true,_gold::Incremental_binary> *this)\n\n{\n  Elf_file<64,_true,_gold::Incremental_binary> *pEVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "elfcpp::" identifier : :) identifier (ERROR "<64" < number_literal) , identifier , (ERROR "_gold::Incremental_binary>::initialize_shnum\n          (Elf_file<64,_true,_gold::Incremental_binary> *this)\n\n{" identifier : : identifier > : : (function_declarator "initialize_shnum\n          (Elf_file<64,_true,_gold::Incremental_binary> *this)" identifier (parameter_list "(Elf_file<64,_true,_gold::Incremental_binary> *this)" ( (parameter_declaration "Elf_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true" type_identifier) , (parameter_declaration "_gold::Incremental_binary> *this" type_identifier (ERROR "::Incremental_binary>" : : identifier >) (pointer_declarator "*this" * identifier)) ))) {) identifier (ERROR "<64" < number_literal) , identifier , (ERROR "_gold::Incremental_binary>" identifier : : identifier >) (pointer_declarator "*pEVar1" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (ERROR "Elf_file<64,_true," (binary_expression "Elf_file<64" identifier < number_literal) , identifier ,) (labeled_statement "_gold::Incremental_binary> *this_00;" statement_identifier : (ERROR ":" :) (expression_statement "Incremental_binary> *this_00;" (binary_expression "Incremental_binary> *this_00" identifier > (pointer_expression "*this_00" * identifier)) ;)) (declaration "uchar *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "size_t size;" primitive_type identifier ;) (declaration "Output_file *this_1;" type_identifier (pointer_declarator "*this_1" * identifier) ;) (declaration "Incremental_binary *this_01;" type_identifier (pointer_declarator "*this_01" * identifier) ;) (declaration "undefined4 in_stack_ffffffec;" type_identifier identifier ;) (if_statement "if ((this->shnum_ == 0) || (this->shstrndx_ == 0xffff)) {\n    size = *(size_t *)&this->shoff_;\n    pEVar1 = *(Elf_file<64,_true,_gold::Incremental_binary> **)((int)&this->shoff_ + 4);\n    if (size != 0 || pEVar1 != (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) {\n      this_01 = this->file_;\n      this_1 = this_01->output_;\n      this_00 = this;\n      if (-1 < (int)size) {\n        size = (pEVar1 + 2 < pEVar1) + size;\n        this_00 = (Elf_file<64,_true,_gold::Incremental_binary> *)\n                  (uint)((int)*(size_t *)&this_1->file_size_ < (int)size);\n        if ((this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))) {\n          puVar2 = this_1->base_;\n          if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }\n          if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::Output_file::get_output_view\n                ((Output_file *)this_00,CONCAT44(0x43a1d0,in_stack_ffffffec),size,this_1);\n    }\n  }\n  return;\n}" if (parenthesized_expression "((this->shnum_ == 0) || (this->shstrndx_ == 0xffff))" ( (binary_expression "(this->shnum_ == 0) || (this->shstrndx_ == 0xffff)" (parenthesized_expression "(this->shnum_ == 0)" ( (binary_expression "this->shnum_ == 0" (field_expression "this->shnum_" identifier -> field_identifier) == number_literal) )) || (parenthesized_expression "(this->shstrndx_ == 0xffff)" ( (binary_expression "this->shstrndx_ == 0xffff" (field_expression "this->shstrndx_" identifier -> field_identifier) == number_literal) ))) )) (compound_statement "{\n    size = *(size_t *)&this->shoff_;\n    pEVar1 = *(Elf_file<64,_true,_gold::Incremental_binary> **)((int)&this->shoff_ + 4);\n    if (size != 0 || pEVar1 != (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) {\n      this_01 = this->file_;\n      this_1 = this_01->output_;\n      this_00 = this;\n      if (-1 < (int)size) {\n        size = (pEVar1 + 2 < pEVar1) + size;\n        this_00 = (Elf_file<64,_true,_gold::Incremental_binary> *)\n                  (uint)((int)*(size_t *)&this_1->file_size_ < (int)size);\n        if ((this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))) {\n          puVar2 = this_1->base_;\n          if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }\n          if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::Output_file::get_output_view\n                ((Output_file *)this_00,CONCAT44(0x43a1d0,in_stack_ffffffec),size,this_1);\n    }\n  }\n  return;\n}" { (expression_statement "size = *(size_t *)&this->shoff_;" (assignment_expression "size = *(size_t *)&this->shoff_" identifier = (pointer_expression "*(size_t *)&this->shoff_" * (cast_expression "(size_t *)&this->shoff_" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->shoff_" & (field_expression "this->shoff_" identifier -> field_identifier))))) ;) (expression_statement "pEVar1 = *(Elf_file<64,_true,_gold::Incremental_binary> **)((int)&this->shoff_ + 4);" (assignment_expression "pEVar1 = *(Elf_file<64,_true,_gold::Incremental_binary> **)((int)&this->shoff_ + 4)" identifier = (pointer_expression "*(Elf_file<64,_true,_gold::Incremental_binary> **)((int)&this->shoff_ + 4)" * (call_expression "(Elf_file<64,_true,_gold::Incremental_binary> **)((int)&this->shoff_ + 4)" (parenthesized_expression "(Elf_file<64,_true,_gold::Incremental_binary> **)" ( (ERROR "Elf_file<64,_true,_gold::" (comma_expression "Elf_file<64,_true,_gold" (binary_expression "Elf_file<64" identifier < number_literal) , (comma_expression "_true,_gold" identifier , identifier)) : :) (binary_expression "Incremental_binary> **" identifier > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "((int)&this->shoff_ + 4)" ( (binary_expression "(int)&this->shoff_ + 4" (cast_expression "(int)&this->shoff_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->shoff_" & (field_expression "this->shoff_" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (size != 0 || pEVar1 != (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) {\n      this_01 = this->file_;\n      this_1 = this_01->output_;\n      this_00 = this;\n      if (-1 < (int)size) {\n        size = (pEVar1 + 2 < pEVar1) + size;\n        this_00 = (Elf_file<64,_true,_gold::Incremental_binary> *)\n                  (uint)((int)*(size_t *)&this_1->file_size_ < (int)size);\n        if ((this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))) {\n          puVar2 = this_1->base_;\n          if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }\n          if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::Output_file::get_output_view\n                ((Output_file *)this_00,CONCAT44(0x43a1d0,in_stack_ffffffec),size,this_1);\n    }\n  }" if (parenthesized_expression "(size != 0 || pEVar1 != (Elf_file<64,_true,_gold::Incremental_binary> *)0x0)" ( (binary_expression "size != 0 || pEVar1 != (Elf_file<64,_true,_gold::Incremental_binary> *)0x0)" (binary_expression "size != 0" identifier != number_literal) || (binary_expression "pEVar1 != (Elf_file<64,_true,_gold::Incremental_binary> *)0x0)" identifier != (parenthesized_expression "(Elf_file<64,_true,_gold::Incremental_binary> *)0x0)" ( (ERROR "Elf_file<64,_true,_gold::" (comma_expression "Elf_file<64,_true,_gold" (binary_expression "Elf_file<64" identifier < number_literal) , (comma_expression "_true,_gold" identifier , identifier)) : :) (binary_expression "Incremental_binary> *)0x0" identifier > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) )))) )) (compound_statement "{\n      this_01 = this->file_;\n      this_1 = this_01->output_;\n      this_00 = this;\n      if (-1 < (int)size) {\n        size = (pEVar1 + 2 < pEVar1) + size;\n        this_00 = (Elf_file<64,_true,_gold::Incremental_binary> *)\n                  (uint)((int)*(size_t *)&this_1->file_size_ < (int)size);\n        if ((this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))) {\n          puVar2 = this_1->base_;\n          if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }\n          if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::Output_file::get_output_view\n                ((Output_file *)this_00,CONCAT44(0x43a1d0,in_stack_ffffffec),size,this_1);\n    }\n  }" { (expression_statement "this_01 = this->file_;" (assignment_expression "this_01 = this->file_" identifier = (field_expression "this->file_" identifier -> field_identifier)) ;) (expression_statement "this_1 = this_01->output_;" (assignment_expression "this_1 = this_01->output_" identifier = (field_expression "this_01->output_" identifier -> field_identifier)) ;) (expression_statement "this_00 = this;" (assignment_expression "this_00 = this" identifier = identifier) ;) (if_statement "if (-1 < (int)size) {\n        size = (pEVar1 + 2 < pEVar1) + size;\n        this_00 = (Elf_file<64,_true,_gold::Incremental_binary> *)\n                  (uint)((int)*(size_t *)&this_1->file_size_ < (int)size);\n        if ((this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))) {\n          puVar2 = this_1->base_;\n          if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }\n          if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::Output_file::get_output_view\n                ((Output_file *)this_00,CONCAT44(0x43a1d0,in_stack_ffffffec),size,this_1);\n    }" if (parenthesized_expression "(-1 < (int)size)" ( (binary_expression "-1 < (int)size" number_literal < (cast_expression "(int)size" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        size = (pEVar1 + 2 < pEVar1) + size;\n        this_00 = (Elf_file<64,_true,_gold::Incremental_binary> *)\n                  (uint)((int)*(size_t *)&this_1->file_size_ < (int)size);\n        if ((this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))) {\n          puVar2 = this_1->base_;\n          if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }\n          if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::Output_file::get_output_view\n                ((Output_file *)this_00,CONCAT44(0x43a1d0,in_stack_ffffffec),size,this_1);\n    }" { (expression_statement "size = (pEVar1 + 2 < pEVar1) + size;" (assignment_expression "size = (pEVar1 + 2 < pEVar1) + size" identifier = (binary_expression "(pEVar1 + 2 < pEVar1) + size" (parenthesized_expression "(pEVar1 + 2 < pEVar1)" ( (binary_expression "pEVar1 + 2 < pEVar1" (binary_expression "pEVar1 + 2" identifier + number_literal) < identifier) )) + identifier)) ;) (expression_statement "this_00 = (Elf_file<64,_true,_gold::Incremental_binary> *)\n                  (uint)((int)*(size_t *)&this_1->file_size_ < (int)size);" (assignment_expression "this_00 = (Elf_file<64,_true,_gold::Incremental_binary> *)\n                  (uint)((int)*(size_t *)&this_1->file_size_ < (int)size)" identifier = (call_expression "(Elf_file<64,_true,_gold::Incremental_binary> *)\n                  (uint)((int)*(size_t *)&this_1->file_size_ < (int)size)" (call_expression "(Elf_file<64,_true,_gold::Incremental_binary> *)\n                  (uint)" (parenthesized_expression "(Elf_file<64,_true,_gold::Incremental_binary> *)" ( (ERROR "Elf_file<64,_true,_gold::" (comma_expression "Elf_file<64,_true,_gold" (binary_expression "Elf_file<64" identifier < number_literal) , (comma_expression "_true,_gold" identifier , identifier)) : :) (binary_expression "Incremental_binary> *" identifier > (pointer_expression "*" * identifier)) )) (argument_list "(uint)" ( identifier ))) (argument_list "((int)*(size_t *)&this_1->file_size_ < (int)size)" ( (binary_expression "(int)*(size_t *)&this_1->file_size_ < (int)size" (cast_expression "(int)*(size_t *)&this_1->file_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(size_t *)&this_1->file_size_" * (cast_expression "(size_t *)&this_1->file_size_" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_1->file_size_" & (field_expression "this_1->file_size_" identifier -> field_identifier))))) < (cast_expression "(int)size" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if ((this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))) {\n          puVar2 = this_1->base_;\n          if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }\n          if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::Output_file::get_output_view\n                ((Output_file *)this_00,CONCAT44(0x43a1d0,in_stack_ffffffec),size,this_1);" if (parenthesized_expression "((this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))) {\n          puVar2 = this_1->base_;\n          if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }\n          if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::Output_file::get_output_view\n                ((Output_file *)this_00,CONCAT44(0x43a1d0,in_stack_ffffffec),size,this_1)" ( (comma_expression "(this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))) {\n          puVar2 = this_1->base_;\n          if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }\n          if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::Output_file::get_output_view\n                ((Output_file *)this_00,CONCAT44(0x43a1d0,in_stack_ffffffec),size,this_1" (parenthesized_expression "(this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))) {\n          puVar2 = this_1->base_;\n          if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }\n          if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::Output_file::get_output_view\n                ((Output_file *)" ( (ERROR "this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00))))" (binary_expression "this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0) &&\n           ((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00))))" (binary_expression "this_00 == (Elf_file<64,_true,_gold::Incremental_binary> *)0x0)" identifier == (parenthesized_expression "(Elf_file<64,_true,_gold::Incremental_binary> *)0x0)" ( (ERROR "Elf_file<64,_true,_gold::" (comma_expression "Elf_file<64,_true,_gold" (binary_expression "Elf_file<64" identifier < number_literal) , (comma_expression "_true,_gold" identifier , identifier)) : :) (binary_expression "Incremental_binary> *)0x0" identifier > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) && (parenthesized_expression "((*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00))))" ( (parenthesized_expression "(*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)))" ( (binary_expression "*(size_t *)&this_1->file_size_ != size ||\n            (this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00))" (binary_expression "*(size_t *)&this_1->file_size_ != size" (pointer_expression "*(size_t *)&this_1->file_size_" * (cast_expression "(size_t *)&this_1->file_size_" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_1->file_size_" & (field_expression "this_1->file_size_" identifier -> field_identifier)))) != identifier) || (parenthesized_expression "(this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00))" ( (assignment_expression "this_00 = *(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)" identifier = (pointer_expression "*(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)" * (parenthesized_expression "(Elf_file<64,_true,_gold::Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00)" ( (ERROR "Elf_file<64,_true,_gold::" (comma_expression "Elf_file<64,_true,_gold" (binary_expression "Elf_file<64" identifier < number_literal) , (comma_expression "_true,_gold" identifier , identifier)) : :) (comma_expression "Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4), pEVar1 + 2 <= this_00" (binary_expression "Incremental_binary> **)\n                        ((int)&this_1->file_size_ + 4)" identifier > (pointer_expression "**)\n                        ((int)&this_1->file_size_ + 4)" * (pointer_expression "*)\n                        ((int)&this_1->file_size_ + 4)" * (ERROR ")" )) (parenthesized_expression "((int)&this_1->file_size_ + 4)" ( (binary_expression "(int)&this_1->file_size_ + 4" (cast_expression "(int)&this_1->file_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_1->file_size_" & (field_expression "this_1->file_size_" identifier -> field_identifier))) + number_literal) ))))) , (binary_expression "pEVar1 + 2 <= this_00" (binary_expression "pEVar1 + 2" identifier + number_literal) <= identifier)) )))) ))) )) )))) (compound_statement "{\n          puVar2 = this_1->base_;\n          if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }\n          if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }\n          return;\n        }" { (expression_statement "puVar2 = this_1->base_;" (assignment_expression "puVar2 = this_1->base_" identifier = (field_expression "this_1->base_" identifier -> field_identifier)) ;) (if_statement "if (this->shnum_ == 0) {\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }\n          else {\n            uVar3 = this->shstrndx_;\n          }" if (parenthesized_expression "(this->shnum_ == 0)" ( (binary_expression "this->shnum_ == 0" (field_expression "this->shnum_" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n            uVar3 = this->shstrndx_;\n            this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);\n          }" { (expression_statement "uVar3 = this->shstrndx_;" (assignment_expression "uVar3 = this->shstrndx_" identifier = (field_expression "this->shstrndx_" identifier -> field_identifier)) ;) (expression_statement "this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24);" (assignment_expression "this->shnum_ = *(uint *)(puVar2 + (int)pEVar1 + 0x24)" (field_expression "this->shnum_" identifier -> field_identifier) = (pointer_expression "*(uint *)(puVar2 + (int)pEVar1 + 0x24)" * (cast_expression "(uint *)(puVar2 + (int)pEVar1 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (int)pEVar1 + 0x24)" ( (binary_expression "puVar2 + (int)pEVar1 + 0x24" (binary_expression "puVar2 + (int)pEVar1" identifier + (cast_expression "(int)pEVar1" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ))))) ;) }) (else_clause "else {\n            uVar3 = this->shstrndx_;\n          }" else (compound_statement "{\n            uVar3 = this->shstrndx_;\n          }" { (expression_statement "uVar3 = this->shstrndx_;" (assignment_expression "uVar3 = this->shstrndx_" identifier = (field_expression "this->shstrndx_" identifier -> field_identifier)) ;) }))) (if_statement "if (uVar3 == 0xffff) {\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }" if (parenthesized_expression "(uVar3 == 0xffff)" ( (binary_expression "uVar3 == 0xffff" identifier == number_literal) )) (compound_statement "{\n            uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);\n            this->shstrndx_ = uVar3;\n            if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }\n          }" { (expression_statement "uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28);" (assignment_expression "uVar3 = *(uint *)(puVar2 + (int)pEVar1 + 0x28)" identifier = (pointer_expression "*(uint *)(puVar2 + (int)pEVar1 + 0x28)" * (cast_expression "(uint *)(puVar2 + (int)pEVar1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (int)pEVar1 + 0x28)" ( (binary_expression "puVar2 + (int)pEVar1 + 0x28" (binary_expression "puVar2 + (int)pEVar1" identifier + (cast_expression "(int)pEVar1" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) ))))) ;) (expression_statement "this->shstrndx_ = uVar3;" (assignment_expression "this->shstrndx_ = uVar3" (field_expression "this->shstrndx_" identifier -> field_identifier) = identifier) ;) (if_statement "if (this->shnum_ <= uVar3) {\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }" if (parenthesized_expression "(this->shnum_ <= uVar3)" ( (binary_expression "this->shnum_ <= uVar3" (field_expression "this->shnum_" identifier -> field_identifier) <= identifier) )) (compound_statement "{\n              if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }\n              format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);\n              return;\n            }" { (if_statement "if (0xffff < uVar3) {\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }" if (parenthesized_expression "(0xffff < uVar3)" ( (binary_expression "0xffff < uVar3" number_literal < identifier) )) (compound_statement "{\n                this->shstrndx_ = uVar3 - 0x100;\n                this->large_shndx_offset_ = -0x100;\n                if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }\n              }" { (expression_statement "this->shstrndx_ = uVar3 - 0x100;" (assignment_expression "this->shstrndx_ = uVar3 - 0x100" (field_expression "this->shstrndx_" identifier -> field_identifier) = (binary_expression "uVar3 - 0x100" identifier - number_literal)) ;) (expression_statement "this->large_shndx_offset_ = -0x100;" (assignment_expression "this->large_shndx_offset_ = -0x100" (field_expression "this->large_shndx_offset_" identifier -> field_identifier) = number_literal) ;) (if_statement "if (uVar3 - 0x100 < this->shnum_) {\n                  return;\n                }" if (parenthesized_expression "(uVar3 - 0x100 < this->shnum_)" ( (binary_expression "uVar3 - 0x100 < this->shnum_" (binary_expression "uVar3 - 0x100" identifier - number_literal) < (field_expression "this->shnum_" identifier -> field_identifier)) )) (compound_statement "{\n                  return;\n                }" { (return_statement "return;" return ;) })) })) (expression_statement "format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);" (assignment_expression "format = (char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac)" identifier = (cast_expression "(char *)(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_0043220c + 0x4eac)" ( (binary_expression "PTR_LAB_0043220c + 0x4eac" identifier + number_literal) ))))) ;) (labeled_statement "gold::Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);" statement_identifier : (ERROR ":" :) (labeled_statement "Incremental_binary::error(this_01,format,this->shstrndx_,this->shnum_);" statement_identifier : (ERROR ":" :) (expression_statement "error(this_01,format,this->shstrndx_,this->shnum_);" (call_expression "error(this_01,format,this->shstrndx_,this->shnum_)" identifier (argument_list "(this_01,format,this->shstrndx_,this->shnum_)" ( identifier , identifier , (field_expression "this->shstrndx_" identifier -> field_identifier) , (field_expression "this->shnum_" identifier -> field_identifier) ))) ;))) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) }) (ERROR "}\n                    /* WARNING: Subroutine does not return */\n      gold::Output_file::get_output_view\n                ((Output_file *" } comment identifier : : identifier : : identifier ( ( identifier *) )) (ERROR "this_00" identifier) , (comma_expression "CONCAT44(0x43a1d0,in_stack_ffffffec),size,this_1" (call_expression "CONCAT44(0x43a1d0,in_stack_ffffffec)" identifier (argument_list "(0x43a1d0,in_stack_ffffffec)" ( number_literal , identifier ))) , (comma_expression "size,this_1" identifier , identifier))) )) (expression_statement ";" ;)) })) })) (return_statement "return;" return ;) })))
(translation_unit "void __thiscall\nelfcpp::Elf_file<64,true,gold::Incremental_binary>::initialize_shnum\n          (Elf_file<64,true,gold::Incremental_binary> *this)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  char *pcVar5;\n  \n  if ((*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff)) {\n    iVar3 = *(int *)(this + 8);\n    uVar1 = *(uint *)(this + 0xc);\n    if (iVar3 != 0 || uVar1 != 0) {\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    \n      FUN_000f2f54();\n    }\n  }\n  return;\n}\n\n" (declaration "void __thiscall\nelfcpp::Elf_file<64,true,gold::Incremental_binary>::initialize_shnum\n          (Elf_file<64,true,gold::Incremental_binary> *this)\n\n{\n  uint uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "elfcpp::" identifier : :) identifier (ERROR "<64" < number_literal) , identifier , (ERROR "gold::Incremental_binary>::initialize_shnum\n          (Elf_file<64,true,gold::Incremental_binary> *this)\n\n{\n  uint" identifier : : identifier > : : (function_declarator "initialize_shnum\n          (Elf_file<64,true,gold::Incremental_binary> *this)" identifier (parameter_list "(Elf_file<64,true,gold::Incremental_binary> *this)" ( (parameter_declaration "Elf_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "true" type_identifier) , (parameter_declaration "gold::Incremental_binary> *this" type_identifier (ERROR "::Incremental_binary>" : : identifier >) (pointer_declarator "*this" * identifier)) ))) { identifier) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (if_statement "if ((*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff)) {\n    iVar3 = *(int *)(this + 8);\n    uVar1 = *(uint *)(this + 0xc);\n    if (iVar3 != 0 || uVar1 != 0) {\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    \n      FUN_000f2f54();\n    }\n  }" if (parenthesized_expression "((*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff))" ( (binary_expression "(*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff)" (parenthesized_expression "(*(int *)(this + 0x10) == 0)" ( (binary_expression "*(int *)(this + 0x10) == 0" (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(int *)(this + 0x14) == 0xffff)" ( (binary_expression "*(int *)(this + 0x14) == 0xffff" (pointer_expression "*(int *)(this + 0x14)" * (cast_expression "(int *)(this + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    iVar3 = *(int *)(this + 8);\n    uVar1 = *(uint *)(this + 0xc);\n    if (iVar3 != 0 || uVar1 != 0) {\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    \n      FUN_000f2f54();\n    }\n  }" { (expression_statement "iVar3 = *(int *)(this + 8);" (assignment_expression "iVar3 = *(int *)(this + 8)" identifier = (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) ))))) ;) (expression_statement "uVar1 = *(uint *)(this + 0xc);" (assignment_expression "uVar1 = *(uint *)(this + 0xc)" identifier = (pointer_expression "*(uint *)(this + 0xc)" * (cast_expression "(uint *)(this + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0 || uVar1 != 0) {\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    \n      FUN_000f2f54();\n    }" if (parenthesized_expression "(iVar3 != 0 || uVar1 != 0)" ( (binary_expression "iVar3 != 0 || uVar1 != 0" (binary_expression "iVar3 != 0" identifier != number_literal) || (binary_expression "uVar1 != 0" identifier != number_literal)) )) (compound_statement "{\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    \n      FUN_000f2f54();\n    }" { (expression_statement "pcVar5 = *(char **)this;" (assignment_expression "pcVar5 = *(char **)this" identifier = (pointer_expression "*(char **)this" * (cast_expression "(char **)this" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar4 = *(int *)(pcVar5 + 0x28);" (assignment_expression "iVar4 = *(int *)(pcVar5 + 0x28)" identifier = (pointer_expression "*(int *)(pcVar5 + 0x28)" * (cast_expression "(int *)(pcVar5 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x28)" ( (binary_expression "pcVar5 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (compound_statement "{\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }" { (expression_statement "iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;" (assignment_expression "iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3" identifier = (binary_expression "(uint)(uVar1 + 0x40 < uVar1) + iVar3" (call_expression "(uint)(uVar1 + 0x40 < uVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 + 0x40 < uVar1)" ( (binary_expression "uVar1 + 0x40 < uVar1" (binary_expression "uVar1 + 0x40" identifier + number_literal) < identifier) ))) + identifier)) ;) (if_statement "if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }" if (parenthesized_expression "((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc)))))" ( (binary_expression "(iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))" (parenthesized_expression "(iVar3 <= *(int *)(iVar4 + 8))" ( (binary_expression "iVar3 <= *(int *)(iVar4 + 8)" identifier <= (pointer_expression "*(int *)(iVar4 + 8)" * (cast_expression "(int *)(iVar4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) ))))) )) && (parenthesized_expression "((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))" ( (parenthesized_expression "(*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc)))" ( (binary_expression "*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))" (binary_expression "*(int *)(iVar4 + 8) != iVar3" (pointer_expression "*(int *)(iVar4 + 8)" * (cast_expression "(int *)(iVar4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))) != identifier) || (parenthesized_expression "(uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))" ( (binary_expression "uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc)" (binary_expression "uVar1 + 0x40" identifier + number_literal) <= (pointer_expression "*(uint *)(iVar4 + 0xc)" * (cast_expression "(uint *)(iVar4 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }" { (expression_statement "iVar3 = *(int *)(iVar4 + 0x10) + uVar1;" (assignment_expression "iVar3 = *(int *)(iVar4 + 0x10) + uVar1" identifier = (binary_expression "*(int *)(iVar4 + 0x10) + uVar1" (pointer_expression "*(int *)(iVar4 + 0x10)" * (cast_expression "(int *)(iVar4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) + identifier)) ;) (if_statement "if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }" if (parenthesized_expression "(*(int *)(this + 0x10) == 0)" ( (binary_expression "*(int *)(this + 0x10) == 0" (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }" { (expression_statement "iVar4 = *(int *)(this + 0x14);" (assignment_expression "iVar4 = *(int *)(this + 0x14)" identifier = (pointer_expression "*(int *)(this + 0x14)" * (cast_expression "(int *)(this + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);" (assignment_expression "*(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24)" (pointer_expression "*(undefined4 *)(this + 0x10)" * (cast_expression "(undefined4 *)(this + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar3 + 0x24)" * (cast_expression "(undefined4 *)(iVar3 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            iVar4 = *(int *)(this + 0x14);\n          }" else (compound_statement "{\n            iVar4 = *(int *)(this + 0x14);\n          }" { (expression_statement "iVar4 = *(int *)(this + 0x14);" (assignment_expression "iVar4 = *(int *)(this + 0x14)" identifier = (pointer_expression "*(int *)(this + 0x14)" * (cast_expression "(int *)(this + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }" if (parenthesized_expression "(iVar4 == 0xffff)" ( (binary_expression "iVar4 == 0xffff" identifier == number_literal) )) (compound_statement "{\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }" { (expression_statement "uVar1 = *(uint *)(iVar3 + 0x28);" (assignment_expression "uVar1 = *(uint *)(iVar3 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar3 + 0x28)" * (cast_expression "(uint *)(iVar3 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(this + 0x14) = uVar1;" (assignment_expression "*(uint *)(this + 0x14) = uVar1" (pointer_expression "*(uint *)(this + 0x14)" * (cast_expression "(uint *)(this + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }" if (parenthesized_expression "(*(uint *)(this + 0x10) <= uVar1)" ( (binary_expression "*(uint *)(this + 0x10) <= uVar1" (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) )))) <= identifier) )) (compound_statement "{\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }" { (if_statement "if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }" if (parenthesized_expression "(0xffff < uVar1)" ( (binary_expression "0xffff < uVar1" number_literal < identifier) )) (compound_statement "{\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }" { (expression_statement "*(uint *)(this + 0x14) = uVar1 - 0x100;" (assignment_expression "*(uint *)(this + 0x14) = uVar1 - 0x100" (pointer_expression "*(uint *)(this + 0x14)" * (cast_expression "(uint *)(this + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) = (binary_expression "uVar1 - 0x100" identifier - number_literal)) ;) (expression_statement "*(undefined4 *)(this + 0x18) = 0xffffff00;" (assignment_expression "*(undefined4 *)(this + 0x18) = 0xffffff00" (pointer_expression "*(undefined4 *)(this + 0x18)" * (cast_expression "(undefined4 *)(this + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }" if (parenthesized_expression "(uVar1 - 0x100 < *(uint *)(this + 0x10))" ( (binary_expression "uVar1 - 0x100 < *(uint *)(this + 0x10)" (binary_expression "uVar1 - 0x100" identifier - number_literal) < (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) ))))) )) (compound_statement "{\n                  return;\n                }" { (return_statement "return;" return ;) })) })) (expression_statement "uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);" (assignment_expression "uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac)" identifier = (call_expression "(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_0043220c + 0x4eac)" ( (binary_expression "PTR_LAB_0043220c + 0x4eac" identifier + number_literal) )))) ;) (labeled_statement "gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));" statement_identifier : (ERROR ":" :) (labeled_statement "Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));" statement_identifier : (ERROR ":" :) (expression_statement "error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));" (call_expression "error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10))" identifier (argument_list "(pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(this + 0x14)" * (cast_expression "(undefined4 *)(this + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(this + 0x10)" * (cast_expression "(undefined4 *)(this + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) ))) ;))) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })) })) (expression_statement "FUN_000f2f54();" (call_expression "FUN_000f2f54()" identifier (argument_list "()" ( ))) ;) })) })) (return_statement "return;" return ;) (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)) ))) { IDENT) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) || (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 (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) 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 LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + LIT) < IDENT) ))) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) || (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (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 (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) })) })) (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) )))) ;) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;))) (return_statement return ;) })) })) (return_statement return ;) })) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (return_statement return ;) (ERROR }))
(declaration "void __thiscall\nelfcpp::Elf_file<64,true,gold::Incremental_binary>::initialize_shnum\n          (Elf_file<64,true,gold::Incremental_binary> *this)\n\n{\n  uint uVar1;" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "elfcpp::" (identifier "elfcpp") (: ":") (: ":")) (identifier "Elf_file") (ERROR "<64" (< "<") (number_literal "64")) (, ",") (identifier "true") (, ",") (ERROR "gold::Incremental_binary>::initialize_shnum\n          (Elf_file<64,true,gold::Incremental_binary> *this)\n\n{\n  uint" (identifier "gold") (: ":") (: ":") (identifier "Incremental_binary") (> ">") (: ":") (: ":") (function_declarator "initialize_shnum\n          (Elf_file<64,true,gold::Incremental_binary> *this)" (identifier "initialize_shnum") (parameter_list "(Elf_file<64,true,gold::Incremental_binary> *this)" (( "(") (parameter_declaration "Elf_file" (type_identifier "Elf_file")) (ERROR "<64" (< "<") (number_literal "64")) (, ",") (parameter_declaration "true" (type_identifier "true")) (, ",") (parameter_declaration "gold::Incremental_binary> *this" (type_identifier "gold") (ERROR "::Incremental_binary>" (: ":") (: ":") (identifier "Incremental_binary") (> ">")) (pointer_declarator "*this" (* "*") (identifier "this"))) () ")"))) ({ "{") (identifier "uint")) (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (if_statement "if ((*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff)) {\n    iVar3 = *(int *)(this + 8);\n    uVar1 = *(uint *)(this + 0xc);\n    if (iVar3 != 0 || uVar1 != 0) {\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    \n      FUN_000f2f54();\n    }\n  }" (if "if") (parenthesized_expression "((*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff))" (( "(") (binary_expression "(*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff)" (parenthesized_expression "(*(int *)(this + 0x10) == 0)" (( "(") (binary_expression "*(int *)(this + 0x10) == 0" (pointer_expression "*(int *)(this + 0x10)" (* "*") (cast_expression "(int *)(this + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(this + 0x14) == 0xffff)" (( "(") (binary_expression "*(int *)(this + 0x14) == 0xffff" (pointer_expression "*(int *)(this + 0x14)" (* "*") (cast_expression "(int *)(this + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x14)" (( "(") (binary_expression "this + 0x14" (identifier "this") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (number_literal "0xffff")) () ")"))) () ")")) (compound_statement "{\n    iVar3 = *(int *)(this + 8);\n    uVar1 = *(uint *)(this + 0xc);\n    if (iVar3 != 0 || uVar1 != 0) {\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    \n      FUN_000f2f54();\n    }\n  }" ({ "{") (expression_statement "iVar3 = *(int *)(this + 8);" (assignment_expression "iVar3 = *(int *)(this + 8)" (identifier "iVar3") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "uVar1 = *(uint *)(this + 0xc);" (assignment_expression "uVar1 = *(uint *)(this + 0xc)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(this + 0xc)" (* "*") (cast_expression "(uint *)(this + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0xc)" (( "(") (binary_expression "this + 0xc" (identifier "this") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar3 != 0 || uVar1 != 0) {\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    \n      FUN_000f2f54();\n    }" (if "if") (parenthesized_expression "(iVar3 != 0 || uVar1 != 0)" (( "(") (binary_expression "iVar3 != 0 || uVar1 != 0" (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n      pcVar5 = *(char **)this;\n      iVar4 = *(int *)(pcVar5 + 0x28);\n      if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }\n                    \n      FUN_000f2f54();\n    }" ({ "{") (expression_statement "pcVar5 = *(char **)this;" (assignment_expression "pcVar5 = *(char **)this" (identifier "pcVar5") (= "=") (pointer_expression "*(char **)this" (* "*") (cast_expression "(char **)this" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "this")))) (; ";")) (expression_statement "iVar4 = *(int *)(pcVar5 + 0x28);" (assignment_expression "iVar4 = *(int *)(pcVar5 + 0x28)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(pcVar5 + 0x28)" (* "*") (cast_expression "(int *)(pcVar5 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x28)" (( "(") (binary_expression "pcVar5 + 0x28" (identifier "pcVar5") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (-1 < iVar3) {\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }" (if "if") (parenthesized_expression "(-1 < iVar3)" (( "(") (binary_expression "-1 < iVar3" (number_literal "-1") (< "<") (identifier "iVar3")) () ")")) (compound_statement "{\n        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;\n        if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }\n      }" ({ "{") (expression_statement "iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;" (assignment_expression "iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3" (identifier "iVar3") (= "=") (binary_expression "(uint)(uVar1 + 0x40 < uVar1) + iVar3" (call_expression "(uint)(uVar1 + 0x40 < uVar1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar1 + 0x40 < uVar1)" (( "(") (binary_expression "uVar1 + 0x40 < uVar1" (binary_expression "uVar1 + 0x40" (identifier "uVar1") (+ "+") (number_literal "0x40")) (< "<") (identifier "uVar1")) () ")"))) (+ "+") (identifier "iVar3"))) (; ";")) (if_statement "if ((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }" (if "if") (parenthesized_expression "((iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc)))))" (( "(") (binary_expression "(iVar3 <= *(int *)(iVar4 + 8)) &&\n           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))" (parenthesized_expression "(iVar3 <= *(int *)(iVar4 + 8))" (( "(") (binary_expression "iVar3 <= *(int *)(iVar4 + 8)" (identifier "iVar3") (<= "<=") (pointer_expression "*(int *)(iVar4 + 8)" (* "*") (cast_expression "(int *)(iVar4 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 8)" (( "(") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))" (( "(") (parenthesized_expression "(*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc)))" (( "(") (binary_expression "*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))" (binary_expression "*(int *)(iVar4 + 8) != iVar3" (pointer_expression "*(int *)(iVar4 + 8)" (* "*") (cast_expression "(int *)(iVar4 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 8)" (( "(") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (identifier "iVar3")) (|| "||") (parenthesized_expression "(uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))" (( "(") (binary_expression "uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc)" (binary_expression "uVar1 + 0x40" (identifier "uVar1") (+ "+") (number_literal "0x40")) (<= "<=") (pointer_expression "*(uint *)(iVar4 + 0xc)" (* "*") (cast_expression "(uint *)(iVar4 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xc)" (( "(") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;\n          if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }\n          if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }\n          return;\n        }" ({ "{") (expression_statement "iVar3 = *(int *)(iVar4 + 0x10) + uVar1;" (assignment_expression "iVar3 = *(int *)(iVar4 + 0x10) + uVar1" (identifier "iVar3") (= "=") (binary_expression "*(int *)(iVar4 + 0x10) + uVar1" (pointer_expression "*(int *)(iVar4 + 0x10)" (* "*") (cast_expression "(int *)(iVar4 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x10)" (( "(") (binary_expression "iVar4 + 0x10" (identifier "iVar4") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (identifier "uVar1"))) (; ";")) (if_statement "if (*(int *)(this + 0x10) == 0) {\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }\n          else {\n            iVar4 = *(int *)(this + 0x14);\n          }" (if "if") (parenthesized_expression "(*(int *)(this + 0x10) == 0)" (( "(") (binary_expression "*(int *)(this + 0x10) == 0" (pointer_expression "*(int *)(this + 0x10)" (* "*") (cast_expression "(int *)(this + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar4 = *(int *)(this + 0x14);\n            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);\n          }" ({ "{") (expression_statement "iVar4 = *(int *)(this + 0x14);" (assignment_expression "iVar4 = *(int *)(this + 0x14)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(this + 0x14)" (* "*") (cast_expression "(int *)(this + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x14)" (( "(") (binary_expression "this + 0x14" (identifier "this") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);" (assignment_expression "*(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24)" (pointer_expression "*(undefined4 *)(this + 0x10)" (* "*") (cast_expression "(undefined4 *)(this + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar3 + 0x24)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x24)" (( "(") (binary_expression "iVar3 + 0x24" (identifier "iVar3") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n            iVar4 = *(int *)(this + 0x14);\n          }" (else "else") (compound_statement "{\n            iVar4 = *(int *)(this + 0x14);\n          }" ({ "{") (expression_statement "iVar4 = *(int *)(this + 0x14);" (assignment_expression "iVar4 = *(int *)(this + 0x14)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(this + 0x14)" (* "*") (cast_expression "(int *)(this + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x14)" (( "(") (binary_expression "this + 0x14" (identifier "this") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (iVar4 == 0xffff) {\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }" (if "if") (parenthesized_expression "(iVar4 == 0xffff)" (( "(") (binary_expression "iVar4 == 0xffff" (identifier "iVar4") (== "==") (number_literal "0xffff")) () ")")) (compound_statement "{\n            uVar1 = *(uint *)(iVar3 + 0x28);\n            *(uint *)(this + 0x14) = uVar1;\n            if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }\n          }" ({ "{") (expression_statement "uVar1 = *(uint *)(iVar3 + 0x28);" (assignment_expression "uVar1 = *(uint *)(iVar3 + 0x28)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(iVar3 + 0x28)" (* "*") (cast_expression "(uint *)(iVar3 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(uint *)(this + 0x14) = uVar1;" (assignment_expression "*(uint *)(this + 0x14) = uVar1" (pointer_expression "*(uint *)(this + 0x14)" (* "*") (cast_expression "(uint *)(this + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x14)" (( "(") (binary_expression "this + 0x14" (identifier "this") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (*(uint *)(this + 0x10) <= uVar1) {\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }" (if "if") (parenthesized_expression "(*(uint *)(this + 0x10) <= uVar1)" (( "(") (binary_expression "*(uint *)(this + 0x10) <= 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")) () ")")))) (<= "<=") (identifier "uVar1")) () ")")) (compound_statement "{\n              if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }\n              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);\n              gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));\n              return;\n            }" ({ "{") (if_statement "if (0xffff < uVar1) {\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }" (if "if") (parenthesized_expression "(0xffff < uVar1)" (( "(") (binary_expression "0xffff < uVar1" (number_literal "0xffff") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n                *(uint *)(this + 0x14) = uVar1 - 0x100;\n                *(undefined4 *)(this + 0x18) = 0xffffff00;\n                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }\n              }" ({ "{") (expression_statement "*(uint *)(this + 0x14) = uVar1 - 0x100;" (assignment_expression "*(uint *)(this + 0x14) = uVar1 - 0x100" (pointer_expression "*(uint *)(this + 0x14)" (* "*") (cast_expression "(uint *)(this + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x14)" (( "(") (binary_expression "this + 0x14" (identifier "this") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "uVar1 - 0x100" (identifier "uVar1") (- "-") (number_literal "0x100"))) (; ";")) (expression_statement "*(undefined4 *)(this + 0x18) = 0xffffff00;" (assignment_expression "*(undefined4 *)(this + 0x18) = 0xffffff00" (pointer_expression "*(undefined4 *)(this + 0x18)" (* "*") (cast_expression "(undefined4 *)(this + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x18)" (( "(") (binary_expression "this + 0x18" (identifier "this") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "0xffffff00")) (; ";")) (if_statement "if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {\n                  return;\n                }" (if "if") (parenthesized_expression "(uVar1 - 0x100 < *(uint *)(this + 0x10))" (( "(") (binary_expression "uVar1 - 0x100 < *(uint *)(this + 0x10)" (binary_expression "uVar1 - 0x100" (identifier "uVar1") (- "-") (number_literal "0x100")) (< "<") (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")) () ")"))))) () ")")) (compound_statement "{\n                  return;\n                }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);" (assignment_expression "uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac)" (identifier "uVar2") (= "=") (call_expression "(*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" (( "(") (pointer_expression "*(code *)PTR_gettext_00436818" (* "*") (cast_expression "(code *)PTR_gettext_00436818" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_gettext_00436818"))) () ")")) (argument_list "(PTR_LAB_0043220c + 0x4eac)" (( "(") (binary_expression "PTR_LAB_0043220c + 0x4eac" (identifier "PTR_LAB_0043220c") (+ "+") (number_literal "0x4eac")) () ")")))) (; ";")) (labeled_statement "gold::Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));" (statement_identifier "gold") (: ":") (ERROR ":" (: ":")) (labeled_statement "Incremental_binary::error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));" (statement_identifier "Incremental_binary") (: ":") (ERROR ":" (: ":")) (expression_statement "error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));" (call_expression "error\n                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10))" (identifier "error") (argument_list "(pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10))" (( "(") (identifier "pcVar5") (, ",") (identifier "uVar2") (, ",") (pointer_expression "*(undefined4 *)(this + 0x14)" (* "*") (cast_expression "(undefined4 *)(this + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x14)" (( "(") (binary_expression "this + 0x14" (identifier "this") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(this + 0x10)" (* "*") (cast_expression "(undefined4 *)(this + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")")))) () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_000f2f54();" (call_expression "FUN_000f2f54()" (identifier "FUN_000f2f54") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (ERROR "}" (} "}"))
(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))))) (identifier)) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (binary_expression left: (identifier) right: (number_literal)) right: (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: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_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))))))) right: (parenthesized_expression (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: (identifier)) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) 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: (identifier)))) (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 (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 (assignment_expression left: (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))))) 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)))))))) alternative: (else_clause (compound_statement (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: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (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))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (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))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement))))) (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)))))) (labeled_statement label: (statement_identifier) (ERROR) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))) (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)))))))))) (return_statement))))) (return_statement))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))) (return_statement) (ERROR))

/* elfcpp::Elf_file<64, true, gold::Incremental_binary>::MASKED() */

void __thiscall
elfcpp::Elf_file<64,true,gold::Incremental_binary>::MASKED
          (Elf_file<64,true,gold::Incremental_binary> *this)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  char *pcVar5;
  
  if ((*(int *)(this + 0x10) == 0) || (*(int *)(this + 0x14) == 0xffff)) {
    iVar3 = *(int *)(this + 8);
    uVar1 = *(uint *)(this + 0xc);
    if (iVar3 != 0 || uVar1 != 0) {
      pcVar5 = *(char **)this;
      iVar4 = *(int *)(pcVar5 + 0x28);
      if (-1 < iVar3) {
        iVar3 = (uint)(uVar1 + 0x40 < uVar1) + iVar3;
        if ((iVar3 <= *(int *)(iVar4 + 8)) &&
           ((*(int *)(iVar4 + 8) != iVar3 || (uVar1 + 0x40 <= *(uint *)(iVar4 + 0xc))))) {
          iVar3 = *(int *)(iVar4 + 0x10) + uVar1;
          if (*(int *)(this + 0x10) == 0) {
            iVar4 = *(int *)(this + 0x14);
            *(undefined4 *)(this + 0x10) = *(undefined4 *)(iVar3 + 0x24);
          }
          else {
            iVar4 = *(int *)(this + 0x14);
          }
          if (iVar4 == 0xffff) {
            uVar1 = *(uint *)(iVar3 + 0x28);
            *(uint *)(this + 0x14) = uVar1;
            if (*(uint *)(this + 0x10) <= uVar1) {
              if (0xffff < uVar1) {
                *(uint *)(this + 0x14) = uVar1 - 0x100;
                *(undefined4 *)(this + 0x18) = 0xffffff00;
                if (uVar1 - 0x100 < *(uint *)(this + 0x10)) {
                  return;
                }
              }
              uVar2 = (*(code *)PTR_gettext_00436818)(PTR_LAB_0043220c + 0x4eac);
              gold::Incremental_binary::error
                        (pcVar5,uVar2,*(undefined4 *)(this + 0x14),*(undefined4 *)(this + 0x10));
              return;
            }
          }
          return;
        }
      }
                    /* WARNING: Subroutine does not return */
      FUN_000f2f54();
    }
  }
  return;
}

