
/* WARNING: Type propagation algorithm not settling */
/* 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: bool include_all_members(Archive * this, Symbol_table * symtab, Layout
   * layout, Input_objects * input_objects, Mapfile * mapfile) */

bool __thiscall
gold::Archive::include_all_members
          (Archive *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects,
          Mapfile *mapfile)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  uint uVar4;
  undefined *puVar5;
  Input_file *pIVar6;
  int iVar7;
  uint uVar8;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar9;
  undefined *puVar10;
  _Rb_tree_header *p_Var11;
  _Base_ptr p_Var12;
  Archive *local_c8 [2];
  undefined4 local_c0;
  undefined4 local_bc;
  undefined1 *local_b8;
  undefined4 local_b4;
  undefined1 local_b0 [16];
  int local_a0;
  uint local_9c;
  const_iterator p;
  
  puVar10 = PTR_archive_start_004356ac;
  uVar4 = (uint)this->included_all_members_;
  if (uVar4 == 0) {
    this->included_all_members_ = true;
    (*(code *)puVar10)(input_objects,this);
    puVar5 = PTR_include_member_004356b0;
    puVar2 = PTR_total_members_00435648;
    puVar10 = PTR_read_next_header_00435640;
    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) {
      paVar9 = &p.header_.name.field_2;
      p.off_._4_4_ = 8;
      p.off_._0_4_ = 0;
      p.header_.name._M_string_length = 0;
                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */
      p.header_.name.field_2._M_local_buf[0] = '\0';
      p.archive_ = this;
      p.header_.name._M_dataplus._M_p = (pointer)paVar9;
      const_iterator::read_next_header(&p);
      puVar2 = PTR_include_member_004356b0;
      puVar5 = PTR_s__0043226c + 0x950;
      do {
        puVar1 = PTR_total_members_00435648;
        pIVar6 = this->input_file_;
        while( true ) {
          local_b4 = 0;
          local_b0[0] = 0;
          local_bc = (undefined4)(pIVar6->file_).size_;
          local_c0 = *(undefined4 *)&(pIVar6->file_).size_;
          local_c8[0] = this;
          local_b8 = local_b0;
                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */
          (*(code *)puVar10)(local_c8);
          uVar8 = p.off_._4_4_;
          iVar3 = p.off_._0_4_;
          uVar4 = local_9c;
          iVar7 = local_a0;
          if (local_b8 != local_b0) {
            (*(code *)PTR_operator_delete_0043228c)();
          }
          if ((iVar3 == iVar7) && (uVar8 == uVar4)) {
            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)p.header_.name._M_dataplus._M_p != paVar9) {
              (*(code *)PTR_operator_delete_0043228c)();
            }
            goto LAB_00251f3c;
          }
                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */
          iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,
                                    p.header_.off._4_4_,mapfile,0,puVar5);
          if (iVar7 == 0) {
            uVar4 = 0;
            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)p.header_.name._M_dataplus._M_p != paVar9) {
              (*(code *)PTR_operator_delete_0043228c)();
            }
            goto LAB_00251e58;
          }
          pIVar6 = (p.archive_)->input_file_;
          *(int *)puVar1 = *(int *)puVar1 + 1;
          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||
             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;
          pIVar6 = this->input_file_;
        }
        uVar8 = p.off_._4_4_ + 0x3c;
        p.off_._0_4_ = (uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_;
        uVar4 = uVar8;
        if ((p.archive_)->is_thin_archive_ == false) {
          uVar4 = uVar8 + p.header_.size._4_4_;
          p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;
        }
        p.off_._4_4_ = uVar4;
        if ((uVar4 & 1) != 0) {
          p.off_._4_4_ = uVar4 + 1;
          p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;
        }
        (*(code *)puVar10)(&p);
      } while( true );
    }
    p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;
    p_Var11 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;
    if ((_Rb_tree_header *)p_Var12 != p_Var11) {
      puVar10 = PTR_s__0043226c + 0x950;
      do {
        uVar4 = (*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,
                                  p_Var12[1]._M_parent,mapfile,0,puVar10);
        puVar1 = PTR__Rb_tree_increment_00432d90;
        if (uVar4 == 0) goto LAB_00251e58;
        *(int *)puVar2 = *(int *)puVar2 + 1;
        p_Var12 = (_Base_ptr)(*(code *)puVar1)(p_Var12);
      } while ((_Rb_tree_header *)p_Var12 != p_Var11);
    }
LAB_00251f3c:
    (*(code *)PTR_archive_stop_004356b4)(input_objects,this);
    return true;
  }
LAB_00251e58:
  return SUB41(uVar4,0);
}



/* gold::Archive::include_all_members(gold::Symbol_table*, gold::Layout*, gold::Input_objects*,
   gold::Mapfile*) */

uint __thiscall
gold::Archive::include_all_members
          (Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,
          Mapfile *param_4)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  undefined *puVar7;
  Archive *pAVar8;
  Archive *local_c8 [2];
  undefined4 local_c0;
  undefined4 local_bc;
  undefined1 *local_b8;
  undefined4 local_b4;
  undefined1 local_b0 [16];
  int local_a0;
  uint local_9c;
  Archive *local_88 [2];
  int local_80;
  uint local_7c;
  undefined1 *local_78;
  undefined4 local_74;
  undefined1 local_70 [16];
  undefined4 local_60;
  undefined4 local_5c;
  int local_50;
  int local_4c;
  code *local_48;
  Archive **local_44;
  uint local_40;
  uint local_3c;
  undefined *local_38;
  code *local_34;
  const_iterator *local_30;
  undefined1 *local_2c;
  
  puVar2 = PTR_archive_start_004356ac;
  if ((byte)this[0xd5] != 0) {
    return (uint)(byte)this[0xd5];
  }
  this[0xd5] = (Archive)0x1;
  (*(code *)puVar2)(param_3,this);
  puVar2 = PTR_total_members_00435648;
  if (*(int *)(this + 0xa8) != 0) {
    pAVar8 = *(Archive **)(this + 0xa0);
    if (pAVar8 != this + 0x98) {
      local_48 = (code *)PTR_include_member_004356b0;
      puVar7 = PTR_DAT_0043226c + 0x950;
      do {
        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),
                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);
        puVar1 = PTR__Rb_tree_increment_00432d90;
        if (iVar4 == 0) {
          return 0;
        }
        *(int *)puVar2 = *(int *)puVar2 + 1;
        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);
      } while (pAVar8 != this + 0x98);
    }
LAB_00251f3c:
    (*(code *)PTR_archive_stop_004356b4)(param_3,this);
    return 1;
  }
  local_48 = (code *)PTR_read_next_header_00435640;
  local_78 = local_70;
  local_30 = (const_iterator *)local_88;
  local_7c = 8;
  local_80 = 0;
  local_74 = 0;
                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */
  local_70[0] = 0;
  local_88[0] = this;
  local_2c = local_78;
  const_iterator::read_next_header(local_30);
  local_44 = local_c8;
  local_34 = (code *)PTR_include_member_004356b0;
  local_38 = PTR_DAT_0043226c + 0x950;
  do {
    puVar2 = PTR_total_members_00435648;
    iVar4 = *(int *)(this + 0x24);
    while( true ) {
      local_b4 = 0;
      local_b0[0] = 0;
      local_bc = *(undefined4 *)(iVar4 + 0x4c);
      local_c0 = *(undefined4 *)(iVar4 + 0x48);
      local_c8[0] = this;
      local_b8 = local_b0;
                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */
      (*local_48)(local_44);
      iVar3 = local_80;
      iVar4 = local_a0;
      local_40 = local_7c;
      local_3c = local_9c;
      if (local_b8 != local_b0) {
        (*(code *)PTR_operator_delete_0043228c)();
      }
      if ((iVar3 == iVar4) && (local_40 == local_3c)) {
        if (local_78 != local_2c) {
          (*(code *)PTR_operator_delete_0043228c)();
        }
        goto LAB_00251f3c;
      }
                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */
      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);
      if (uVar5 == 0) {
        if (local_78 == local_2c) {
          return 0;
        }
        local_48 = (code *)uVar5;
        (*(code *)PTR_operator_delete_0043228c)();
        return (uint)local_48;
      }
      iVar4 = *(int *)(local_88[0] + 0x24);
      *(int *)puVar2 = *(int *)puVar2 + 1;
      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;
      iVar4 = *(int *)(this + 0x24);
    }
    uVar6 = local_7c + 0x3c;
    local_80 = (uint)(uVar6 < local_7c) + local_80;
    uVar5 = uVar6;
    if (local_88[0][0xac] == (Archive)0x0) {
      uVar5 = uVar6 + local_4c;
      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;
    }
    local_7c = uVar5;
    if ((uVar5 & 1) != 0) {
      local_7c = uVar5 + 1;
      local_80 = (uint)(local_7c < uVar5) + local_80;
    }
    (*local_48)(local_30);
  } while( true );
}


lui gp,0x1f
addiu gp,gp,-0x7c40
addu gp,gp,t9
addiu sp,sp,-0xf8
lbu v0,0xd5(a0)
sw gp,0x28(sp)
sw s4,0xe0(sp)
sw ra,0xf4(sp)
sw s8,0xf0(sp)
sw s7,0xec(sp)
sw s6,0xe8(sp)
sw s5,0xe4(sp)
sw s3,0xdc(sp)
sw s2,0xd8(sp)
sw s1,0xd4(sp)
sw s0,0xd0(sp)
beq v0,zero,0x00251e88
_lw s4,0x108(sp)
lw ra,0xf4(sp)
lw s8,0xf0(sp)
lw s7,0xec(sp)
lw s6,0xe8(sp)
lw s5,0xe4(sp)
lw s4,0xe0(sp)
lw s3,0xdc(sp)
lw s2,0xd8(sp)
lw s1,0xd4(sp)
lw s0,0xd0(sp)
jr ra
_addiu sp,sp,0xf8
lw t9,-0x4b24(gp)
li v0,0x1
or s0,a0,zero
sb v0,0xd5(a0)
or s2,a1,zero
or a1,a0,zero
or a0,a3,zero
or s1,a3,zero
jalr t9
_or s3,a2,zero
lw v0,0xa8(s0)
beq v0,zero,0x00251f80
_lw gp,0x28(sp)
lw s8,0xa0(s0)
addiu s7,s0,0x98
beq s8,s7,0x00251f3c
_lw s6,-0x7f64(gp)
lw v0,-0x4b20(gp)
lw s5,-0x4b88(gp)
addiu s6,s6,0x950
sw v0,0xb0(sp)
lw t9,0xb0(sp)
or a3,s1,zero
sw s6,0x20(sp)
or a2,s3,zero
sw zero,0x1c(sp)
or a1,s2,zero
sw s4,0x18(sp)
or a0,s0,zero
lw t1,0x14(s8)
lw t0,0x10(s8)
sw t1,0x14(sp)
jalr t9
_sw t0,0x10(sp)
beq v0,zero,0x00251e58
_lw gp,0x28(sp)
lw v0,0x0(s5)
or a0,s8,zero
lw t9,-0x7440(gp)
addiu v0,v0,0x1
jalr t9
_sw v0,0x0(s5)
lw gp,0x28(sp)
bne v0,s7,0x00251edc
_or s8,v0,zero
lw t9,-0x4b1c(gp)
or a1,s0,zero
jalr t9
_or a0,s1,zero
li v0,0x1
lw ra,0xf4(sp)
lw s8,0xf0(sp)
lw s7,0xec(sp)
lw s6,0xe8(sp)
lw s5,0xe4(sp)
lw s4,0xe0(sp)
lw s3,0xdc(sp)
lw s2,0xd8(sp)
lw s1,0xd4(sp)
lw s0,0xd0(sp)
jr ra
_addiu sp,sp,0xf8
lw t9,-0x4b90(gp)
addiu a1,sp,0x88
addiu a0,sp,0x70
sw s0,0x70(sp)
li v1,0x8
sw a1,0xcc(sp)
or v0,zero,zero
sw a0,0xc8(sp)
sw t9,0xb0(sp)
sw v1,0x7c(sp)
sw v0,0x78(sp)
sw a1,0x80(sp)
sw zero,0x84(sp)
bal 0x0024e7e8
_sb zero,0x88(sp)
lw gp,0x28(sp)
addiu v0,sp,0x30
addiu s6,sp,0x48
sw v0,0xb4(sp)
lw v0,-0x4b20(gp)
sw v0,0xc4(sp)
lw v0,-0x7f64(gp)
addiu v0,v0,0x950
sw v0,0xc0(sp)
lw s5,-0x4b88(gp)
lw v0,0x24(s0)
lw a0,0xb4(sp)
lw t9,0xb0(sp)
sw s0,0x30(sp)
sw s6,0x40(sp)
sw zero,0x44(sp)
sb zero,0x48(sp)
lw v1,0x4c(v0)
lw v0,0x48(v0)
sw v1,0x3c(sp)
jalr t9
_sw v0,0x38(sp)
lw v0,0x7c(sp)
lw a0,0x40(sp)
lw gp,0x28(sp)
lw s8,0x78(sp)
lw s7,0x58(sp)
sw v0,0xb8(sp)
lw v0,0x5c(sp)
beq a0,s6,0x00252048
_sw v0,0xbc(sp)
lw t9,-0x7f44(gp)
jalr t9
_nop
lw gp,0x28(sp)
beq s8,s7,0x00252140
_lw v0,0xb8(sp)
lw v0,0xc0(sp)
or a3,s1,zero
lw v1,0x9c(sp)
or a2,s3,zero
lw t9,0xc4(sp)
or a1,s2,zero
sw v0,0x20(sp)
or a0,s0,zero
sw zero,0x1c(sp)
sw s4,0x18(sp)
sw v1,0x14(sp)
lw v0,0x98(sp)
jalr t9
_sw v0,0x10(sp)
beq v0,zero,0x0025216c
_lw gp,0x28(sp)
lw a2,0x70(sp)
lw a0,0x0(s5)
lw a1,0x78(sp)
lw v1,0x7c(sp)
lw v0,0x24(a2)
addiu a0,a0,0x1
sw a0,0x0(s5)
lw a0,0x48(v0)
beq a0,a1,0x0025212c
_nop
addiu v0,v1,0x3c
lbu a0,0xac(a2)
sltu v1,v0,v1
sw v0,0x7c(sp)
addu v1,v1,a1
bne a0,zero,0x002520f8
_sw v1,0x78(sp)
lw a0,0xac(sp)
lw a1,0xa8(sp)
addu a0,v0,a0
addu v1,v1,a1
sltu v0,a0,v0
sw a0,0x7c(sp)
addu v1,v0,v1
or v0,a0,zero
sw v1,0x78(sp)
andi a0,v0,0x1
beq a0,zero,0x0025211c
_lw t9,0xb0(sp)
addiu a0,v0,0x1
sltu v0,a0,v0
sw a0,0x7c(sp)
addu v0,v0,v1
sw v0,0x78(sp)
lw t9,0xb0(sp)
jalr t9
_lw a0,0xc8(sp)
b 0x00251fe0
_lw gp,0x28(sp)
lw v0,0x4c(v0)
bne v0,v1,0x002520b8
_nop
b 0x00251fe8
_lw v0,0x24(s0)
lw v1,0xbc(sp)
bne v0,v1,0x00252054
_lw v0,0xc0(sp)
lw a0,0x80(sp)
lw v0,0xcc(sp)
beq a0,v0,0x00251f3c
_lw t9,-0x7f44(gp)
jalr t9
_nop
b 0x00251f3c
_lw gp,0x28(sp)
lw a0,0x80(sp)
lw v1,0xcc(sp)
beq a0,v1,0x00251e58
_lw t9,-0x7f44(gp)
jalr t9
_sw v0,0xb0(sp)
b 0x00251e58
_lw v0,0xb0(sp)
(translation_unit "/* gold::Archive::include_all_members(gold::Symbol_table*, gold::Layout*, gold::Input_objects*,\n   gold::Mapfile*) */\n\nuint __thiscall\ngold::Archive::include_all_members\n          (Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,\n          Mapfile *param_4)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined *puVar7;\n  Archive *pAVar8;\n  Archive *local_c8 [2];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined1 *local_b8;\n  undefined4 local_b4;\n  undefined1 local_b0 [16];\n  int local_a0;\n  uint local_9c;\n  Archive *local_88 [2];\n  int local_80;\n  uint local_7c;\n  undefined1 *local_78;\n  undefined4 local_74;\n  undefined1 local_70 [16];\n  undefined4 local_60;\n  undefined4 local_5c;\n  int local_50;\n  int local_4c;\n  code *local_48;\n  Archive **local_44;\n  uint local_40;\n  uint local_3c;\n  undefined *local_38;\n  code *local_34;\n  const_iterator *local_30;\n  undefined1 *local_2c;\n  \n  puVar2 = PTR_archive_start_004356ac;\n  if ((byte)this[0xd5] != 0) {\n    return (uint)(byte)this[0xd5];\n  }\n  this[0xd5] = (Archive)0x1;\n  (*(code *)puVar2)(param_3,this);\n  puVar2 = PTR_total_members_00435648;\n  if (*(int *)(this + 0xa8) != 0) {\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }\n  local_48 = (code *)PTR_read_next_header_00435640;\n  local_78 = local_70;\n  local_30 = (const_iterator *)local_88;\n  local_7c = 8;\n  local_80 = 0;\n  local_74 = 0;\n                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */\n  local_70[0] = 0;\n  local_88[0] = this;\n  local_2c = local_78;\n  const_iterator::read_next_header(local_30);\n  local_44 = local_c8;\n  local_34 = (code *)PTR_include_member_004356b0;\n  local_38 = PTR_DAT_0043226c + 0x950;\n  do {\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  } while( true );\n}\n\n" comment (function_definition "uint __thiscall\ngold::Archive::include_all_members\n          (Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,\n          Mapfile *param_4)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined *puVar7;\n  Archive *pAVar8;\n  Archive *local_c8 [2];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined1 *local_b8;\n  undefined4 local_b4;\n  undefined1 local_b0 [16];\n  int local_a0;\n  uint local_9c;\n  Archive *local_88 [2];\n  int local_80;\n  uint local_7c;\n  undefined1 *local_78;\n  undefined4 local_74;\n  undefined1 local_70 [16];\n  undefined4 local_60;\n  undefined4 local_5c;\n  int local_50;\n  int local_4c;\n  code *local_48;\n  Archive **local_44;\n  uint local_40;\n  uint local_3c;\n  undefined *local_38;\n  code *local_34;\n  const_iterator *local_30;\n  undefined1 *local_2c;\n  \n  puVar2 = PTR_archive_start_004356ac;\n  if ((byte)this[0xd5] != 0) {\n    return (uint)(byte)this[0xd5];\n  }\n  this[0xd5] = (Archive)0x1;\n  (*(code *)puVar2)(param_3,this);\n  puVar2 = PTR_total_members_00435648;\n  if (*(int *)(this + 0xa8) != 0) {\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }\n  local_48 = (code *)PTR_read_next_header_00435640;\n  local_78 = local_70;\n  local_30 = (const_iterator *)local_88;\n  local_7c = 8;\n  local_80 = 0;\n  local_74 = 0;\n                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */\n  local_70[0] = 0;\n  local_88[0] = this;\n  local_2c = local_78;\n  const_iterator::read_next_header(local_30);\n  local_44 = local_c8;\n  local_34 = (code *)PTR_include_member_004356b0;\n  local_38 = PTR_DAT_0043226c + 0x950;\n  do {\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  } while( true );\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Archive::" identifier : : identifier : :) (function_declarator "include_all_members\n          (Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,\n          Mapfile *param_4)" identifier (parameter_list "(Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,\n          Mapfile *param_4)" ( (parameter_declaration "Archive *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "Layout *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "Input_objects *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "Mapfile *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined *puVar7;\n  Archive *pAVar8;\n  Archive *local_c8 [2];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined1 *local_b8;\n  undefined4 local_b4;\n  undefined1 local_b0 [16];\n  int local_a0;\n  uint local_9c;\n  Archive *local_88 [2];\n  int local_80;\n  uint local_7c;\n  undefined1 *local_78;\n  undefined4 local_74;\n  undefined1 local_70 [16];\n  undefined4 local_60;\n  undefined4 local_5c;\n  int local_50;\n  int local_4c;\n  code *local_48;\n  Archive **local_44;\n  uint local_40;\n  uint local_3c;\n  undefined *local_38;\n  code *local_34;\n  const_iterator *local_30;\n  undefined1 *local_2c;\n  \n  puVar2 = PTR_archive_start_004356ac;\n  if ((byte)this[0xd5] != 0) {\n    return (uint)(byte)this[0xd5];\n  }\n  this[0xd5] = (Archive)0x1;\n  (*(code *)puVar2)(param_3,this);\n  puVar2 = PTR_total_members_00435648;\n  if (*(int *)(this + 0xa8) != 0) {\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }\n  local_48 = (code *)PTR_read_next_header_00435640;\n  local_78 = local_70;\n  local_30 = (const_iterator *)local_88;\n  local_7c = 8;\n  local_80 = 0;\n  local_74 = 0;\n                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */\n  local_70[0] = 0;\n  local_88[0] = this;\n  local_2c = local_78;\n  const_iterator::read_next_header(local_30);\n  local_44 = local_c8;\n  local_34 = (code *)PTR_include_member_004356b0;\n  local_38 = PTR_DAT_0043226c + 0x950;\n  do {\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  } while( true );\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "Archive *pAVar8;" type_identifier (pointer_declarator "*pAVar8" * identifier) ;) (declaration "Archive *local_c8 [2];" type_identifier (pointer_declarator "*local_c8 [2]" * (array_declarator "local_c8 [2]" identifier [ number_literal ])) ;) (declaration "undefined4 local_c0;" type_identifier identifier ;) (declaration "undefined4 local_bc;" type_identifier identifier ;) (declaration "undefined1 *local_b8;" type_identifier (pointer_declarator "*local_b8" * identifier) ;) (declaration "undefined4 local_b4;" type_identifier identifier ;) (declaration "undefined1 local_b0 [16];" type_identifier (array_declarator "local_b0 [16]" identifier [ number_literal ]) ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "uint local_9c;" type_identifier identifier ;) (declaration "Archive *local_88 [2];" type_identifier (pointer_declarator "*local_88 [2]" * (array_declarator "local_88 [2]" identifier [ number_literal ])) ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "undefined4 local_74;" type_identifier identifier ;) (declaration "undefined1 local_70 [16];" type_identifier (array_declarator "local_70 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "Archive **local_44;" type_identifier (pointer_declarator "**local_44" * (pointer_declarator "*local_44" * identifier)) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "undefined *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "code *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "const_iterator *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined1 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar2 = PTR_archive_start_004356ac;" (assignment_expression "puVar2 = PTR_archive_start_004356ac" identifier = identifier) ;) (if_statement "if ((byte)this[0xd5] != 0) {\n    return (uint)(byte)this[0xd5];\n  }" if (parenthesized_expression "((byte)this[0xd5] != 0)" ( (binary_expression "(byte)this[0xd5] != 0" (cast_expression "(byte)this[0xd5]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "this[0xd5]" identifier [ number_literal ])) != number_literal) )) (compound_statement "{\n    return (uint)(byte)this[0xd5];\n  }" { (return_statement "return (uint)(byte)this[0xd5];" return (cast_expression "(uint)(byte)this[0xd5]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)this[0xd5]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "this[0xd5]" identifier [ number_literal ]))) ;) })) (expression_statement "this[0xd5] = (Archive)0x1;" (assignment_expression "this[0xd5] = (Archive)0x1" (subscript_expression "this[0xd5]" identifier [ number_literal ]) = (cast_expression "(Archive)0x1" ( (type_descriptor "Archive" type_identifier) ) number_literal)) ;) (expression_statement "(*(code *)puVar2)(param_3,this);" (call_expression "(*(code *)puVar2)(param_3,this)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,this)" ( identifier , identifier ))) ;) (expression_statement "puVar2 = PTR_total_members_00435648;" (assignment_expression "puVar2 = PTR_total_members_00435648" identifier = identifier) ;) (if_statement "if (*(int *)(this + 0xa8) != 0) {\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }" if (parenthesized_expression "(*(int *)(this + 0xa8) != 0)" ( (binary_expression "*(int *)(this + 0xa8) != 0" (pointer_expression "*(int *)(this + 0xa8)" * (cast_expression "(int *)(this + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xa8)" ( (binary_expression "this + 0xa8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }" { (expression_statement "pAVar8 = *(Archive **)(this + 0xa0);" (assignment_expression "pAVar8 = *(Archive **)(this + 0xa0)" identifier = (pointer_expression "*(Archive **)(this + 0xa0)" * (cast_expression "(Archive **)(this + 0xa0)" ( (type_descriptor "Archive **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xa0)" ( (binary_expression "this + 0xa0" identifier + number_literal) ))))) ;) (if_statement "if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }" if (parenthesized_expression "(pAVar8 != this + 0x98)" ( (binary_expression "pAVar8 != this + 0x98" identifier != (binary_expression "this + 0x98" identifier + number_literal)) )) (compound_statement "{\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }" { (expression_statement "local_48 = (code *)PTR_include_member_004356b0;" (assignment_expression "local_48 = (code *)PTR_include_member_004356b0" identifier = (cast_expression "(code *)PTR_include_member_004356b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar7 = PTR_DAT_0043226c + 0x950;" (assignment_expression "puVar7 = PTR_DAT_0043226c + 0x950" identifier = (binary_expression "PTR_DAT_0043226c + 0x950" identifier + number_literal)) ;) (do_statement "do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);" do (compound_statement "{\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      }" { (expression_statement "iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);" (assignment_expression "iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7)" identifier = (call_expression "(*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7)" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7)" ( identifier , identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(pAVar8 + 0x10)" * (cast_expression "(undefined4 *)(pAVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar8 + 0x10)" ( (binary_expression "pAVar8 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(pAVar8 + 0x14)" * (cast_expression "(undefined4 *)(pAVar8 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar8 + 0x14)" ( (binary_expression "pAVar8 + 0x14" identifier + number_literal) )))) , identifier , number_literal , identifier )))) ;) (expression_statement "puVar1 = PTR__Rb_tree_increment_00432d90;" (assignment_expression "puVar1 = PTR__Rb_tree_increment_00432d90" identifier = identifier) ;) (if_statement "if (iVar4 == 0) {\n          return 0;\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(int *)puVar2 = *(int *)puVar2 + 1;" (assignment_expression "*(int *)puVar2 = *(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "*(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal)) ;) (expression_statement "pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);" (assignment_expression "pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8)" identifier = (cast_expression "(Archive *)(*(code *)puVar1)(pAVar8)" ( (type_descriptor "Archive *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)puVar1)(pAVar8)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pAVar8)" ( identifier ))))) ;) }) while (parenthesized_expression "(pAVar8 != this + 0x98)" ( (binary_expression "pAVar8 != this + 0x98" identifier != (binary_expression "this + 0x98" identifier + number_literal)) )) ;) })) (labeled_statement "LAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);" statement_identifier : (expression_statement "(*(code *)PTR_archive_stop_004356b4)(param_3,this);" (call_expression "(*(code *)PTR_archive_stop_004356b4)(param_3,this)" (parenthesized_expression "(*(code *)PTR_archive_stop_004356b4)" ( (pointer_expression "*(code *)PTR_archive_stop_004356b4" * (cast_expression "(code *)PTR_archive_stop_004356b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,this)" ( identifier , identifier ))) ;)) (return_statement "return 1;" return number_literal ;) })) (expression_statement "local_48 = (code *)PTR_read_next_header_00435640;" (assignment_expression "local_48 = (code *)PTR_read_next_header_00435640" identifier = (cast_expression "(code *)PTR_read_next_header_00435640" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_78 = local_70;" (assignment_expression "local_78 = local_70" identifier = identifier) ;) (expression_statement "local_30 = (const_iterator *)local_88;" (assignment_expression "local_30 = (const_iterator *)local_88" identifier = (cast_expression "(const_iterator *)local_88" ( (type_descriptor "const_iterator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_7c = 8;" (assignment_expression "local_7c = 8" identifier = number_literal) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) comment (expression_statement "local_70[0] = 0;" (assignment_expression "local_70[0] = 0" (subscript_expression "local_70[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_88[0] = this;" (assignment_expression "local_88[0] = this" (subscript_expression "local_88[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_2c = local_78;" (assignment_expression "local_2c = local_78" identifier = identifier) ;) (labeled_statement "const_iterator::read_next_header(local_30);" statement_identifier : (ERROR ":" :) (expression_statement "read_next_header(local_30);" (call_expression "read_next_header(local_30)" identifier (argument_list "(local_30)" ( identifier ))) ;)) (expression_statement "local_44 = local_c8;" (assignment_expression "local_44 = local_c8" identifier = identifier) ;) (expression_statement "local_34 = (code *)PTR_include_member_004356b0;" (assignment_expression "local_34 = (code *)PTR_include_member_004356b0" identifier = (cast_expression "(code *)PTR_include_member_004356b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_38 = PTR_DAT_0043226c + 0x950;" (assignment_expression "local_38 = PTR_DAT_0043226c + 0x950" identifier = (binary_expression "PTR_DAT_0043226c + 0x950" identifier + number_literal)) ;) (do_statement "do {\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  } while( true );" do (compound_statement "{\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  }" { (expression_statement "puVar2 = PTR_total_members_00435648;" (assignment_expression "puVar2 = PTR_total_members_00435648" identifier = identifier) ;) (expression_statement "iVar4 = *(int *)(this + 0x24);" (assignment_expression "iVar4 = *(int *)(this + 0x24)" identifier = (pointer_expression "*(int *)(this + 0x24)" * (cast_expression "(int *)(this + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x24)" ( (binary_expression "this + 0x24" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "local_b0[0] = 0;" (assignment_expression "local_b0[0] = 0" (subscript_expression "local_b0[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_bc = *(undefined4 *)(iVar4 + 0x4c);" (assignment_expression "local_bc = *(undefined4 *)(iVar4 + 0x4c)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x4c)" * (cast_expression "(undefined4 *)(iVar4 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4c)" ( (binary_expression "iVar4 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "local_c0 = *(undefined4 *)(iVar4 + 0x48);" (assignment_expression "local_c0 = *(undefined4 *)(iVar4 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x48)" * (cast_expression "(undefined4 *)(iVar4 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x48)" ( (binary_expression "iVar4 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "local_c8[0] = this;" (assignment_expression "local_c8[0] = this" (subscript_expression "local_c8[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b8 = local_b0;" (assignment_expression "local_b8 = local_b0" identifier = identifier) ;) comment (expression_statement "(*local_48)(local_44);" (call_expression "(*local_48)(local_44)" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "(local_44)" ( identifier ))) ;) (expression_statement "iVar3 = local_80;" (assignment_expression "iVar3 = local_80" identifier = identifier) ;) (expression_statement "iVar4 = local_a0;" (assignment_expression "iVar4 = local_a0" identifier = identifier) ;) (expression_statement "local_40 = local_7c;" (assignment_expression "local_40 = local_7c" identifier = identifier) ;) (expression_statement "local_3c = local_9c;" (assignment_expression "local_3c = local_9c" identifier = identifier) ;) (if_statement "if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }" if (parenthesized_expression "(local_b8 != local_b0)" ( (binary_expression "local_b8 != local_b0" identifier != identifier) )) (compound_statement "{\n        (*(code *)PTR_operator_delete_0043228c)();\n      }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (if_statement "if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }" if (parenthesized_expression "((iVar3 == iVar4) && (local_40 == local_3c))" ( (binary_expression "(iVar3 == iVar4) && (local_40 == local_3c)" (parenthesized_expression "(iVar3 == iVar4)" ( (binary_expression "iVar3 == iVar4" identifier == identifier) )) && (parenthesized_expression "(local_40 == local_3c)" ( (binary_expression "local_40 == local_3c" identifier == identifier) ))) )) (compound_statement "{\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }" { (if_statement "if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }" if (parenthesized_expression "(local_78 != local_2c)" ( (binary_expression "local_78 != local_2c" identifier != identifier) )) (compound_statement "{\n          (*(code *)PTR_operator_delete_0043228c)();\n        }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_00251f3c;" goto statement_identifier ;) })) comment (expression_statement "uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);" (assignment_expression "uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38)" identifier = (call_expression "(*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38)" (parenthesized_expression "(*local_34)" ( (pointer_expression "*local_34" * identifier) )) (argument_list "(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }" { (if_statement "if (local_78 == local_2c) {\n          return 0;\n        }" if (parenthesized_expression "(local_78 == local_2c)" ( (binary_expression "local_78 == local_2c" identifier == identifier) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_48 = (code *)uVar5;" (assignment_expression "local_48 = (code *)uVar5" identifier = (cast_expression "(code *)uVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return (uint)local_48;" return (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier) ;) })) (expression_statement "iVar4 = *(int *)(local_88[0] + 0x24);" (assignment_expression "iVar4 = *(int *)(local_88[0] + 0x24)" identifier = (pointer_expression "*(int *)(local_88[0] + 0x24)" * (cast_expression "(int *)(local_88[0] + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_88[0] + 0x24)" ( (binary_expression "local_88[0] + 0x24" (subscript_expression "local_88[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "*(int *)puVar2 = *(int *)puVar2 + 1;" (assignment_expression "*(int *)puVar2 = *(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "*(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal)) ;) (if_statement "if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;" if (parenthesized_expression "((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c))" ( (binary_expression "(*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)" (parenthesized_expression "(*(int *)(iVar4 + 0x48) != local_80)" ( (binary_expression "*(int *)(iVar4 + 0x48) != local_80" (pointer_expression "*(int *)(iVar4 + 0x48)" * (cast_expression "(int *)(iVar4 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x48)" ( (binary_expression "iVar4 + 0x48" identifier + number_literal) )))) != identifier) )) || (parenthesized_expression "(*(uint *)(iVar4 + 0x4c) != local_7c)" ( (binary_expression "*(uint *)(iVar4 + 0x4c) != local_7c" (pointer_expression "*(uint *)(iVar4 + 0x4c)" * (cast_expression "(uint *)(iVar4 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4c)" ( (binary_expression "iVar4 + 0x4c" identifier + number_literal) )))) != identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = *(int *)(this + 0x24);" (assignment_expression "iVar4 = *(int *)(this + 0x24)" identifier = (pointer_expression "*(int *)(this + 0x24)" * (cast_expression "(int *)(this + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x24)" ( (binary_expression "this + 0x24" identifier + number_literal) ))))) ;) })) (expression_statement "uVar6 = local_7c + 0x3c;" (assignment_expression "uVar6 = local_7c + 0x3c" identifier = (binary_expression "local_7c + 0x3c" identifier + number_literal)) ;) (expression_statement "local_80 = (uint)(uVar6 < local_7c) + local_80;" (assignment_expression "local_80 = (uint)(uVar6 < local_7c) + local_80" identifier = (binary_expression "(uint)(uVar6 < local_7c) + local_80" (call_expression "(uint)(uVar6 < local_7c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < local_7c)" ( (binary_expression "uVar6 < local_7c" identifier < identifier) ))) + identifier)) ;) (expression_statement "uVar5 = uVar6;" (assignment_expression "uVar5 = uVar6" identifier = identifier) ;) (if_statement "if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }" if (parenthesized_expression "(local_88[0][0xac] == (Archive)0x0)" ( (binary_expression "local_88[0][0xac] == (Archive)0x0" (subscript_expression "local_88[0][0xac]" (subscript_expression "local_88[0]" identifier [ number_literal ]) [ number_literal ]) == (cast_expression "(Archive)0x0" ( (type_descriptor "Archive" type_identifier) ) number_literal)) )) (compound_statement "{\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }" { (expression_statement "uVar5 = uVar6 + local_4c;" (assignment_expression "uVar5 = uVar6 + local_4c" identifier = (binary_expression "uVar6 + local_4c" identifier + identifier)) ;) (expression_statement "local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;" (assignment_expression "local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50" identifier = (binary_expression "(uint)(uVar5 < uVar6) + local_80 + local_50" (binary_expression "(uint)(uVar5 < uVar6) + local_80" (call_expression "(uint)(uVar5 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar6)" ( (binary_expression "uVar5 < uVar6" identifier < identifier) ))) + identifier) + identifier)) ;) })) (expression_statement "local_7c = uVar5;" (assignment_expression "local_7c = uVar5" identifier = identifier) ;) (if_statement "if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }" if (parenthesized_expression "((uVar5 & 1) != 0)" ( (binary_expression "(uVar5 & 1) != 0" (parenthesized_expression "(uVar5 & 1)" ( (binary_expression "uVar5 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }" { (expression_statement "local_7c = uVar5 + 1;" (assignment_expression "local_7c = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "local_80 = (uint)(local_7c < uVar5) + local_80;" (assignment_expression "local_80 = (uint)(local_7c < uVar5) + local_80" identifier = (binary_expression "(uint)(local_7c < uVar5) + local_80" (call_expression "(uint)(local_7c < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_7c < uVar5)" ( (binary_expression "local_7c < uVar5" identifier < identifier) ))) + identifier)) ;) })) (expression_statement "(*local_48)(local_30);" (call_expression "(*local_48)(local_30)" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "(local_30)" ( identifier ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* 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: bool include_all_members(Archive * this, Symbol_table * symtab, Layout\n   * layout, Input_objects * input_objects, Mapfile * mapfile) */\n\nbool __thiscall\ngold::Archive::include_all_members\n          (Archive *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects,\n          Mapfile *mapfile)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  undefined *puVar5;\n  Input_file *pIVar6;\n  int iVar7;\n  uint uVar8;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar9;\n  undefined *puVar10;\n  _Rb_tree_header *p_Var11;\n  _Base_ptr p_Var12;\n  Archive *local_c8 [2];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined1 *local_b8;\n  undefined4 local_b4;\n  undefined1 local_b0 [16];\n  int local_a0;\n  uint local_9c;\n  const_iterator p;\n  \n  puVar10 = PTR_archive_start_004356ac;\n  uVar4 = (uint)this->included_all_members_;\n  if (uVar4 == 0) {\n    this->included_all_members_ = true;\n    (*(code *)puVar10)(input_objects,this);\n    puVar5 = PTR_include_member_004356b0;\n    puVar2 = PTR_total_members_00435648;\n    puVar10 = PTR_read_next_header_00435640;\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) {\n      paVar9 = &p.header_.name.field_2;\n      p.off_._4_4_ = 8;\n      p.off_._0_4_ = 0;\n      p.header_.name._M_string_length = 0;\n                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */\n      p.header_.name.field_2._M_local_buf[0] = '\0';\n      p.archive_ = this;\n      p.header_.name._M_dataplus._M_p = (pointer)paVar9;\n      const_iterator::read_next_header(&p);\n      puVar2 = PTR_include_member_004356b0;\n      puVar5 = PTR_s__0043226c + 0x950;\n      do {\n        puVar1 = PTR_total_members_00435648;\n        pIVar6 = this->input_file_;\n        while( true ) {\n          local_b4 = 0;\n          local_b0[0] = 0;\n          local_bc = (undefined4)(pIVar6->file_).size_;\n          local_c0 = *(undefined4 *)&(pIVar6->file_).size_;\n          local_c8[0] = this;\n          local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n          (*(code *)puVar10)(local_c8);\n          uVar8 = p.off_._4_4_;\n          iVar3 = p.off_._0_4_;\n          uVar4 = local_9c;\n          iVar7 = local_a0;\n          if (local_b8 != local_b0) {\n            (*(code *)PTR_operator_delete_0043228c)();\n          }\n          if ((iVar3 == iVar7) && (uVar8 == uVar4)) {\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n          iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5);\n          if (iVar7 == 0) {\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }\n          pIVar6 = (p.archive_)->input_file_;\n          *(int *)puVar1 = *(int *)puVar1 + 1;\n          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;\n          pIVar6 = this->input_file_;\n        }\n        uVar8 = p.off_._4_4_ + 0x3c;\n        p.off_._0_4_ = (uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_;\n        uVar4 = uVar8;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          uVar4 = uVar8 + p.header_.size._4_4_;\n          p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;\n        }\n        p.off_._4_4_ = uVar4;\n        if ((uVar4 & 1) != 0) {\n          p.off_._4_4_ = uVar4 + 1;\n          p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;\n        }\n        (*(code *)puVar10)(&p);\n      } while( true );\n    }\n    p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n    p_Var11 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n    if ((_Rb_tree_header *)p_Var12 != p_Var11) {\n      puVar10 = PTR_s__0043226c + 0x950;\n      do {\n        uVar4 = (*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (uVar4 == 0) goto LAB_00251e58;\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        p_Var12 = (_Base_ptr)(*(code *)puVar1)(p_Var12);\n      } while ((_Rb_tree_header *)p_Var12 != p_Var11);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(input_objects,this);\n    return true;\n  }\nLAB_00251e58:\n  return SUB41(uVar4,0);\n}\n\n" comment comment comment comment comment comment comment comment (function_definition "bool __thiscall\ngold::Archive::include_all_members\n          (Archive *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects,\n          Mapfile *mapfile)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  undefined *puVar5;\n  Input_file *pIVar6;\n  int iVar7;\n  uint uVar8;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar9;\n  undefined *puVar10;\n  _Rb_tree_header *p_Var11;\n  _Base_ptr p_Var12;\n  Archive *local_c8 [2];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined1 *local_b8;\n  undefined4 local_b4;\n  undefined1 local_b0 [16];\n  int local_a0;\n  uint local_9c;\n  const_iterator p;\n  \n  puVar10 = PTR_archive_start_004356ac;\n  uVar4 = (uint)this->included_all_members_;\n  if (uVar4 == 0) {\n    this->included_all_members_ = true;\n    (*(code *)puVar10)(input_objects,this);\n    puVar5 = PTR_include_member_004356b0;\n    puVar2 = PTR_total_members_00435648;\n    puVar10 = PTR_read_next_header_00435640;\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) {\n      paVar9 = &p.header_.name.field_2;\n      p.off_._4_4_ = 8;\n      p.off_._0_4_ = 0;\n      p.header_.name._M_string_length = 0;\n                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */\n      p.header_.name.field_2._M_local_buf[0] = '\0';\n      p.archive_ = this;\n      p.header_.name._M_dataplus._M_p = (pointer)paVar9;\n      const_iterator::read_next_header(&p);\n      puVar2 = PTR_include_member_004356b0;\n      puVar5 = PTR_s__0043226c + 0x950;\n      do {\n        puVar1 = PTR_total_members_00435648;\n        pIVar6 = this->input_file_;\n        while( true ) {\n          local_b4 = 0;\n          local_b0[0] = 0;\n          local_bc = (undefined4)(pIVar6->file_).size_;\n          local_c0 = *(undefined4 *)&(pIVar6->file_).size_;\n          local_c8[0] = this;\n          local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n          (*(code *)puVar10)(local_c8);\n          uVar8 = p.off_._4_4_;\n          iVar3 = p.off_._0_4_;\n          uVar4 = local_9c;\n          iVar7 = local_a0;\n          if (local_b8 != local_b0) {\n            (*(code *)PTR_operator_delete_0043228c)();\n          }\n          if ((iVar3 == iVar7) && (uVar8 == uVar4)) {\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n          iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5);\n          if (iVar7 == 0) {\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }\n          pIVar6 = (p.archive_)->input_file_;\n          *(int *)puVar1 = *(int *)puVar1 + 1;\n          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;\n          pIVar6 = this->input_file_;\n        }\n        uVar8 = p.off_._4_4_ + 0x3c;\n        p.off_._0_4_ = (uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_;\n        uVar4 = uVar8;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          uVar4 = uVar8 + p.header_.size._4_4_;\n          p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;\n        }\n        p.off_._4_4_ = uVar4;\n        if ((uVar4 & 1) != 0) {\n          p.off_._4_4_ = uVar4 + 1;\n          p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;\n        }\n        (*(code *)puVar10)(&p);\n      } while( true );\n    }\n    p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n    p_Var11 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n    if ((_Rb_tree_header *)p_Var12 != p_Var11) {\n      puVar10 = PTR_s__0043226c + 0x950;\n      do {\n        uVar4 = (*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (uVar4 == 0) goto LAB_00251e58;\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        p_Var12 = (_Base_ptr)(*(code *)puVar1)(p_Var12);\n      } while ((_Rb_tree_header *)p_Var12 != p_Var11);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(input_objects,this);\n    return true;\n  }\nLAB_00251e58:\n  return SUB41(uVar4,0);\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Archive::" identifier : : identifier : :) (function_declarator "include_all_members\n          (Archive *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects,\n          Mapfile *mapfile)" identifier (parameter_list "(Archive *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects,\n          Mapfile *mapfile)" ( (parameter_declaration "Archive *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "Input_objects *input_objects" type_identifier (pointer_declarator "*input_objects" * identifier)) , (parameter_declaration "Mapfile *mapfile" type_identifier (pointer_declarator "*mapfile" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  undefined *puVar5;\n  Input_file *pIVar6;\n  int iVar7;\n  uint uVar8;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar9;\n  undefined *puVar10;\n  _Rb_tree_header *p_Var11;\n  _Base_ptr p_Var12;\n  Archive *local_c8 [2];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined1 *local_b8;\n  undefined4 local_b4;\n  undefined1 local_b0 [16];\n  int local_a0;\n  uint local_9c;\n  const_iterator p;\n  \n  puVar10 = PTR_archive_start_004356ac;\n  uVar4 = (uint)this->included_all_members_;\n  if (uVar4 == 0) {\n    this->included_all_members_ = true;\n    (*(code *)puVar10)(input_objects,this);\n    puVar5 = PTR_include_member_004356b0;\n    puVar2 = PTR_total_members_00435648;\n    puVar10 = PTR_read_next_header_00435640;\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) {\n      paVar9 = &p.header_.name.field_2;\n      p.off_._4_4_ = 8;\n      p.off_._0_4_ = 0;\n      p.header_.name._M_string_length = 0;\n                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */\n      p.header_.name.field_2._M_local_buf[0] = '\0';\n      p.archive_ = this;\n      p.header_.name._M_dataplus._M_p = (pointer)paVar9;\n      const_iterator::read_next_header(&p);\n      puVar2 = PTR_include_member_004356b0;\n      puVar5 = PTR_s__0043226c + 0x950;\n      do {\n        puVar1 = PTR_total_members_00435648;\n        pIVar6 = this->input_file_;\n        while( true ) {\n          local_b4 = 0;\n          local_b0[0] = 0;\n          local_bc = (undefined4)(pIVar6->file_).size_;\n          local_c0 = *(undefined4 *)&(pIVar6->file_).size_;\n          local_c8[0] = this;\n          local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n          (*(code *)puVar10)(local_c8);\n          uVar8 = p.off_._4_4_;\n          iVar3 = p.off_._0_4_;\n          uVar4 = local_9c;\n          iVar7 = local_a0;\n          if (local_b8 != local_b0) {\n            (*(code *)PTR_operator_delete_0043228c)();\n          }\n          if ((iVar3 == iVar7) && (uVar8 == uVar4)) {\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n          iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5);\n          if (iVar7 == 0) {\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }\n          pIVar6 = (p.archive_)->input_file_;\n          *(int *)puVar1 = *(int *)puVar1 + 1;\n          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;\n          pIVar6 = this->input_file_;\n        }\n        uVar8 = p.off_._4_4_ + 0x3c;\n        p.off_._0_4_ = (uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_;\n        uVar4 = uVar8;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          uVar4 = uVar8 + p.header_.size._4_4_;\n          p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;\n        }\n        p.off_._4_4_ = uVar4;\n        if ((uVar4 & 1) != 0) {\n          p.off_._4_4_ = uVar4 + 1;\n          p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;\n        }\n        (*(code *)puVar10)(&p);\n      } while( true );\n    }\n    p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n    p_Var11 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n    if ((_Rb_tree_header *)p_Var12 != p_Var11) {\n      puVar10 = PTR_s__0043226c + 0x950;\n      do {\n        uVar4 = (*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (uVar4 == 0) goto LAB_00251e58;\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        p_Var12 = (_Base_ptr)(*(code *)puVar1)(p_Var12);\n      } while ((_Rb_tree_header *)p_Var12 != p_Var11);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(input_objects,this);\n    return true;\n  }\nLAB_00251e58:\n  return SUB41(uVar4,0);\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "Input_file *pIVar6;" type_identifier (pointer_declarator "*pIVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_>_9\n  *paVar9;" (binary_expression "allocator<char>_>_9\n  *paVar9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar9" identifier * identifier)) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "_Rb_tree_header *p_Var11;" type_identifier (pointer_declarator "*p_Var11" * identifier) ;) (declaration "_Base_ptr p_Var12;" type_identifier identifier ;) (declaration "Archive *local_c8 [2];" type_identifier (pointer_declarator "*local_c8 [2]" * (array_declarator "local_c8 [2]" identifier [ number_literal ])) ;) (declaration "undefined4 local_c0;" type_identifier identifier ;) (declaration "undefined4 local_bc;" type_identifier identifier ;) (declaration "undefined1 *local_b8;" type_identifier (pointer_declarator "*local_b8" * identifier) ;) (declaration "undefined4 local_b4;" type_identifier identifier ;) (declaration "undefined1 local_b0 [16];" type_identifier (array_declarator "local_b0 [16]" identifier [ number_literal ]) ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "uint local_9c;" type_identifier identifier ;) (declaration "const_iterator p;" type_identifier identifier ;) (expression_statement "puVar10 = PTR_archive_start_004356ac;" (assignment_expression "puVar10 = PTR_archive_start_004356ac" identifier = identifier) ;) (expression_statement "uVar4 = (uint)this->included_all_members_;" (assignment_expression "uVar4 = (uint)this->included_all_members_" identifier = (cast_expression "(uint)this->included_all_members_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this->included_all_members_" identifier -> field_identifier))) ;) (if_statement "if (uVar4 == 0) {\n    this->included_all_members_ = true;\n    (*(code *)puVar10)(input_objects,this);\n    puVar5 = PTR_include_member_004356b0;\n    puVar2 = PTR_total_members_00435648;\n    puVar10 = PTR_read_next_header_00435640;\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) {\n      paVar9 = &p.header_.name.field_2;\n      p.off_._4_4_ = 8;\n      p.off_._0_4_ = 0;\n      p.header_.name._M_string_length = 0;\n                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */\n      p.header_.name.field_2._M_local_buf[0] = '\0';\n      p.archive_ = this;\n      p.header_.name._M_dataplus._M_p = (pointer)paVar9;\n      const_iterator::read_next_header(&p);\n      puVar2 = PTR_include_member_004356b0;\n      puVar5 = PTR_s__0043226c + 0x950;\n      do {\n        puVar1 = PTR_total_members_00435648;\n        pIVar6 = this->input_file_;\n        while( true ) {\n          local_b4 = 0;\n          local_b0[0] = 0;\n          local_bc = (undefined4)(pIVar6->file_).size_;\n          local_c0 = *(undefined4 *)&(pIVar6->file_).size_;\n          local_c8[0] = this;\n          local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n          (*(code *)puVar10)(local_c8);\n          uVar8 = p.off_._4_4_;\n          iVar3 = p.off_._0_4_;\n          uVar4 = local_9c;\n          iVar7 = local_a0;\n          if (local_b8 != local_b0) {\n            (*(code *)PTR_operator_delete_0043228c)();\n          }\n          if ((iVar3 == iVar7) && (uVar8 == uVar4)) {\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n          iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5);\n          if (iVar7 == 0) {\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }\n          pIVar6 = (p.archive_)->input_file_;\n          *(int *)puVar1 = *(int *)puVar1 + 1;\n          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;\n          pIVar6 = this->input_file_;\n        }\n        uVar8 = p.off_._4_4_ + 0x3c;\n        p.off_._0_4_ = (uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_;\n        uVar4 = uVar8;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          uVar4 = uVar8 + p.header_.size._4_4_;\n          p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;\n        }\n        p.off_._4_4_ = uVar4;\n        if ((uVar4 & 1) != 0) {\n          p.off_._4_4_ = uVar4 + 1;\n          p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;\n        }\n        (*(code *)puVar10)(&p);\n      } while( true );\n    }\n    p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n    p_Var11 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n    if ((_Rb_tree_header *)p_Var12 != p_Var11) {\n      puVar10 = PTR_s__0043226c + 0x950;\n      do {\n        uVar4 = (*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (uVar4 == 0) goto LAB_00251e58;\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        p_Var12 = (_Base_ptr)(*(code *)puVar1)(p_Var12);\n      } while ((_Rb_tree_header *)p_Var12 != p_Var11);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(input_objects,this);\n    return true;\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    this->included_all_members_ = true;\n    (*(code *)puVar10)(input_objects,this);\n    puVar5 = PTR_include_member_004356b0;\n    puVar2 = PTR_total_members_00435648;\n    puVar10 = PTR_read_next_header_00435640;\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) {\n      paVar9 = &p.header_.name.field_2;\n      p.off_._4_4_ = 8;\n      p.off_._0_4_ = 0;\n      p.header_.name._M_string_length = 0;\n                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */\n      p.header_.name.field_2._M_local_buf[0] = '\0';\n      p.archive_ = this;\n      p.header_.name._M_dataplus._M_p = (pointer)paVar9;\n      const_iterator::read_next_header(&p);\n      puVar2 = PTR_include_member_004356b0;\n      puVar5 = PTR_s__0043226c + 0x950;\n      do {\n        puVar1 = PTR_total_members_00435648;\n        pIVar6 = this->input_file_;\n        while( true ) {\n          local_b4 = 0;\n          local_b0[0] = 0;\n          local_bc = (undefined4)(pIVar6->file_).size_;\n          local_c0 = *(undefined4 *)&(pIVar6->file_).size_;\n          local_c8[0] = this;\n          local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n          (*(code *)puVar10)(local_c8);\n          uVar8 = p.off_._4_4_;\n          iVar3 = p.off_._0_4_;\n          uVar4 = local_9c;\n          iVar7 = local_a0;\n          if (local_b8 != local_b0) {\n            (*(code *)PTR_operator_delete_0043228c)();\n          }\n          if ((iVar3 == iVar7) && (uVar8 == uVar4)) {\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n          iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5);\n          if (iVar7 == 0) {\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }\n          pIVar6 = (p.archive_)->input_file_;\n          *(int *)puVar1 = *(int *)puVar1 + 1;\n          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;\n          pIVar6 = this->input_file_;\n        }\n        uVar8 = p.off_._4_4_ + 0x3c;\n        p.off_._0_4_ = (uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_;\n        uVar4 = uVar8;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          uVar4 = uVar8 + p.header_.size._4_4_;\n          p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;\n        }\n        p.off_._4_4_ = uVar4;\n        if ((uVar4 & 1) != 0) {\n          p.off_._4_4_ = uVar4 + 1;\n          p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;\n        }\n        (*(code *)puVar10)(&p);\n      } while( true );\n    }\n    p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n    p_Var11 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n    if ((_Rb_tree_header *)p_Var12 != p_Var11) {\n      puVar10 = PTR_s__0043226c + 0x950;\n      do {\n        uVar4 = (*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (uVar4 == 0) goto LAB_00251e58;\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        p_Var12 = (_Base_ptr)(*(code *)puVar1)(p_Var12);\n      } while ((_Rb_tree_header *)p_Var12 != p_Var11);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(input_objects,this);\n    return true;\n  }" { (expression_statement "this->included_all_members_ = true;" (assignment_expression "this->included_all_members_ = true" (field_expression "this->included_all_members_" identifier -> field_identifier) = true) ;) (expression_statement "(*(code *)puVar10)(input_objects,this);" (call_expression "(*(code *)puVar10)(input_objects,this)" (parenthesized_expression "(*(code *)puVar10)" ( (pointer_expression "*(code *)puVar10" * (cast_expression "(code *)puVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(input_objects,this)" ( identifier , identifier ))) ;) (expression_statement "puVar5 = PTR_include_member_004356b0;" (assignment_expression "puVar5 = PTR_include_member_004356b0" identifier = identifier) ;) (expression_statement "puVar2 = PTR_total_members_00435648;" (assignment_expression "puVar2 = PTR_total_members_00435648" identifier = identifier) ;) (expression_statement "puVar10 = PTR_read_next_header_00435640;" (assignment_expression "puVar10 = PTR_read_next_header_00435640" identifier = identifier) ;) (if_statement "if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) {\n      paVar9 = &p.header_.name.field_2;\n      p.off_._4_4_ = 8;\n      p.off_._0_4_ = 0;\n      p.header_.name._M_string_length = 0;\n                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */\n      p.header_.name.field_2._M_local_buf[0] = '\0';\n      p.archive_ = this;\n      p.header_.name._M_dataplus._M_p = (pointer)paVar9;\n      const_iterator::read_next_header(&p);\n      puVar2 = PTR_include_member_004356b0;\n      puVar5 = PTR_s__0043226c + 0x950;\n      do {\n        puVar1 = PTR_total_members_00435648;\n        pIVar6 = this->input_file_;\n        while( true ) {\n          local_b4 = 0;\n          local_b0[0] = 0;\n          local_bc = (undefined4)(pIVar6->file_).size_;\n          local_c0 = *(undefined4 *)&(pIVar6->file_).size_;\n          local_c8[0] = this;\n          local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n          (*(code *)puVar10)(local_c8);\n          uVar8 = p.off_._4_4_;\n          iVar3 = p.off_._0_4_;\n          uVar4 = local_9c;\n          iVar7 = local_a0;\n          if (local_b8 != local_b0) {\n            (*(code *)PTR_operator_delete_0043228c)();\n          }\n          if ((iVar3 == iVar7) && (uVar8 == uVar4)) {\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n          iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5);\n          if (iVar7 == 0) {\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }\n          pIVar6 = (p.archive_)->input_file_;\n          *(int *)puVar1 = *(int *)puVar1 + 1;\n          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;\n          pIVar6 = this->input_file_;\n        }\n        uVar8 = p.off_._4_4_ + 0x3c;\n        p.off_._0_4_ = (uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_;\n        uVar4 = uVar8;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          uVar4 = uVar8 + p.header_.size._4_4_;\n          p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;\n        }\n        p.off_._4_4_ = uVar4;\n        if ((uVar4 & 1) != 0) {\n          p.off_._4_4_ = uVar4 + 1;\n          p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;\n        }\n        (*(code *)puVar10)(&p);\n      } while( true );\n    }" if (parenthesized_expression "((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0)" ( (binary_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n      paVar9 = &p.header_.name.field_2;\n      p.off_._4_4_ = 8;\n      p.off_._0_4_ = 0;\n      p.header_.name._M_string_length = 0;\n                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */\n      p.header_.name.field_2._M_local_buf[0] = '\0';\n      p.archive_ = this;\n      p.header_.name._M_dataplus._M_p = (pointer)paVar9;\n      const_iterator::read_next_header(&p);\n      puVar2 = PTR_include_member_004356b0;\n      puVar5 = PTR_s__0043226c + 0x950;\n      do {\n        puVar1 = PTR_total_members_00435648;\n        pIVar6 = this->input_file_;\n        while( true ) {\n          local_b4 = 0;\n          local_b0[0] = 0;\n          local_bc = (undefined4)(pIVar6->file_).size_;\n          local_c0 = *(undefined4 *)&(pIVar6->file_).size_;\n          local_c8[0] = this;\n          local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n          (*(code *)puVar10)(local_c8);\n          uVar8 = p.off_._4_4_;\n          iVar3 = p.off_._0_4_;\n          uVar4 = local_9c;\n          iVar7 = local_a0;\n          if (local_b8 != local_b0) {\n            (*(code *)PTR_operator_delete_0043228c)();\n          }\n          if ((iVar3 == iVar7) && (uVar8 == uVar4)) {\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n          iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5);\n          if (iVar7 == 0) {\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }\n          pIVar6 = (p.archive_)->input_file_;\n          *(int *)puVar1 = *(int *)puVar1 + 1;\n          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;\n          pIVar6 = this->input_file_;\n        }\n        uVar8 = p.off_._4_4_ + 0x3c;\n        p.off_._0_4_ = (uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_;\n        uVar4 = uVar8;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          uVar4 = uVar8 + p.header_.size._4_4_;\n          p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;\n        }\n        p.off_._4_4_ = uVar4;\n        if ((uVar4 & 1) != 0) {\n          p.off_._4_4_ = uVar4 + 1;\n          p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;\n        }\n        (*(code *)puVar10)(&p);\n      } while( true );\n    }" { (expression_statement "paVar9 = &p.header_.name.field_2;" (assignment_expression "paVar9 = &p.header_.name.field_2" identifier = (pointer_expression "&p.header_.name.field_2" & (field_expression "p.header_.name.field_2" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "p.off_._4_4_ = 8;" (assignment_expression "p.off_._4_4_ = 8" (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "p.off_._0_4_ = 0;" (assignment_expression "p.off_._0_4_ = 0" (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "p.header_.name._M_string_length = 0;" (assignment_expression "p.header_.name._M_string_length = 0" (field_expression "p.header_.name._M_string_length" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) comment (expression_statement "p.header_.name.field_2._M_local_buf[0] = '\0';" (assignment_expression "p.header_.name.field_2._M_local_buf[0] = '\0'" (subscript_expression "p.header_.name.field_2._M_local_buf[0]" (field_expression "p.header_.name.field_2._M_local_buf" (field_expression "p.header_.name.field_2" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "p.archive_ = this;" (assignment_expression "p.archive_ = this" (field_expression "p.archive_" identifier . field_identifier) = identifier) ;) (expression_statement "p.header_.name._M_dataplus._M_p = (pointer)paVar9;" (assignment_expression "p.header_.name._M_dataplus._M_p = (pointer)paVar9" (field_expression "p.header_.name._M_dataplus._M_p" (field_expression "p.header_.name._M_dataplus" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar9" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (labeled_statement "const_iterator::read_next_header(&p);" statement_identifier : (ERROR ":" :) (expression_statement "read_next_header(&p);" (call_expression "read_next_header(&p)" identifier (argument_list "(&p)" ( (pointer_expression "&p" & identifier) ))) ;)) (expression_statement "puVar2 = PTR_include_member_004356b0;" (assignment_expression "puVar2 = PTR_include_member_004356b0" identifier = identifier) ;) (expression_statement "puVar5 = PTR_s__0043226c + 0x950;" (assignment_expression "puVar5 = PTR_s__0043226c + 0x950" identifier = (binary_expression "PTR_s__0043226c + 0x950" identifier + number_literal)) ;) (do_statement "do {\n        puVar1 = PTR_total_members_00435648;\n        pIVar6 = this->input_file_;\n        while( true ) {\n          local_b4 = 0;\n          local_b0[0] = 0;\n          local_bc = (undefined4)(pIVar6->file_).size_;\n          local_c0 = *(undefined4 *)&(pIVar6->file_).size_;\n          local_c8[0] = this;\n          local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n          (*(code *)puVar10)(local_c8);\n          uVar8 = p.off_._4_4_;\n          iVar3 = p.off_._0_4_;\n          uVar4 = local_9c;\n          iVar7 = local_a0;\n          if (local_b8 != local_b0) {\n            (*(code *)PTR_operator_delete_0043228c)();\n          }\n          if ((iVar3 == iVar7) && (uVar8 == uVar4)) {\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n          iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5);\n          if (iVar7 == 0) {\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }\n          pIVar6 = (p.archive_)->input_file_;\n          *(int *)puVar1 = *(int *)puVar1 + 1;\n          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;\n          pIVar6 = this->input_file_;\n        }\n        uVar8 = p.off_._4_4_ + 0x3c;\n        p.off_._0_4_ = (uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_;\n        uVar4 = uVar8;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          uVar4 = uVar8 + p.header_.size._4_4_;\n          p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;\n        }\n        p.off_._4_4_ = uVar4;\n        if ((uVar4 & 1) != 0) {\n          p.off_._4_4_ = uVar4 + 1;\n          p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;\n        }\n        (*(code *)puVar10)(&p);\n      } while( true );" do (compound_statement "{\n        puVar1 = PTR_total_members_00435648;\n        pIVar6 = this->input_file_;\n        while( true ) {\n          local_b4 = 0;\n          local_b0[0] = 0;\n          local_bc = (undefined4)(pIVar6->file_).size_;\n          local_c0 = *(undefined4 *)&(pIVar6->file_).size_;\n          local_c8[0] = this;\n          local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n          (*(code *)puVar10)(local_c8);\n          uVar8 = p.off_._4_4_;\n          iVar3 = p.off_._0_4_;\n          uVar4 = local_9c;\n          iVar7 = local_a0;\n          if (local_b8 != local_b0) {\n            (*(code *)PTR_operator_delete_0043228c)();\n          }\n          if ((iVar3 == iVar7) && (uVar8 == uVar4)) {\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n          iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5);\n          if (iVar7 == 0) {\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }\n          pIVar6 = (p.archive_)->input_file_;\n          *(int *)puVar1 = *(int *)puVar1 + 1;\n          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;\n          pIVar6 = this->input_file_;\n        }\n        uVar8 = p.off_._4_4_ + 0x3c;\n        p.off_._0_4_ = (uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_;\n        uVar4 = uVar8;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          uVar4 = uVar8 + p.header_.size._4_4_;\n          p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;\n        }\n        p.off_._4_4_ = uVar4;\n        if ((uVar4 & 1) != 0) {\n          p.off_._4_4_ = uVar4 + 1;\n          p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;\n        }\n        (*(code *)puVar10)(&p);\n      }" { (expression_statement "puVar1 = PTR_total_members_00435648;" (assignment_expression "puVar1 = PTR_total_members_00435648" identifier = identifier) ;) (expression_statement "pIVar6 = this->input_file_;" (assignment_expression "pIVar6 = this->input_file_" identifier = (field_expression "this->input_file_" identifier -> field_identifier)) ;) (while_statement "while( true ) {\n          local_b4 = 0;\n          local_b0[0] = 0;\n          local_bc = (undefined4)(pIVar6->file_).size_;\n          local_c0 = *(undefined4 *)&(pIVar6->file_).size_;\n          local_c8[0] = this;\n          local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n          (*(code *)puVar10)(local_c8);\n          uVar8 = p.off_._4_4_;\n          iVar3 = p.off_._0_4_;\n          uVar4 = local_9c;\n          iVar7 = local_a0;\n          if (local_b8 != local_b0) {\n            (*(code *)PTR_operator_delete_0043228c)();\n          }\n          if ((iVar3 == iVar7) && (uVar8 == uVar4)) {\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n          iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5);\n          if (iVar7 == 0) {\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }\n          pIVar6 = (p.archive_)->input_file_;\n          *(int *)puVar1 = *(int *)puVar1 + 1;\n          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;\n          pIVar6 = this->input_file_;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          local_b4 = 0;\n          local_b0[0] = 0;\n          local_bc = (undefined4)(pIVar6->file_).size_;\n          local_c0 = *(undefined4 *)&(pIVar6->file_).size_;\n          local_c8[0] = this;\n          local_b8 = local_b0;\n                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */\n          (*(code *)puVar10)(local_c8);\n          uVar8 = p.off_._4_4_;\n          iVar3 = p.off_._0_4_;\n          uVar4 = local_9c;\n          iVar7 = local_a0;\n          if (local_b8 != local_b0) {\n            (*(code *)PTR_operator_delete_0043228c)();\n          }\n          if ((iVar3 == iVar7) && (uVar8 == uVar4)) {\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }\n                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */\n          iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5);\n          if (iVar7 == 0) {\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }\n          pIVar6 = (p.archive_)->input_file_;\n          *(int *)puVar1 = *(int *)puVar1 + 1;\n          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;\n          pIVar6 = this->input_file_;\n        }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "local_b0[0] = 0;" (assignment_expression "local_b0[0] = 0" (subscript_expression "local_b0[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_bc = (undefined4)(pIVar6->file_).size_;" (assignment_expression "local_bc = (undefined4)(pIVar6->file_).size_" identifier = (field_expression "(undefined4)(pIVar6->file_).size_" (call_expression "(undefined4)(pIVar6->file_)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "(pIVar6->file_)" ( (field_expression "pIVar6->file_" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "local_c0 = *(undefined4 *)&(pIVar6->file_).size_;" (assignment_expression "local_c0 = *(undefined4 *)&(pIVar6->file_).size_" identifier = (pointer_expression "*(undefined4 *)&(pIVar6->file_).size_" * (cast_expression "(undefined4 *)&(pIVar6->file_).size_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pIVar6->file_).size_" & (field_expression "(pIVar6->file_).size_" (parenthesized_expression "(pIVar6->file_)" ( (field_expression "pIVar6->file_" identifier -> field_identifier) )) . field_identifier))))) ;) (expression_statement "local_c8[0] = this;" (assignment_expression "local_c8[0] = this" (subscript_expression "local_c8[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b8 = local_b0;" (assignment_expression "local_b8 = local_b0" identifier = identifier) ;) comment (expression_statement "(*(code *)puVar10)(local_c8);" (call_expression "(*(code *)puVar10)(local_c8)" (parenthesized_expression "(*(code *)puVar10)" ( (pointer_expression "*(code *)puVar10" * (cast_expression "(code *)puVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_c8)" ( identifier ))) ;) (expression_statement "uVar8 = p.off_._4_4_;" (assignment_expression "uVar8 = p.off_._4_4_" identifier = (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier)) ;) (expression_statement "iVar3 = p.off_._0_4_;" (assignment_expression "iVar3 = p.off_._0_4_" identifier = (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier)) ;) (expression_statement "uVar4 = local_9c;" (assignment_expression "uVar4 = local_9c" identifier = identifier) ;) (expression_statement "iVar7 = local_a0;" (assignment_expression "iVar7 = local_a0" identifier = identifier) ;) (if_statement "if (local_b8 != local_b0) {\n            (*(code *)PTR_operator_delete_0043228c)();\n          }" if (parenthesized_expression "(local_b8 != local_b0)" ( (binary_expression "local_b8 != local_b0" identifier != identifier) )) (compound_statement "{\n            (*(code *)PTR_operator_delete_0043228c)();\n          }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (if_statement "if ((iVar3 == iVar7) && (uVar8 == uVar4)) {\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }" if (parenthesized_expression "((iVar3 == iVar7) && (uVar8 == uVar4))" ( (binary_expression "(iVar3 == iVar7) && (uVar8 == uVar4)" (parenthesized_expression "(iVar3 == iVar7)" ( (binary_expression "iVar3 == iVar7" identifier == identifier) )) && (parenthesized_expression "(uVar8 == uVar4)" ( (binary_expression "uVar8 == uVar4" identifier == identifier) ))) )) (compound_statement "{\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251f3c;\n          }" { (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9" (binary_expression "allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n                 *)p.header_.name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "p.header_.name._M_dataplus._M_p" (field_expression "p.header_.name._M_dataplus" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n              (*(code *)PTR_operator_delete_0043228c)();\n            }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_00251f3c;" goto statement_identifier ;) })) comment (expression_statement "iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5);" (assignment_expression "iVar7 = (*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5)" identifier = (call_expression "(*(code *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(this,symtab,layout,input_objects,p.header_.off._0_4_,\n                                    p.header_.off._4_4_,mapfile,0,puVar5)" ( identifier , identifier , identifier , identifier , (field_expression "p.header_.off._0_4_" (field_expression "p.header_.off" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) , (field_expression "p.header_.off._4_4_" (field_expression "p.header_.off" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) , identifier , number_literal , identifier )))) ;) (if_statement "if (iVar7 == 0) {\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar4 = 0;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }\n            goto LAB_00251e58;\n          }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9) {\n              (*(code *)PTR_operator_delete_0043228c)();\n            }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p != paVar9" (binary_expression "allocator<char>_>_9\n                 *)p.header_.name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n                 *)p.header_.name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "p.header_.name._M_dataplus._M_p" (field_expression "p.header_.name._M_dataplus" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n              (*(code *)PTR_operator_delete_0043228c)();\n            }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_00251e58;" goto statement_identifier ;) })) (expression_statement "pIVar6 = (p.archive_)->input_file_;" (assignment_expression "pIVar6 = (p.archive_)->input_file_" identifier = (field_expression "(p.archive_)->input_file_" (parenthesized_expression "(p.archive_)" ( (field_expression "p.archive_" identifier . field_identifier) )) -> field_identifier)) ;) (expression_statement "*(int *)puVar1 = *(int *)puVar1 + 1;" (assignment_expression "*(int *)puVar1 = *(int *)puVar1 + 1" (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "*(int *)puVar1 + 1" (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal)) ;) (if_statement "if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)) break;" if (parenthesized_expression "((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_))" ( (binary_expression "(*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||\n             ((uint)(pIVar6->file_).size_ != p.off_._4_4_)" (parenthesized_expression "(*(int *)&(pIVar6->file_).size_ != p.off_._0_4_)" ( (binary_expression "*(int *)&(pIVar6->file_).size_ != p.off_._0_4_" (pointer_expression "*(int *)&(pIVar6->file_).size_" * (cast_expression "(int *)&(pIVar6->file_).size_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pIVar6->file_).size_" & (field_expression "(pIVar6->file_).size_" (parenthesized_expression "(pIVar6->file_)" ( (field_expression "pIVar6->file_" identifier -> field_identifier) )) . field_identifier)))) != (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier)) )) || (parenthesized_expression "((uint)(pIVar6->file_).size_ != p.off_._4_4_)" ( (binary_expression "(uint)(pIVar6->file_).size_ != p.off_._4_4_" (field_expression "(uint)(pIVar6->file_).size_" (call_expression "(uint)(pIVar6->file_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pIVar6->file_)" ( (field_expression "pIVar6->file_" identifier -> field_identifier) ))) . field_identifier) != (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier)) ))) )) (break_statement "break;" break ;)) (expression_statement "pIVar6 = this->input_file_;" (assignment_expression "pIVar6 = this->input_file_" identifier = (field_expression "this->input_file_" identifier -> field_identifier)) ;) })) (expression_statement "uVar8 = p.off_._4_4_ + 0x3c;" (assignment_expression "uVar8 = p.off_._4_4_ + 0x3c" identifier = (binary_expression "p.off_._4_4_ + 0x3c" (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) + number_literal)) ;) (expression_statement "p.off_._0_4_ = (uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_;" (assignment_expression "p.off_._0_4_ = (uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_" (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = (binary_expression "(uint)(uVar8 < p.off_._4_4_) + p.off_._0_4_" (call_expression "(uint)(uVar8 < p.off_._4_4_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < p.off_._4_4_)" ( (binary_expression "uVar8 < p.off_._4_4_" identifier < (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier)) ))) + (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) (if_statement "if ((p.archive_)->is_thin_archive_ == false) {\n          uVar4 = uVar8 + p.header_.size._4_4_;\n          p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;\n        }" if (parenthesized_expression "((p.archive_)->is_thin_archive_ == false)" ( (binary_expression "(p.archive_)->is_thin_archive_ == false" (field_expression "(p.archive_)->is_thin_archive_" (parenthesized_expression "(p.archive_)" ( (field_expression "p.archive_" identifier . field_identifier) )) -> field_identifier) == false) )) (compound_statement "{\n          uVar4 = uVar8 + p.header_.size._4_4_;\n          p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;\n        }" { (expression_statement "uVar4 = uVar8 + p.header_.size._4_4_;" (assignment_expression "uVar4 = uVar8 + p.header_.size._4_4_" identifier = (binary_expression "uVar8 + p.header_.size._4_4_" identifier + (field_expression "p.header_.size._4_4_" (field_expression "p.header_.size" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_;" (assignment_expression "p.off_._0_4_ = (uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_" (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = (binary_expression "(uint)(uVar4 < uVar8) + p.off_._0_4_ + p.header_.size._0_4_" (binary_expression "(uint)(uVar4 < uVar8) + p.off_._0_4_" (call_expression "(uint)(uVar4 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar8)" ( (binary_expression "uVar4 < uVar8" identifier < identifier) ))) + (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier)) + (field_expression "p.header_.size._0_4_" (field_expression "p.header_.size" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier))) ;) })) (expression_statement "p.off_._4_4_ = uVar4;" (assignment_expression "p.off_._4_4_ = uVar4" (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = identifier) ;) (if_statement "if ((uVar4 & 1) != 0) {\n          p.off_._4_4_ = uVar4 + 1;\n          p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;\n        }" if (parenthesized_expression "((uVar4 & 1) != 0)" ( (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          p.off_._4_4_ = uVar4 + 1;\n          p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;\n        }" { (expression_statement "p.off_._4_4_ = uVar4 + 1;" (assignment_expression "p.off_._4_4_ = uVar4 + 1" (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_;" (assignment_expression "p.off_._0_4_ = (uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_" (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = (binary_expression "(uint)(p.off_._4_4_ < uVar4) + p.off_._0_4_" (call_expression "(uint)(p.off_._4_4_ < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(p.off_._4_4_ < uVar4)" ( (binary_expression "p.off_._4_4_ < uVar4" (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) < identifier) ))) + (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier))) ;) })) (expression_statement "(*(code *)puVar10)(&p);" (call_expression "(*(code *)puVar10)(&p)" (parenthesized_expression "(*(code *)puVar10)" ( (pointer_expression "*(code *)puVar10" * (cast_expression "(code *)puVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&p)" ( (pointer_expression "&p" & identifier) ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;" (assignment_expression "p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" identifier = (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "p_Var11 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var11 = &(this->members_)._M_t._M_impl.super__Rb_tree_header" identifier = (pointer_expression "&(this->members_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (if_statement "if ((_Rb_tree_header *)p_Var12 != p_Var11) {\n      puVar10 = PTR_s__0043226c + 0x950;\n      do {\n        uVar4 = (*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (uVar4 == 0) goto LAB_00251e58;\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        p_Var12 = (_Base_ptr)(*(code *)puVar1)(p_Var12);\n      } while ((_Rb_tree_header *)p_Var12 != p_Var11);\n    }" if (parenthesized_expression "((_Rb_tree_header *)p_Var12 != p_Var11)" ( (binary_expression "(_Rb_tree_header *)p_Var12 != p_Var11" (cast_expression "(_Rb_tree_header *)p_Var12" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) (compound_statement "{\n      puVar10 = PTR_s__0043226c + 0x950;\n      do {\n        uVar4 = (*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (uVar4 == 0) goto LAB_00251e58;\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        p_Var12 = (_Base_ptr)(*(code *)puVar1)(p_Var12);\n      } while ((_Rb_tree_header *)p_Var12 != p_Var11);\n    }" { (expression_statement "puVar10 = PTR_s__0043226c + 0x950;" (assignment_expression "puVar10 = PTR_s__0043226c + 0x950" identifier = (binary_expression "PTR_s__0043226c + 0x950" identifier + number_literal)) ;) (do_statement "do {\n        uVar4 = (*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (uVar4 == 0) goto LAB_00251e58;\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        p_Var12 = (_Base_ptr)(*(code *)puVar1)(p_Var12);\n      } while ((_Rb_tree_header *)p_Var12 != p_Var11);" do (compound_statement "{\n        uVar4 = (*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (uVar4 == 0) goto LAB_00251e58;\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        p_Var12 = (_Base_ptr)(*(code *)puVar1)(p_Var12);\n      }" { (expression_statement "uVar4 = (*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10);" (assignment_expression "uVar4 = (*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10)" identifier = (call_expression "(*(code *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(this,symtab,layout,input_objects,p_Var12[1]._M_color,\n                                  p_Var12[1]._M_parent,mapfile,0,puVar10)" ( identifier , identifier , identifier , identifier , (field_expression "p_Var12[1]._M_color" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier) , (field_expression "p_Var12[1]._M_parent" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier) , identifier , number_literal , identifier )))) ;) (expression_statement "puVar1 = PTR__Rb_tree_increment_00432d90;" (assignment_expression "puVar1 = PTR__Rb_tree_increment_00432d90" identifier = identifier) ;) (if_statement "if (uVar4 == 0) goto LAB_00251e58;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00251e58;" goto statement_identifier ;)) (expression_statement "*(int *)puVar2 = *(int *)puVar2 + 1;" (assignment_expression "*(int *)puVar2 = *(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "*(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal)) ;) (expression_statement "p_Var12 = (_Base_ptr)(*(code *)puVar1)(p_Var12);" (assignment_expression "p_Var12 = (_Base_ptr)(*(code *)puVar1)(p_Var12)" identifier = (call_expression "(_Base_ptr)(*(code *)puVar1)(p_Var12)" (call_expression "(_Base_ptr)(*(code *)puVar1)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(p_Var12)" ( identifier )))) ;) }) while (parenthesized_expression "((_Rb_tree_header *)p_Var12 != p_Var11)" ( (binary_expression "(_Rb_tree_header *)p_Var12 != p_Var11" (cast_expression "(_Rb_tree_header *)p_Var12" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) })) (labeled_statement "LAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(input_objects,this);" statement_identifier : (expression_statement "(*(code *)PTR_archive_stop_004356b4)(input_objects,this);" (call_expression "(*(code *)PTR_archive_stop_004356b4)(input_objects,this)" (parenthesized_expression "(*(code *)PTR_archive_stop_004356b4)" ( (pointer_expression "*(code *)PTR_archive_stop_004356b4" * (cast_expression "(code *)PTR_archive_stop_004356b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(input_objects,this)" ( identifier , identifier ))) ;)) (return_statement "return true;" return true ;) })) (labeled_statement "LAB_00251e58:\n  return SUB41(uVar4,0);" statement_identifier : (return_statement "return SUB41(uVar4,0);" return (call_expression "SUB41(uVar4,0)" identifier (argument_list "(uVar4,0)" ( identifier , number_literal ))) ;)) })))
(translation_unit "uint __thiscall\ngold::Archive::include_all_members\n          (Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,\n          Mapfile *param_4)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined *puVar7;\n  Archive *pAVar8;\n  Archive *local_c8 [2];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined1 *local_b8;\n  undefined4 local_b4;\n  undefined1 local_b0 [16];\n  int local_a0;\n  uint local_9c;\n  Archive *local_88 [2];\n  int local_80;\n  uint local_7c;\n  undefined1 *local_78;\n  undefined4 local_74;\n  undefined1 local_70 [16];\n  undefined4 local_60;\n  undefined4 local_5c;\n  int local_50;\n  int local_4c;\n  code *local_48;\n  Archive **local_44;\n  uint local_40;\n  uint local_3c;\n  undefined *local_38;\n  code *local_34;\n  const_iterator *local_30;\n  undefined1 *local_2c;\n  \n  puVar2 = PTR_archive_start_004356ac;\n  if ((byte)this[0xd5] != 0) {\n    return (uint)(byte)this[0xd5];\n  }\n  this[0xd5] = (Archive)0x1;\n  (*(code *)puVar2)(param_3,this);\n  puVar2 = PTR_total_members_00435648;\n  if (*(int *)(this + 0xa8) != 0) {\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }\n  local_48 = (code *)PTR_read_next_header_00435640;\n  local_78 = local_70;\n  local_30 = (const_iterator *)local_88;\n  local_7c = 8;\n  local_80 = 0;\n  local_74 = 0;\n                    \n  local_70[0] = 0;\n  local_88[0] = this;\n  local_2c = local_78;\n  const_iterator::read_next_header(local_30);\n  local_44 = local_c8;\n  local_34 = (code *)PTR_include_member_004356b0;\n  local_38 = PTR_DAT_0043226c + 0x950;\n  do {\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  } while( true );\n}\n\n" (function_definition "uint __thiscall\ngold::Archive::include_all_members\n          (Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,\n          Mapfile *param_4)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined *puVar7;\n  Archive *pAVar8;\n  Archive *local_c8 [2];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined1 *local_b8;\n  undefined4 local_b4;\n  undefined1 local_b0 [16];\n  int local_a0;\n  uint local_9c;\n  Archive *local_88 [2];\n  int local_80;\n  uint local_7c;\n  undefined1 *local_78;\n  undefined4 local_74;\n  undefined1 local_70 [16];\n  undefined4 local_60;\n  undefined4 local_5c;\n  int local_50;\n  int local_4c;\n  code *local_48;\n  Archive **local_44;\n  uint local_40;\n  uint local_3c;\n  undefined *local_38;\n  code *local_34;\n  const_iterator *local_30;\n  undefined1 *local_2c;\n  \n  puVar2 = PTR_archive_start_004356ac;\n  if ((byte)this[0xd5] != 0) {\n    return (uint)(byte)this[0xd5];\n  }\n  this[0xd5] = (Archive)0x1;\n  (*(code *)puVar2)(param_3,this);\n  puVar2 = PTR_total_members_00435648;\n  if (*(int *)(this + 0xa8) != 0) {\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }\n  local_48 = (code *)PTR_read_next_header_00435640;\n  local_78 = local_70;\n  local_30 = (const_iterator *)local_88;\n  local_7c = 8;\n  local_80 = 0;\n  local_74 = 0;\n                    \n  local_70[0] = 0;\n  local_88[0] = this;\n  local_2c = local_78;\n  const_iterator::read_next_header(local_30);\n  local_44 = local_c8;\n  local_34 = (code *)PTR_include_member_004356b0;\n  local_38 = PTR_DAT_0043226c + 0x950;\n  do {\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  } while( true );\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Archive::" identifier : : identifier : :) (function_declarator "include_all_members\n          (Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,\n          Mapfile *param_4)" identifier (parameter_list "(Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,\n          Mapfile *param_4)" ( (parameter_declaration "Archive *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "Layout *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "Input_objects *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "Mapfile *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined *puVar7;\n  Archive *pAVar8;\n  Archive *local_c8 [2];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined1 *local_b8;\n  undefined4 local_b4;\n  undefined1 local_b0 [16];\n  int local_a0;\n  uint local_9c;\n  Archive *local_88 [2];\n  int local_80;\n  uint local_7c;\n  undefined1 *local_78;\n  undefined4 local_74;\n  undefined1 local_70 [16];\n  undefined4 local_60;\n  undefined4 local_5c;\n  int local_50;\n  int local_4c;\n  code *local_48;\n  Archive **local_44;\n  uint local_40;\n  uint local_3c;\n  undefined *local_38;\n  code *local_34;\n  const_iterator *local_30;\n  undefined1 *local_2c;\n  \n  puVar2 = PTR_archive_start_004356ac;\n  if ((byte)this[0xd5] != 0) {\n    return (uint)(byte)this[0xd5];\n  }\n  this[0xd5] = (Archive)0x1;\n  (*(code *)puVar2)(param_3,this);\n  puVar2 = PTR_total_members_00435648;\n  if (*(int *)(this + 0xa8) != 0) {\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }\n  local_48 = (code *)PTR_read_next_header_00435640;\n  local_78 = local_70;\n  local_30 = (const_iterator *)local_88;\n  local_7c = 8;\n  local_80 = 0;\n  local_74 = 0;\n                    \n  local_70[0] = 0;\n  local_88[0] = this;\n  local_2c = local_78;\n  const_iterator::read_next_header(local_30);\n  local_44 = local_c8;\n  local_34 = (code *)PTR_include_member_004356b0;\n  local_38 = PTR_DAT_0043226c + 0x950;\n  do {\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  } while( true );\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "Archive *pAVar8;" type_identifier (pointer_declarator "*pAVar8" * identifier) ;) (declaration "Archive *local_c8 [2];" type_identifier (pointer_declarator "*local_c8 [2]" * (array_declarator "local_c8 [2]" identifier [ number_literal ])) ;) (declaration "undefined4 local_c0;" type_identifier identifier ;) (declaration "undefined4 local_bc;" type_identifier identifier ;) (declaration "undefined1 *local_b8;" type_identifier (pointer_declarator "*local_b8" * identifier) ;) (declaration "undefined4 local_b4;" type_identifier identifier ;) (declaration "undefined1 local_b0 [16];" type_identifier (array_declarator "local_b0 [16]" identifier [ number_literal ]) ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "uint local_9c;" type_identifier identifier ;) (declaration "Archive *local_88 [2];" type_identifier (pointer_declarator "*local_88 [2]" * (array_declarator "local_88 [2]" identifier [ number_literal ])) ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "undefined4 local_74;" type_identifier identifier ;) (declaration "undefined1 local_70 [16];" type_identifier (array_declarator "local_70 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "Archive **local_44;" type_identifier (pointer_declarator "**local_44" * (pointer_declarator "*local_44" * identifier)) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "undefined *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "code *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "const_iterator *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined1 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar2 = PTR_archive_start_004356ac;" (assignment_expression "puVar2 = PTR_archive_start_004356ac" identifier = identifier) ;) (if_statement "if ((byte)this[0xd5] != 0) {\n    return (uint)(byte)this[0xd5];\n  }" if (parenthesized_expression "((byte)this[0xd5] != 0)" ( (binary_expression "(byte)this[0xd5] != 0" (cast_expression "(byte)this[0xd5]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "this[0xd5]" identifier [ number_literal ])) != number_literal) )) (compound_statement "{\n    return (uint)(byte)this[0xd5];\n  }" { (return_statement "return (uint)(byte)this[0xd5];" return (cast_expression "(uint)(byte)this[0xd5]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)this[0xd5]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "this[0xd5]" identifier [ number_literal ]))) ;) })) (expression_statement "this[0xd5] = (Archive)0x1;" (assignment_expression "this[0xd5] = (Archive)0x1" (subscript_expression "this[0xd5]" identifier [ number_literal ]) = (cast_expression "(Archive)0x1" ( (type_descriptor "Archive" type_identifier) ) number_literal)) ;) (expression_statement "(*(code *)puVar2)(param_3,this);" (call_expression "(*(code *)puVar2)(param_3,this)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,this)" ( identifier , identifier ))) ;) (expression_statement "puVar2 = PTR_total_members_00435648;" (assignment_expression "puVar2 = PTR_total_members_00435648" identifier = identifier) ;) (if_statement "if (*(int *)(this + 0xa8) != 0) {\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }" if (parenthesized_expression "(*(int *)(this + 0xa8) != 0)" ( (binary_expression "*(int *)(this + 0xa8) != 0" (pointer_expression "*(int *)(this + 0xa8)" * (cast_expression "(int *)(this + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xa8)" ( (binary_expression "this + 0xa8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }" { (expression_statement "pAVar8 = *(Archive **)(this + 0xa0);" (assignment_expression "pAVar8 = *(Archive **)(this + 0xa0)" identifier = (pointer_expression "*(Archive **)(this + 0xa0)" * (cast_expression "(Archive **)(this + 0xa0)" ( (type_descriptor "Archive **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xa0)" ( (binary_expression "this + 0xa0" identifier + number_literal) ))))) ;) (if_statement "if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }" if (parenthesized_expression "(pAVar8 != this + 0x98)" ( (binary_expression "pAVar8 != this + 0x98" identifier != (binary_expression "this + 0x98" identifier + number_literal)) )) (compound_statement "{\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }" { (expression_statement "local_48 = (code *)PTR_include_member_004356b0;" (assignment_expression "local_48 = (code *)PTR_include_member_004356b0" identifier = (cast_expression "(code *)PTR_include_member_004356b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar7 = PTR_DAT_0043226c + 0x950;" (assignment_expression "puVar7 = PTR_DAT_0043226c + 0x950" identifier = (binary_expression "PTR_DAT_0043226c + 0x950" identifier + number_literal)) ;) (do_statement "do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);" do (compound_statement "{\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      }" { (expression_statement "iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);" (assignment_expression "iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7)" identifier = (call_expression "(*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7)" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7)" ( identifier , identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(pAVar8 + 0x10)" * (cast_expression "(undefined4 *)(pAVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar8 + 0x10)" ( (binary_expression "pAVar8 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(pAVar8 + 0x14)" * (cast_expression "(undefined4 *)(pAVar8 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar8 + 0x14)" ( (binary_expression "pAVar8 + 0x14" identifier + number_literal) )))) , identifier , number_literal , identifier )))) ;) (expression_statement "puVar1 = PTR__Rb_tree_increment_00432d90;" (assignment_expression "puVar1 = PTR__Rb_tree_increment_00432d90" identifier = identifier) ;) (if_statement "if (iVar4 == 0) {\n          return 0;\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(int *)puVar2 = *(int *)puVar2 + 1;" (assignment_expression "*(int *)puVar2 = *(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "*(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal)) ;) (expression_statement "pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);" (assignment_expression "pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8)" identifier = (cast_expression "(Archive *)(*(code *)puVar1)(pAVar8)" ( (type_descriptor "Archive *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)puVar1)(pAVar8)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pAVar8)" ( identifier ))))) ;) }) while (parenthesized_expression "(pAVar8 != this + 0x98)" ( (binary_expression "pAVar8 != this + 0x98" identifier != (binary_expression "this + 0x98" identifier + number_literal)) )) ;) })) (labeled_statement "LAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);" statement_identifier : (expression_statement "(*(code *)PTR_archive_stop_004356b4)(param_3,this);" (call_expression "(*(code *)PTR_archive_stop_004356b4)(param_3,this)" (parenthesized_expression "(*(code *)PTR_archive_stop_004356b4)" ( (pointer_expression "*(code *)PTR_archive_stop_004356b4" * (cast_expression "(code *)PTR_archive_stop_004356b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,this)" ( identifier , identifier ))) ;)) (return_statement "return 1;" return number_literal ;) })) (expression_statement "local_48 = (code *)PTR_read_next_header_00435640;" (assignment_expression "local_48 = (code *)PTR_read_next_header_00435640" identifier = (cast_expression "(code *)PTR_read_next_header_00435640" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_78 = local_70;" (assignment_expression "local_78 = local_70" identifier = identifier) ;) (expression_statement "local_30 = (const_iterator *)local_88;" (assignment_expression "local_30 = (const_iterator *)local_88" identifier = (cast_expression "(const_iterator *)local_88" ( (type_descriptor "const_iterator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_7c = 8;" (assignment_expression "local_7c = 8" identifier = number_literal) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (expression_statement "local_70[0] = 0;" (assignment_expression "local_70[0] = 0" (subscript_expression "local_70[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_88[0] = this;" (assignment_expression "local_88[0] = this" (subscript_expression "local_88[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_2c = local_78;" (assignment_expression "local_2c = local_78" identifier = identifier) ;) (labeled_statement "const_iterator::read_next_header(local_30);" statement_identifier : (ERROR ":" :) (expression_statement "read_next_header(local_30);" (call_expression "read_next_header(local_30)" identifier (argument_list "(local_30)" ( identifier ))) ;)) (expression_statement "local_44 = local_c8;" (assignment_expression "local_44 = local_c8" identifier = identifier) ;) (expression_statement "local_34 = (code *)PTR_include_member_004356b0;" (assignment_expression "local_34 = (code *)PTR_include_member_004356b0" identifier = (cast_expression "(code *)PTR_include_member_004356b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_38 = PTR_DAT_0043226c + 0x950;" (assignment_expression "local_38 = PTR_DAT_0043226c + 0x950" identifier = (binary_expression "PTR_DAT_0043226c + 0x950" identifier + number_literal)) ;) (do_statement "do {\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  } while( true );" do (compound_statement "{\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  }" { (expression_statement "puVar2 = PTR_total_members_00435648;" (assignment_expression "puVar2 = PTR_total_members_00435648" identifier = identifier) ;) (expression_statement "iVar4 = *(int *)(this + 0x24);" (assignment_expression "iVar4 = *(int *)(this + 0x24)" identifier = (pointer_expression "*(int *)(this + 0x24)" * (cast_expression "(int *)(this + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x24)" ( (binary_expression "this + 0x24" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }" { (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "local_b0[0] = 0;" (assignment_expression "local_b0[0] = 0" (subscript_expression "local_b0[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_bc = *(undefined4 *)(iVar4 + 0x4c);" (assignment_expression "local_bc = *(undefined4 *)(iVar4 + 0x4c)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x4c)" * (cast_expression "(undefined4 *)(iVar4 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4c)" ( (binary_expression "iVar4 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "local_c0 = *(undefined4 *)(iVar4 + 0x48);" (assignment_expression "local_c0 = *(undefined4 *)(iVar4 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x48)" * (cast_expression "(undefined4 *)(iVar4 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x48)" ( (binary_expression "iVar4 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "local_c8[0] = this;" (assignment_expression "local_c8[0] = this" (subscript_expression "local_c8[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b8 = local_b0;" (assignment_expression "local_b8 = local_b0" identifier = identifier) ;) (expression_statement "(*local_48)(local_44);" (call_expression "(*local_48)(local_44)" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "(local_44)" ( identifier ))) ;) (expression_statement "iVar3 = local_80;" (assignment_expression "iVar3 = local_80" identifier = identifier) ;) (expression_statement "iVar4 = local_a0;" (assignment_expression "iVar4 = local_a0" identifier = identifier) ;) (expression_statement "local_40 = local_7c;" (assignment_expression "local_40 = local_7c" identifier = identifier) ;) (expression_statement "local_3c = local_9c;" (assignment_expression "local_3c = local_9c" identifier = identifier) ;) (if_statement "if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }" if (parenthesized_expression "(local_b8 != local_b0)" ( (binary_expression "local_b8 != local_b0" identifier != identifier) )) (compound_statement "{\n        (*(code *)PTR_operator_delete_0043228c)();\n      }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (if_statement "if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }" if (parenthesized_expression "((iVar3 == iVar4) && (local_40 == local_3c))" ( (binary_expression "(iVar3 == iVar4) && (local_40 == local_3c)" (parenthesized_expression "(iVar3 == iVar4)" ( (binary_expression "iVar3 == iVar4" identifier == identifier) )) && (parenthesized_expression "(local_40 == local_3c)" ( (binary_expression "local_40 == local_3c" identifier == identifier) ))) )) (compound_statement "{\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }" { (if_statement "if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }" if (parenthesized_expression "(local_78 != local_2c)" ( (binary_expression "local_78 != local_2c" identifier != identifier) )) (compound_statement "{\n          (*(code *)PTR_operator_delete_0043228c)();\n        }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_00251f3c;" goto statement_identifier ;) })) (expression_statement "uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);" (assignment_expression "uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38)" identifier = (call_expression "(*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38)" (parenthesized_expression "(*local_34)" ( (pointer_expression "*local_34" * identifier) )) (argument_list "(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }" { (if_statement "if (local_78 == local_2c) {\n          return 0;\n        }" if (parenthesized_expression "(local_78 == local_2c)" ( (binary_expression "local_78 == local_2c" identifier == identifier) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_48 = (code *)uVar5;" (assignment_expression "local_48 = (code *)uVar5" identifier = (cast_expression "(code *)uVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return (uint)local_48;" return (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier) ;) })) (expression_statement "iVar4 = *(int *)(local_88[0] + 0x24);" (assignment_expression "iVar4 = *(int *)(local_88[0] + 0x24)" identifier = (pointer_expression "*(int *)(local_88[0] + 0x24)" * (cast_expression "(int *)(local_88[0] + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_88[0] + 0x24)" ( (binary_expression "local_88[0] + 0x24" (subscript_expression "local_88[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "*(int *)puVar2 = *(int *)puVar2 + 1;" (assignment_expression "*(int *)puVar2 = *(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "*(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal)) ;) (if_statement "if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;" if (parenthesized_expression "((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c))" ( (binary_expression "(*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)" (parenthesized_expression "(*(int *)(iVar4 + 0x48) != local_80)" ( (binary_expression "*(int *)(iVar4 + 0x48) != local_80" (pointer_expression "*(int *)(iVar4 + 0x48)" * (cast_expression "(int *)(iVar4 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x48)" ( (binary_expression "iVar4 + 0x48" identifier + number_literal) )))) != identifier) )) || (parenthesized_expression "(*(uint *)(iVar4 + 0x4c) != local_7c)" ( (binary_expression "*(uint *)(iVar4 + 0x4c) != local_7c" (pointer_expression "*(uint *)(iVar4 + 0x4c)" * (cast_expression "(uint *)(iVar4 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4c)" ( (binary_expression "iVar4 + 0x4c" identifier + number_literal) )))) != identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = *(int *)(this + 0x24);" (assignment_expression "iVar4 = *(int *)(this + 0x24)" identifier = (pointer_expression "*(int *)(this + 0x24)" * (cast_expression "(int *)(this + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x24)" ( (binary_expression "this + 0x24" identifier + number_literal) ))))) ;) })) (expression_statement "uVar6 = local_7c + 0x3c;" (assignment_expression "uVar6 = local_7c + 0x3c" identifier = (binary_expression "local_7c + 0x3c" identifier + number_literal)) ;) (expression_statement "local_80 = (uint)(uVar6 < local_7c) + local_80;" (assignment_expression "local_80 = (uint)(uVar6 < local_7c) + local_80" identifier = (binary_expression "(uint)(uVar6 < local_7c) + local_80" (call_expression "(uint)(uVar6 < local_7c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < local_7c)" ( (binary_expression "uVar6 < local_7c" identifier < identifier) ))) + identifier)) ;) (expression_statement "uVar5 = uVar6;" (assignment_expression "uVar5 = uVar6" identifier = identifier) ;) (if_statement "if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }" if (parenthesized_expression "(local_88[0][0xac] == (Archive)0x0)" ( (binary_expression "local_88[0][0xac] == (Archive)0x0" (subscript_expression "local_88[0][0xac]" (subscript_expression "local_88[0]" identifier [ number_literal ]) [ number_literal ]) == (cast_expression "(Archive)0x0" ( (type_descriptor "Archive" type_identifier) ) number_literal)) )) (compound_statement "{\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }" { (expression_statement "uVar5 = uVar6 + local_4c;" (assignment_expression "uVar5 = uVar6 + local_4c" identifier = (binary_expression "uVar6 + local_4c" identifier + identifier)) ;) (expression_statement "local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;" (assignment_expression "local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50" identifier = (binary_expression "(uint)(uVar5 < uVar6) + local_80 + local_50" (binary_expression "(uint)(uVar5 < uVar6) + local_80" (call_expression "(uint)(uVar5 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar6)" ( (binary_expression "uVar5 < uVar6" identifier < identifier) ))) + identifier) + identifier)) ;) })) (expression_statement "local_7c = uVar5;" (assignment_expression "local_7c = uVar5" identifier = identifier) ;) (if_statement "if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }" if (parenthesized_expression "((uVar5 & 1) != 0)" ( (binary_expression "(uVar5 & 1) != 0" (parenthesized_expression "(uVar5 & 1)" ( (binary_expression "uVar5 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }" { (expression_statement "local_7c = uVar5 + 1;" (assignment_expression "local_7c = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "local_80 = (uint)(local_7c < uVar5) + local_80;" (assignment_expression "local_80 = (uint)(local_7c < uVar5) + local_80" identifier = (binary_expression "(uint)(local_7c < uVar5) + local_80" (call_expression "(uint)(local_7c < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_7c < uVar5)" ( (binary_expression "local_7c < uVar5" identifier < identifier) ))) + identifier)) ;) })) (expression_statement "(*local_48)(local_30);" (call_expression "(*local_48)(local_30)" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "(local_30)" ( identifier ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (ms_call_modifier __thiscall) (ERROR IDENT : : IDENT : :) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = 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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , 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) )))) , IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;)) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (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) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT)) ;) (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) )))) != IDENT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) ))) )) (break_statement break ;)) (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (subscript_expression IDENT [ LIT ]) [ LIT ]) == (cast_expression ( (type_descriptor TYPE) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT) + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT)) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "uint __thiscall\ngold::Archive::include_all_members\n          (Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,\n          Mapfile *param_4)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined *puVar7;\n  Archive *pAVar8;\n  Archive *local_c8 [2];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined1 *local_b8;\n  undefined4 local_b4;\n  undefined1 local_b0 [16];\n  int local_a0;\n  uint local_9c;\n  Archive *local_88 [2];\n  int local_80;\n  uint local_7c;\n  undefined1 *local_78;\n  undefined4 local_74;\n  undefined1 local_70 [16];\n  undefined4 local_60;\n  undefined4 local_5c;\n  int local_50;\n  int local_4c;\n  code *local_48;\n  Archive **local_44;\n  uint local_40;\n  uint local_3c;\n  undefined *local_38;\n  code *local_34;\n  const_iterator *local_30;\n  undefined1 *local_2c;\n  \n  puVar2 = PTR_archive_start_004356ac;\n  if ((byte)this[0xd5] != 0) {\n    return (uint)(byte)this[0xd5];\n  }\n  this[0xd5] = (Archive)0x1;\n  (*(code *)puVar2)(param_3,this);\n  puVar2 = PTR_total_members_00435648;\n  if (*(int *)(this + 0xa8) != 0) {\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }\n  local_48 = (code *)PTR_read_next_header_00435640;\n  local_78 = local_70;\n  local_30 = (const_iterator *)local_88;\n  local_7c = 8;\n  local_80 = 0;\n  local_74 = 0;\n                    \n  local_70[0] = 0;\n  local_88[0] = this;\n  local_2c = local_78;\n  const_iterator::read_next_header(local_30);\n  local_44 = local_c8;\n  local_34 = (code *)PTR_include_member_004356b0;\n  local_38 = PTR_DAT_0043226c + 0x950;\n  do {\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  } while( true );\n}" (type_identifier "uint") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::Archive::" (identifier "gold") (: ":") (: ":") (identifier "Archive") (: ":") (: ":")) (function_declarator "include_all_members\n          (Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,\n          Mapfile *param_4)" (identifier "include_all_members") (parameter_list "(Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,\n          Mapfile *param_4)" (( "(") (parameter_declaration "Archive *this" (type_identifier "Archive") (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "Symbol_table *param_1" (type_identifier "Symbol_table") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "Layout *param_2" (type_identifier "Layout") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "Input_objects *param_3" (type_identifier "Input_objects") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "Mapfile *param_4" (type_identifier "Mapfile") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined *puVar7;\n  Archive *pAVar8;\n  Archive *local_c8 [2];\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined1 *local_b8;\n  undefined4 local_b4;\n  undefined1 local_b0 [16];\n  int local_a0;\n  uint local_9c;\n  Archive *local_88 [2];\n  int local_80;\n  uint local_7c;\n  undefined1 *local_78;\n  undefined4 local_74;\n  undefined1 local_70 [16];\n  undefined4 local_60;\n  undefined4 local_5c;\n  int local_50;\n  int local_4c;\n  code *local_48;\n  Archive **local_44;\n  uint local_40;\n  uint local_3c;\n  undefined *local_38;\n  code *local_34;\n  const_iterator *local_30;\n  undefined1 *local_2c;\n  \n  puVar2 = PTR_archive_start_004356ac;\n  if ((byte)this[0xd5] != 0) {\n    return (uint)(byte)this[0xd5];\n  }\n  this[0xd5] = (Archive)0x1;\n  (*(code *)puVar2)(param_3,this);\n  puVar2 = PTR_total_members_00435648;\n  if (*(int *)(this + 0xa8) != 0) {\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }\n  local_48 = (code *)PTR_read_next_header_00435640;\n  local_78 = local_70;\n  local_30 = (const_iterator *)local_88;\n  local_7c = 8;\n  local_80 = 0;\n  local_74 = 0;\n                    \n  local_70[0] = 0;\n  local_88[0] = this;\n  local_2c = local_78;\n  const_iterator::read_next_header(local_30);\n  local_44 = local_c8;\n  local_34 = (code *)PTR_include_member_004356b0;\n  local_38 = PTR_DAT_0043226c + 0x950;\n  do {\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  } while( true );\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "Archive *pAVar8;" (type_identifier "Archive") (pointer_declarator "*pAVar8" (* "*") (identifier "pAVar8")) (; ";")) (declaration "Archive *local_c8 [2];" (type_identifier "Archive") (pointer_declarator "*local_c8 [2]" (* "*") (array_declarator "local_c8 [2]" (identifier "local_c8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined4 local_c0;" (type_identifier "undefined4") (identifier "local_c0") (; ";")) (declaration "undefined4 local_bc;" (type_identifier "undefined4") (identifier "local_bc") (; ";")) (declaration "undefined1 *local_b8;" (type_identifier "undefined1") (pointer_declarator "*local_b8" (* "*") (identifier "local_b8")) (; ";")) (declaration "undefined4 local_b4;" (type_identifier "undefined4") (identifier "local_b4") (; ";")) (declaration "undefined1 local_b0 [16];" (type_identifier "undefined1") (array_declarator "local_b0 [16]" (identifier "local_b0") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int local_a0;" (primitive_type "int") (identifier "local_a0") (; ";")) (declaration "uint local_9c;" (type_identifier "uint") (identifier "local_9c") (; ";")) (declaration "Archive *local_88 [2];" (type_identifier "Archive") (pointer_declarator "*local_88 [2]" (* "*") (array_declarator "local_88 [2]" (identifier "local_88") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "int local_80;" (primitive_type "int") (identifier "local_80") (; ";")) (declaration "uint local_7c;" (type_identifier "uint") (identifier "local_7c") (; ";")) (declaration "undefined1 *local_78;" (type_identifier "undefined1") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "undefined4 local_74;" (type_identifier "undefined4") (identifier "local_74") (; ";")) (declaration "undefined1 local_70 [16];" (type_identifier "undefined1") (array_declarator "local_70 [16]" (identifier "local_70") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "undefined4 local_5c;" (type_identifier "undefined4") (identifier "local_5c") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "code *local_48;" (type_identifier "code") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "Archive **local_44;" (type_identifier "Archive") (pointer_declarator "**local_44" (* "*") (pointer_declarator "*local_44" (* "*") (identifier "local_44"))) (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (declaration "undefined *local_38;" (type_identifier "undefined") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "code *local_34;" (type_identifier "code") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "const_iterator *local_30;" (type_identifier "const_iterator") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "undefined1 *local_2c;" (type_identifier "undefined1") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (expression_statement "puVar2 = PTR_archive_start_004356ac;" (assignment_expression "puVar2 = PTR_archive_start_004356ac" (identifier "puVar2") (= "=") (identifier "PTR_archive_start_004356ac")) (; ";")) (if_statement "if ((byte)this[0xd5] != 0) {\n    return (uint)(byte)this[0xd5];\n  }" (if "if") (parenthesized_expression "((byte)this[0xd5] != 0)" (( "(") (binary_expression "(byte)this[0xd5] != 0" (cast_expression "(byte)this[0xd5]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "this[0xd5]" (identifier "this") ([ "[") (number_literal "0xd5") (] "]"))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return (uint)(byte)this[0xd5];\n  }" ({ "{") (return_statement "return (uint)(byte)this[0xd5];" (return "return") (cast_expression "(uint)(byte)this[0xd5]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)this[0xd5]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "this[0xd5]" (identifier "this") ([ "[") (number_literal "0xd5") (] "]")))) (; ";")) (} "}"))) (expression_statement "this[0xd5] = (Archive)0x1;" (assignment_expression "this[0xd5] = (Archive)0x1" (subscript_expression "this[0xd5]" (identifier "this") ([ "[") (number_literal "0xd5") (] "]")) (= "=") (cast_expression "(Archive)0x1" (( "(") (type_descriptor "Archive" (type_identifier "Archive")) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "(*(code *)puVar2)(param_3,this);" (call_expression "(*(code *)puVar2)(param_3,this)" (parenthesized_expression "(*(code *)puVar2)" (( "(") (pointer_expression "*(code *)puVar2" (* "*") (cast_expression "(code *)puVar2" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) () ")")) (argument_list "(param_3,this)" (( "(") (identifier "param_3") (, ",") (identifier "this") () ")"))) (; ";")) (expression_statement "puVar2 = PTR_total_members_00435648;" (assignment_expression "puVar2 = PTR_total_members_00435648" (identifier "puVar2") (= "=") (identifier "PTR_total_members_00435648")) (; ";")) (if_statement "if (*(int *)(this + 0xa8) != 0) {\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }" (if "if") (parenthesized_expression "(*(int *)(this + 0xa8) != 0)" (( "(") (binary_expression "*(int *)(this + 0xa8) != 0" (pointer_expression "*(int *)(this + 0xa8)" (* "*") (cast_expression "(int *)(this + 0xa8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0xa8)" (( "(") (binary_expression "this + 0xa8" (identifier "this") (+ "+") (number_literal "0xa8")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    pAVar8 = *(Archive **)(this + 0xa0);\n    if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }\nLAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);\n    return 1;\n  }" ({ "{") (expression_statement "pAVar8 = *(Archive **)(this + 0xa0);" (assignment_expression "pAVar8 = *(Archive **)(this + 0xa0)" (identifier "pAVar8") (= "=") (pointer_expression "*(Archive **)(this + 0xa0)" (* "*") (cast_expression "(Archive **)(this + 0xa0)" (( "(") (type_descriptor "Archive **" (type_identifier "Archive") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0xa0)" (( "(") (binary_expression "this + 0xa0" (identifier "this") (+ "+") (number_literal "0xa0")) () ")"))))) (; ";")) (if_statement "if (pAVar8 != this + 0x98) {\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }" (if "if") (parenthesized_expression "(pAVar8 != this + 0x98)" (( "(") (binary_expression "pAVar8 != this + 0x98" (identifier "pAVar8") (!= "!=") (binary_expression "this + 0x98" (identifier "this") (+ "+") (number_literal "0x98"))) () ")")) (compound_statement "{\n      local_48 = (code *)PTR_include_member_004356b0;\n      puVar7 = PTR_DAT_0043226c + 0x950;\n      do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);\n    }" ({ "{") (expression_statement "local_48 = (code *)PTR_include_member_004356b0;" (assignment_expression "local_48 = (code *)PTR_include_member_004356b0" (identifier "local_48") (= "=") (cast_expression "(code *)PTR_include_member_004356b0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_include_member_004356b0"))) (; ";")) (expression_statement "puVar7 = PTR_DAT_0043226c + 0x950;" (assignment_expression "puVar7 = PTR_DAT_0043226c + 0x950" (identifier "puVar7") (= "=") (binary_expression "PTR_DAT_0043226c + 0x950" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x950"))) (; ";")) (do_statement "do {\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      } while (pAVar8 != this + 0x98);" (do "do") (compound_statement "{\n        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);\n        puVar1 = PTR__Rb_tree_increment_00432d90;\n        if (iVar4 == 0) {\n          return 0;\n        }\n        *(int *)puVar2 = *(int *)puVar2 + 1;\n        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);\n      }" ({ "{") (expression_statement "iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);" (assignment_expression "iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7)" (identifier "iVar4") (= "=") (call_expression "(*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7)" (parenthesized_expression "(*local_48)" (( "(") (pointer_expression "*local_48" (* "*") (identifier "local_48")) () ")")) (argument_list "(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),\n                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7)" (( "(") (identifier "this") (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (pointer_expression "*(undefined4 *)(pAVar8 + 0x10)" (* "*") (cast_expression "(undefined4 *)(pAVar8 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pAVar8 + 0x10)" (( "(") (binary_expression "pAVar8 + 0x10" (identifier "pAVar8") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(pAVar8 + 0x14)" (* "*") (cast_expression "(undefined4 *)(pAVar8 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pAVar8 + 0x14)" (( "(") (binary_expression "pAVar8 + 0x14" (identifier "pAVar8") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (identifier "param_4") (, ",") (number_literal "0") (, ",") (identifier "puVar7") () ")")))) (; ";")) (expression_statement "puVar1 = PTR__Rb_tree_increment_00432d90;" (assignment_expression "puVar1 = PTR__Rb_tree_increment_00432d90" (identifier "puVar1") (= "=") (identifier "PTR__Rb_tree_increment_00432d90")) (; ";")) (if_statement "if (iVar4 == 0) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*(int *)puVar2 = *(int *)puVar2 + 1;" (assignment_expression "*(int *)puVar2 = *(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (= "=") (binary_expression "*(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);" (assignment_expression "pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8)" (identifier "pAVar8") (= "=") (cast_expression "(Archive *)(*(code *)puVar1)(pAVar8)" (( "(") (type_descriptor "Archive *" (type_identifier "Archive") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)puVar1)(pAVar8)" (parenthesized_expression "(*(code *)puVar1)" (( "(") (pointer_expression "*(code *)puVar1" (* "*") (cast_expression "(code *)puVar1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) () ")")) (argument_list "(pAVar8)" (( "(") (identifier "pAVar8") () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pAVar8 != this + 0x98)" (( "(") (binary_expression "pAVar8 != this + 0x98" (identifier "pAVar8") (!= "!=") (binary_expression "this + 0x98" (identifier "this") (+ "+") (number_literal "0x98"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00251f3c:\n    (*(code *)PTR_archive_stop_004356b4)(param_3,this);" (statement_identifier "LAB_00251f3c") (: ":") (expression_statement "(*(code *)PTR_archive_stop_004356b4)(param_3,this);" (call_expression "(*(code *)PTR_archive_stop_004356b4)(param_3,this)" (parenthesized_expression "(*(code *)PTR_archive_stop_004356b4)" (( "(") (pointer_expression "*(code *)PTR_archive_stop_004356b4" (* "*") (cast_expression "(code *)PTR_archive_stop_004356b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_archive_stop_004356b4"))) () ")")) (argument_list "(param_3,this)" (( "(") (identifier "param_3") (, ",") (identifier "this") () ")"))) (; ";"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "local_48 = (code *)PTR_read_next_header_00435640;" (assignment_expression "local_48 = (code *)PTR_read_next_header_00435640" (identifier "local_48") (= "=") (cast_expression "(code *)PTR_read_next_header_00435640" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_read_next_header_00435640"))) (; ";")) (expression_statement "local_78 = local_70;" (assignment_expression "local_78 = local_70" (identifier "local_78") (= "=") (identifier "local_70")) (; ";")) (expression_statement "local_30 = (const_iterator *)local_88;" (assignment_expression "local_30 = (const_iterator *)local_88" (identifier "local_30") (= "=") (cast_expression "(const_iterator *)local_88" (( "(") (type_descriptor "const_iterator *" (type_identifier "const_iterator") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_88"))) (; ";")) (expression_statement "local_7c = 8;" (assignment_expression "local_7c = 8" (identifier "local_7c") (= "=") (number_literal "8")) (; ";")) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" (identifier "local_74") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70[0] = 0;" (assignment_expression "local_70[0] = 0" (subscript_expression "local_70[0]" (identifier "local_70") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_88[0] = this;" (assignment_expression "local_88[0] = this" (subscript_expression "local_88[0]" (identifier "local_88") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "this")) (; ";")) (expression_statement "local_2c = local_78;" (assignment_expression "local_2c = local_78" (identifier "local_2c") (= "=") (identifier "local_78")) (; ";")) (labeled_statement "const_iterator::read_next_header(local_30);" (statement_identifier "const_iterator") (: ":") (ERROR ":" (: ":")) (expression_statement "read_next_header(local_30);" (call_expression "read_next_header(local_30)" (identifier "read_next_header") (argument_list "(local_30)" (( "(") (identifier "local_30") () ")"))) (; ";"))) (expression_statement "local_44 = local_c8;" (assignment_expression "local_44 = local_c8" (identifier "local_44") (= "=") (identifier "local_c8")) (; ";")) (expression_statement "local_34 = (code *)PTR_include_member_004356b0;" (assignment_expression "local_34 = (code *)PTR_include_member_004356b0" (identifier "local_34") (= "=") (cast_expression "(code *)PTR_include_member_004356b0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_include_member_004356b0"))) (; ";")) (expression_statement "local_38 = PTR_DAT_0043226c + 0x950;" (assignment_expression "local_38 = PTR_DAT_0043226c + 0x950" (identifier "local_38") (= "=") (binary_expression "PTR_DAT_0043226c + 0x950" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x950"))) (; ";")) (do_statement "do {\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  } while( true );" (do "do") (compound_statement "{\n    puVar2 = PTR_total_members_00435648;\n    iVar4 = *(int *)(this + 0x24);\n    while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }\n    uVar6 = local_7c + 0x3c;\n    local_80 = (uint)(uVar6 < local_7c) + local_80;\n    uVar5 = uVar6;\n    if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }\n    local_7c = uVar5;\n    if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }\n    (*local_48)(local_30);\n  }" ({ "{") (expression_statement "puVar2 = PTR_total_members_00435648;" (assignment_expression "puVar2 = PTR_total_members_00435648" (identifier "puVar2") (= "=") (identifier "PTR_total_members_00435648")) (; ";")) (expression_statement "iVar4 = *(int *)(this + 0x24);" (assignment_expression "iVar4 = *(int *)(this + 0x24)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(this + 0x24)" (* "*") (cast_expression "(int *)(this + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x24)" (( "(") (binary_expression "this + 0x24" (identifier "this") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (while_statement "while( true ) {\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      local_b4 = 0;\n      local_b0[0] = 0;\n      local_bc = *(undefined4 *)(iVar4 + 0x4c);\n      local_c0 = *(undefined4 *)(iVar4 + 0x48);\n      local_c8[0] = this;\n      local_b8 = local_b0;\n                    \n      (*local_48)(local_44);\n      iVar3 = local_80;\n      iVar4 = local_a0;\n      local_40 = local_7c;\n      local_3c = local_9c;\n      if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }\n      if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }\n                    \n      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);\n      if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }\n      iVar4 = *(int *)(local_88[0] + 0x24);\n      *(int *)puVar2 = *(int *)puVar2 + 1;\n      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;\n      iVar4 = *(int *)(this + 0x24);\n    }" ({ "{") (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b0[0] = 0;" (assignment_expression "local_b0[0] = 0" (subscript_expression "local_b0[0]" (identifier "local_b0") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_bc = *(undefined4 *)(iVar4 + 0x4c);" (assignment_expression "local_bc = *(undefined4 *)(iVar4 + 0x4c)" (identifier "local_bc") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x4c)" (( "(") (binary_expression "iVar4 + 0x4c" (identifier "iVar4") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (expression_statement "local_c0 = *(undefined4 *)(iVar4 + 0x48);" (assignment_expression "local_c0 = *(undefined4 *)(iVar4 + 0x48)" (identifier "local_c0") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x48)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x48)" (( "(") (binary_expression "iVar4 + 0x48" (identifier "iVar4") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "local_c8[0] = this;" (assignment_expression "local_c8[0] = this" (subscript_expression "local_c8[0]" (identifier "local_c8") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "this")) (; ";")) (expression_statement "local_b8 = local_b0;" (assignment_expression "local_b8 = local_b0" (identifier "local_b8") (= "=") (identifier "local_b0")) (; ";")) (expression_statement "(*local_48)(local_44);" (call_expression "(*local_48)(local_44)" (parenthesized_expression "(*local_48)" (( "(") (pointer_expression "*local_48" (* "*") (identifier "local_48")) () ")")) (argument_list "(local_44)" (( "(") (identifier "local_44") () ")"))) (; ";")) (expression_statement "iVar3 = local_80;" (assignment_expression "iVar3 = local_80" (identifier "iVar3") (= "=") (identifier "local_80")) (; ";")) (expression_statement "iVar4 = local_a0;" (assignment_expression "iVar4 = local_a0" (identifier "iVar4") (= "=") (identifier "local_a0")) (; ";")) (expression_statement "local_40 = local_7c;" (assignment_expression "local_40 = local_7c" (identifier "local_40") (= "=") (identifier "local_7c")) (; ";")) (expression_statement "local_3c = local_9c;" (assignment_expression "local_3c = local_9c" (identifier "local_3c") (= "=") (identifier "local_9c")) (; ";")) (if_statement "if (local_b8 != local_b0) {\n        (*(code *)PTR_operator_delete_0043228c)();\n      }" (if "if") (parenthesized_expression "(local_b8 != local_b0)" (( "(") (binary_expression "local_b8 != local_b0" (identifier "local_b8") (!= "!=") (identifier "local_b0")) () ")")) (compound_statement "{\n        (*(code *)PTR_operator_delete_0043228c)();\n      }" ({ "{") (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" (( "(") (pointer_expression "*(code *)PTR_operator_delete_0043228c" (* "*") (cast_expression "(code *)PTR_operator_delete_0043228c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_delete_0043228c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if ((iVar3 == iVar4) && (local_40 == local_3c)) {\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }" (if "if") (parenthesized_expression "((iVar3 == iVar4) && (local_40 == local_3c))" (( "(") (binary_expression "(iVar3 == iVar4) && (local_40 == local_3c)" (parenthesized_expression "(iVar3 == iVar4)" (( "(") (binary_expression "iVar3 == iVar4" (identifier "iVar3") (== "==") (identifier "iVar4")) () ")")) (&& "&&") (parenthesized_expression "(local_40 == local_3c)" (( "(") (binary_expression "local_40 == local_3c" (identifier "local_40") (== "==") (identifier "local_3c")) () ")"))) () ")")) (compound_statement "{\n        if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }\n        goto LAB_00251f3c;\n      }" ({ "{") (if_statement "if (local_78 != local_2c) {\n          (*(code *)PTR_operator_delete_0043228c)();\n        }" (if "if") (parenthesized_expression "(local_78 != local_2c)" (( "(") (binary_expression "local_78 != local_2c" (identifier "local_78") (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n          (*(code *)PTR_operator_delete_0043228c)();\n        }" ({ "{") (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" (( "(") (pointer_expression "*(code *)PTR_operator_delete_0043228c" (* "*") (cast_expression "(code *)PTR_operator_delete_0043228c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_delete_0043228c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00251f3c;" (goto "goto") (statement_identifier "LAB_00251f3c") (; ";")) (} "}"))) (expression_statement "uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);" (assignment_expression "uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38)" (identifier "uVar5") (= "=") (call_expression "(*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38)" (parenthesized_expression "(*local_34)" (( "(") (pointer_expression "*local_34" (* "*") (identifier "local_34")) () ")")) (argument_list "(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38)" (( "(") (identifier "this") (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "local_60") (, ",") (identifier "local_5c") (, ",") (identifier "param_4") (, ",") (number_literal "0") (, ",") (identifier "local_38") () ")")))) (; ";")) (if_statement "if (uVar5 == 0) {\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (local_78 == local_2c) {\n          return 0;\n        }\n        local_48 = (code *)uVar5;\n        (*(code *)PTR_operator_delete_0043228c)();\n        return (uint)local_48;\n      }" ({ "{") (if_statement "if (local_78 == local_2c) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(local_78 == local_2c)" (( "(") (binary_expression "local_78 == local_2c" (identifier "local_78") (== "==") (identifier "local_2c")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "local_48 = (code *)uVar5;" (assignment_expression "local_48 = (code *)uVar5" (identifier "local_48") (= "=") (cast_expression "(code *)uVar5" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar5"))) (; ";")) (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" (( "(") (pointer_expression "*(code *)PTR_operator_delete_0043228c" (* "*") (cast_expression "(code *)PTR_operator_delete_0043228c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_delete_0043228c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return (uint)local_48;" (return "return") (cast_expression "(uint)local_48" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_48")) (; ";")) (} "}"))) (expression_statement "iVar4 = *(int *)(local_88[0] + 0x24);" (assignment_expression "iVar4 = *(int *)(local_88[0] + 0x24)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(local_88[0] + 0x24)" (* "*") (cast_expression "(int *)(local_88[0] + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_88[0] + 0x24)" (( "(") (binary_expression "local_88[0] + 0x24" (subscript_expression "local_88[0]" (identifier "local_88") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(int *)puVar2 = *(int *)puVar2 + 1;" (assignment_expression "*(int *)puVar2 = *(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (= "=") (binary_expression "*(int *)puVar2 + 1" (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;" (if "if") (parenthesized_expression "((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c))" (( "(") (binary_expression "(*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)" (parenthesized_expression "(*(int *)(iVar4 + 0x48) != local_80)" (( "(") (binary_expression "*(int *)(iVar4 + 0x48) != local_80" (pointer_expression "*(int *)(iVar4 + 0x48)" (* "*") (cast_expression "(int *)(iVar4 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x48)" (( "(") (binary_expression "iVar4 + 0x48" (identifier "iVar4") (+ "+") (number_literal "0x48")) () ")")))) (!= "!=") (identifier "local_80")) () ")")) (|| "||") (parenthesized_expression "(*(uint *)(iVar4 + 0x4c) != local_7c)" (( "(") (binary_expression "*(uint *)(iVar4 + 0x4c) != local_7c" (pointer_expression "*(uint *)(iVar4 + 0x4c)" (* "*") (cast_expression "(uint *)(iVar4 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x4c)" (( "(") (binary_expression "iVar4 + 0x4c" (identifier "iVar4") (+ "+") (number_literal "0x4c")) () ")")))) (!= "!=") (identifier "local_7c")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = *(int *)(this + 0x24);" (assignment_expression "iVar4 = *(int *)(this + 0x24)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(this + 0x24)" (* "*") (cast_expression "(int *)(this + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x24)" (( "(") (binary_expression "this + 0x24" (identifier "this") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar6 = local_7c + 0x3c;" (assignment_expression "uVar6 = local_7c + 0x3c" (identifier "uVar6") (= "=") (binary_expression "local_7c + 0x3c" (identifier "local_7c") (+ "+") (number_literal "0x3c"))) (; ";")) (expression_statement "local_80 = (uint)(uVar6 < local_7c) + local_80;" (assignment_expression "local_80 = (uint)(uVar6 < local_7c) + local_80" (identifier "local_80") (= "=") (binary_expression "(uint)(uVar6 < local_7c) + local_80" (call_expression "(uint)(uVar6 < local_7c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar6 < local_7c)" (( "(") (binary_expression "uVar6 < local_7c" (identifier "uVar6") (< "<") (identifier "local_7c")) () ")"))) (+ "+") (identifier "local_80"))) (; ";")) (expression_statement "uVar5 = uVar6;" (assignment_expression "uVar5 = uVar6" (identifier "uVar5") (= "=") (identifier "uVar6")) (; ";")) (if_statement "if (local_88[0][0xac] == (Archive)0x0) {\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }" (if "if") (parenthesized_expression "(local_88[0][0xac] == (Archive)0x0)" (( "(") (binary_expression "local_88[0][0xac] == (Archive)0x0" (subscript_expression "local_88[0][0xac]" (subscript_expression "local_88[0]" (identifier "local_88") ([ "[") (number_literal "0") (] "]")) ([ "[") (number_literal "0xac") (] "]")) (== "==") (cast_expression "(Archive)0x0" (( "(") (type_descriptor "Archive" (type_identifier "Archive")) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar5 = uVar6 + local_4c;\n      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;\n    }" ({ "{") (expression_statement "uVar5 = uVar6 + local_4c;" (assignment_expression "uVar5 = uVar6 + local_4c" (identifier "uVar5") (= "=") (binary_expression "uVar6 + local_4c" (identifier "uVar6") (+ "+") (identifier "local_4c"))) (; ";")) (expression_statement "local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;" (assignment_expression "local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50" (identifier "local_80") (= "=") (binary_expression "(uint)(uVar5 < uVar6) + local_80 + local_50" (binary_expression "(uint)(uVar5 < uVar6) + local_80" (call_expression "(uint)(uVar5 < uVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar5 < uVar6)" (( "(") (binary_expression "uVar5 < uVar6" (identifier "uVar5") (< "<") (identifier "uVar6")) () ")"))) (+ "+") (identifier "local_80")) (+ "+") (identifier "local_50"))) (; ";")) (} "}"))) (expression_statement "local_7c = uVar5;" (assignment_expression "local_7c = uVar5" (identifier "local_7c") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if ((uVar5 & 1) != 0) {\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }" (if "if") (parenthesized_expression "((uVar5 & 1) != 0)" (( "(") (binary_expression "(uVar5 & 1) != 0" (parenthesized_expression "(uVar5 & 1)" (( "(") (binary_expression "uVar5 & 1" (identifier "uVar5") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_7c = uVar5 + 1;\n      local_80 = (uint)(local_7c < uVar5) + local_80;\n    }" ({ "{") (expression_statement "local_7c = uVar5 + 1;" (assignment_expression "local_7c = uVar5 + 1" (identifier "local_7c") (= "=") (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_80 = (uint)(local_7c < uVar5) + local_80;" (assignment_expression "local_80 = (uint)(local_7c < uVar5) + local_80" (identifier "local_80") (= "=") (binary_expression "(uint)(local_7c < uVar5) + local_80" (call_expression "(uint)(local_7c < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_7c < uVar5)" (( "(") (binary_expression "local_7c < uVar5" (identifier "local_7c") (< "<") (identifier "uVar5")) () ")"))) (+ "+") (identifier "local_80"))) (; ";")) (} "}"))) (expression_statement "(*local_48)(local_30);" (call_expression "(*local_48)(local_30)" (parenthesized_expression "(*local_48)" (( "(") (pointer_expression "*local_48" (* "*") (identifier "local_48")) () ")")) (argument_list "(local_30)" (( "(") (identifier "local_30") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* 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: bool include_all_members(Archive * this, Symbol_table * symtab, Layout
   * layout, Input_objects * input_objects, Mapfile * mapfile) */

bool __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 *symtab,type_3 *layout,type_4 *input_objects,
          type_5 *mapfile)

{
  type_6 *puVar1;
  type_6 *puVar2;
  int var_11;
  type_7 var_6;
  type_6 *puVar5;
  type_8 *pIVar6;
  int var_12;
  type_7 var_13;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  type_6 *puVar10;
  type_9 *var_14;
  type_10 p_Var12;
  type_1 *local_c8 [2];
  type_11 local_c0;
  type_11 local_bc;
  type_12 *var_9;
  type_11 local_b4;
  type_12 var_10 [16];
  int local_a0;
  type_7 local_9c;
  type_13 p;
  
  puVar10 = PTR_archive_start_004356ac;
  var_6 = (type_7)this->included_all_members_;
  if (var_6 == 0) {
    this->included_all_members_ = true;
    (*(type_14 *)puVar10)(input_objects,this);
    puVar5 = PTR_include_member_004356b0;
    puVar2 = PTR_total_members_00435648;
    puVar10 = PTR_read_next_header_00435640;
    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) {
      var_5 = &p.header_.name.field_2;
      p.off_._4_4_ = 8;
      p.off_._0_4_ = 0;
      p.header_.name._M_string_length = 0;
                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */
      p.header_.name.field_2._M_local_buf[0] = '\0';
      p.archive_ = this;
      p.header_.name._M_dataplus._M_p = (type_15)var_5;
      const_iterator::var_7(&p);
      puVar2 = PTR_include_member_004356b0;
      puVar5 = var_8 + 0x950;
      do {
        puVar1 = PTR_total_members_00435648;
        pIVar6 = this->input_file_;
        while( true ) {
          local_b4 = 0;
          var_10[0] = 0;
          local_bc = (type_11)(pIVar6->file_).size_;
          local_c0 = *(type_11 *)&(pIVar6->file_).size_;
          local_c8[0] = this;
          var_9 = var_10;
                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */
          (*(type_14 *)puVar10)(local_c8);
          var_13 = p.off_._4_4_;
          var_11 = p.off_._0_4_;
          var_6 = local_9c;
          var_12 = local_a0;
          if (var_9 != var_10) {
            (*(type_14 *)PTR_operator_delete_0043228c)();
          }
          if ((var_11 == var_12) && (var_13 == var_6)) {
            if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                 *)p.header_.name._M_dataplus._M_p != var_5) {
              (*(type_14 *)PTR_operator_delete_0043228c)();
            }
            goto LAB_00251f3c;
          }
                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */
          var_12 = (*(type_14 *)puVar2)(this,symtab,layout,input_objects,p.header_.off._0_4_,
                                    p.header_.off._4_4_,mapfile,0,puVar5);
          if (var_12 == 0) {
            var_6 = 0;
            if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                 *)p.header_.name._M_dataplus._M_p != var_5) {
              (*(type_14 *)PTR_operator_delete_0043228c)();
            }
            goto LAB_00251e58;
          }
          pIVar6 = (p.archive_)->input_file_;
          *(int *)puVar1 = *(int *)puVar1 + 1;
          if ((*(int *)&(pIVar6->file_).size_ != p.off_._0_4_) ||
             ((type_7)(pIVar6->file_).size_ != p.off_._4_4_)) break;
          pIVar6 = this->input_file_;
        }
        var_13 = p.off_._4_4_ + 0x3c;
        p.off_._0_4_ = (type_7)(var_13 < p.off_._4_4_) + p.off_._0_4_;
        var_6 = var_13;
        if ((p.archive_)->is_thin_archive_ == false) {
          var_6 = var_13 + p.header_.size._4_4_;
          p.off_._0_4_ = (type_7)(var_6 < var_13) + p.off_._0_4_ + p.header_.size._0_4_;
        }
        p.off_._4_4_ = var_6;
        if ((var_6 & 1) != 0) {
          p.off_._4_4_ = var_6 + 1;
          p.off_._0_4_ = (type_7)(p.off_._4_4_ < var_6) + p.off_._0_4_;
        }
        (*(type_14 *)puVar10)(&p);
      } while( true );
    }
    p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;
    var_14 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;
    if ((type_9 *)p_Var12 != var_14) {
      puVar10 = var_8 + 0x950;
      do {
        var_6 = (*(type_14 *)puVar5)(this,symtab,layout,input_objects,p_Var12[1]._M_color,
                                  p_Var12[1]._M_parent,mapfile,0,puVar10);
        puVar1 = PTR__Rb_tree_increment_00432d90;
        if (var_6 == 0) goto LAB_00251e58;
        *(int *)puVar2 = *(int *)puVar2 + 1;
        p_Var12 = (type_10)(*(type_14 *)puVar1)(p_Var12);
      } while ((type_9 *)p_Var12 != var_14);
    }
LAB_00251f3c:
    (*(type_14 *)PTR_archive_stop_004356b4)(input_objects,this);
    return true;
  }
LAB_00251e58:
  return var_15(var_6,0);
}


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

/* gold::Archive::MASKED(gold::Symbol_table*, gold::Layout*, gold::Input_objects*,
   gold::Mapfile*) */

uint __thiscall
gold::Archive::MASKED
          (Archive *this,Symbol_table *param_1,Layout *param_2,Input_objects *param_3,
          Mapfile *param_4)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  undefined *puVar7;
  Archive *pAVar8;
  Archive *local_c8 [2];
  undefined4 local_c0;
  undefined4 local_bc;
  undefined1 *local_b8;
  undefined4 local_b4;
  undefined1 local_b0 [16];
  int local_a0;
  uint local_9c;
  Archive *local_88 [2];
  int local_80;
  uint local_7c;
  undefined1 *local_78;
  undefined4 local_74;
  undefined1 local_70 [16];
  undefined4 local_60;
  undefined4 local_5c;
  int local_50;
  int local_4c;
  code *local_48;
  Archive **local_44;
  uint local_40;
  uint local_3c;
  undefined *local_38;
  code *local_34;
  const_iterator *local_30;
  undefined1 *local_2c;
  
  puVar2 = PTR_archive_start_004356ac;
  if ((byte)this[0xd5] != 0) {
    return (uint)(byte)this[0xd5];
  }
  this[0xd5] = (Archive)0x1;
  (*(code *)puVar2)(param_3,this);
  puVar2 = PTR_total_members_00435648;
  if (*(int *)(this + 0xa8) != 0) {
    pAVar8 = *(Archive **)(this + 0xa0);
    if (pAVar8 != this + 0x98) {
      local_48 = (code *)PTR_include_member_004356b0;
      puVar7 = PTR_DAT_0043226c + 0x950;
      do {
        iVar4 = (*local_48)(this,param_1,param_2,param_3,*(undefined4 *)(pAVar8 + 0x10),
                            *(undefined4 *)(pAVar8 + 0x14),param_4,0,puVar7);
        puVar1 = PTR__Rb_tree_increment_00432d90;
        if (iVar4 == 0) {
          return 0;
        }
        *(int *)puVar2 = *(int *)puVar2 + 1;
        pAVar8 = (Archive *)(*(code *)puVar1)(pAVar8);
      } while (pAVar8 != this + 0x98);
    }
LAB_00251f3c:
    (*(code *)PTR_archive_stop_004356b4)(param_3,this);
    return 1;
  }
  local_48 = (code *)PTR_read_next_header_00435640;
  local_78 = local_70;
  local_30 = (const_iterator *)local_88;
  local_7c = 8;
  local_80 = 0;
  local_74 = 0;
                    /* try { // try from 00251fb4 to 00251fbb has its CatchHandler @ 0025218c */
  local_70[0] = 0;
  local_88[0] = this;
  local_2c = local_78;
  const_iterator::read_next_header(local_30);
  local_44 = local_c8;
  local_34 = (code *)PTR_include_member_004356b0;
  local_38 = PTR_DAT_0043226c + 0x950;
  do {
    puVar2 = PTR_total_members_00435648;
    iVar4 = *(int *)(this + 0x24);
    while( true ) {
      local_b4 = 0;
      local_b0[0] = 0;
      local_bc = *(undefined4 *)(iVar4 + 0x4c);
      local_c0 = *(undefined4 *)(iVar4 + 0x48);
      local_c8[0] = this;
      local_b8 = local_b0;
                    /* try { // try from 0025200c to 00252013 has its CatchHandler @ 002521e4 */
      (*local_48)(local_44);
      iVar3 = local_80;
      iVar4 = local_a0;
      local_40 = local_7c;
      local_3c = local_9c;
      if (local_b8 != local_b0) {
        (*(code *)PTR_operator_delete_0043228c)();
      }
      if ((iVar3 == iVar4) && (local_40 == local_3c)) {
        if (local_78 != local_2c) {
          (*(code *)PTR_operator_delete_0043228c)();
        }
        goto LAB_00251f3c;
      }
                    /* try { // try from 00252080 to 00252123 has its CatchHandler @ 002521bc */
      uVar5 = (*local_34)(this,param_1,param_2,param_3,local_60,local_5c,param_4,0,local_38);
      if (uVar5 == 0) {
        if (local_78 == local_2c) {
          return 0;
        }
        local_48 = (code *)uVar5;
        (*(code *)PTR_operator_delete_0043228c)();
        return (uint)local_48;
      }
      iVar4 = *(int *)(local_88[0] + 0x24);
      *(int *)puVar2 = *(int *)puVar2 + 1;
      if ((*(int *)(iVar4 + 0x48) != local_80) || (*(uint *)(iVar4 + 0x4c) != local_7c)) break;
      iVar4 = *(int *)(this + 0x24);
    }
    uVar6 = local_7c + 0x3c;
    local_80 = (uint)(uVar6 < local_7c) + local_80;
    uVar5 = uVar6;
    if (local_88[0][0xac] == (Archive)0x0) {
      uVar5 = uVar6 + local_4c;
      local_80 = (uint)(uVar5 < uVar6) + local_80 + local_50;
    }
    local_7c = uVar5;
    if ((uVar5 & 1) != 0) {
      local_7c = uVar5 + 1;
      local_80 = (uint)(local_7c < uVar5) + local_80;
    }
    (*local_48)(local_30);
  } while( true );
}

