
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: void update_section_layout(Output_section * this, Section_layout_order
   * order_map) */

void __thiscall
gold::Output_section::update_section_layout(Output_section *this,Section_layout_order *order_map)

{
  Relobj *pRVar1;
  uint uVar2;
  _Base_ptr p_Var3;
  _Base_ptr p_Var4;
  _Base_ptr p_Var5;
  pointer pIVar6;
  Input_section *this_00;
  _Rb_tree_header *p_Var7;
  
  pIVar6 = (this->input_sections_).
           super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>
           ._M_impl._M_finish;
  this_00 = (this->input_sections_).
            super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>
            ._M_impl._M_start;
  if (this_00 != pIVar6) {
    p_Var7 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;
    do {
      if (this_00->shndx_ + 4 < 4) {
        if (this_00->shndx_ == 0xfffffffc) {
          pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;
          goto LAB_00215f3c;
        }
      }
      else {
        pRVar1 = Input_section::relobj(this_00);
LAB_00215f3c:
        uVar2 = Input_section::shndx(this_00);
        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;
        p_Var5 = &p_Var7->_M_header;
        if (p_Var3 != (_Base_ptr)0x0) {
          do {
            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||
               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))
            {
              p_Var4 = p_Var3->_M_right;
            }
            else {
              p_Var4 = p_Var3->_M_left;
              p_Var5 = p_Var3;
            }
            p_Var3 = p_Var4;
          } while (p_Var4 != (_Base_ptr)0x0);
          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&
               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&
              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||
               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&
             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {
            pIVar6 = (this->input_sections_).
                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>
                     ._M_impl._M_finish;
            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);
            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;
            goto LAB_00215fdc;
          }
        }
        pIVar6 = (this->input_sections_).
                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>
                 ._M_impl._M_finish;
      }
LAB_00215fdc:
      this_00 = this_00 + 1;
    } while (pIVar6 != this_00);
  }
  return;
}



/* gold::Output_section::update_section_layout(std::map<std::pair<gold::Relobj*, unsigned int>,
   unsigned int, std::less<std::pair<gold::Relobj*, unsigned int> >,
   std::allocator<std::pair<std::pair<gold::Relobj*, unsigned int> const, unsigned int> > > const*)
    */

void __thiscall gold::Output_section::update_section_layout(Output_section *this,map *param_1)

{
  uint uVar1;
  uint uVar2;
  map *pmVar3;
  map *pmVar4;
  map *pmVar5;
  Input_section *pIVar6;
  Input_section *this_00;
  
  pIVar6 = *(Input_section **)(this + 0x74);
  this_00 = *(Input_section **)(this + 0x70);
  if (this_00 != pIVar6) {
    do {
      if (*(int *)this_00 + 4U < 4) {
        if (*(int *)this_00 == -4) {
          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);
          goto LAB_00215f3c;
        }
      }
      else {
        uVar1 = Input_section::relobj(this_00);
LAB_00215f3c:
        uVar2 = Input_section::shndx(this_00);
        pmVar3 = *(map **)(param_1 + 8);
        pmVar5 = param_1 + 4;
        if (*(map **)(param_1 + 8) != (map *)0x0) {
          do {
            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||
               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {
              pmVar4 = *(map **)(pmVar3 + 0xc);
            }
            else {
              pmVar4 = *(map **)(pmVar3 + 8);
              pmVar5 = pmVar3;
            }
            pmVar3 = pmVar4;
          } while (pmVar4 != (map *)0x0);
          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&
              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&
             (*(int *)(pmVar5 + 0x18) != 0)) {
            pIVar6 = *(Input_section **)(this + 0x74);
            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);
            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;
            goto LAB_00215fdc;
          }
        }
        pIVar6 = *(Input_section **)(this + 0x74);
      }
LAB_00215fdc:
      this_00 = this_00 + 0x18;
    } while (pIVar6 != this_00);
  }
  return;
}


lui gp,0x2b
addiu gp,gp,0x3384
addu gp,gp,t9
addiu sp,sp,-0x40
lw a2,0x74(a0)
sw s0,0x1c(sp)
sw gp,0x10(sp)
sw ra,0x3c(sp)
sw s7,0x38(sp)
sw s6,0x34(sp)
sw s5,0x30(sp)
sw s4,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
lw s0,0x70(a0)
beq s0,a2,0x00215fe8
_lw s4,-0x52fc(gp)
addiu s2,a1,0x4
lw s6,-0x5304(gp)
li s5,0x1
or s3,a1,zero
or s1,a0,zero
lw v1,0x0(s0)
addiu v0,v1,0x4
sltiu v0,v0,0x4
bne v0,zero,0x00216024
_li v0,-0x4
or t9,s6,zero
bal 0x00214a64
_or a0,s0,zero
or s7,v0,zero
or t9,s4,zero
bal 0x00214b04
_or a0,s0,zero
lw v1,0x8(s3)
beq v1,zero,0x0021601c
_or a0,s2,zero
lw a1,0x10(v1)
sltu a2,a1,s7
bne a2,zero,0x00216014
_nop
bne s7,a1,0x00215f7c
_nop
lw a2,0x14(v1)
sltu a2,a2,v0
bne a2,zero,0x00216014
_nop
or a0,v1,zero
lw v1,0x8(v1)
bne v1,zero,0x00215f54
_nop
beq s2,a0,0x0021601c
_nop
lw v1,0x10(a0)
sltu a1,s7,v1
bne a1,zero,0x0021601c
_nop
bne s7,v1,0x00215fbc
_nop
lw v1,0x14(a0)
sltu v0,v0,v1
bne v0,zero,0x0021601c
_nop
lw v0,0x18(a0)
beq v0,zero,0x0021601c
_nop
lw a2,0x74(s1)
sw v0,0x14(s0)
lw v0,0x98(s1)
ins v0,s5,0x16,0x1
sw v0,0x98(s1)
addiu s0,s0,0x18
bne a2,s0,0x00215f18
_nop
lw ra,0x3c(sp)
lw s7,0x38(sp)
lw s6,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x40
b 0x00215f84
_lw v1,0xc(v1)
b 0x00215fdc
_lw a2,0x74(s1)
bne v1,v0,0x00215fdc
_nop
lw v0,0x10(s0)
b 0x00215f3c
_lw s7,0x30(v0)
(translation_unit "/* gold::Output_section::update_section_layout(std::map<std::pair<gold::Relobj*, unsigned int>,\n   unsigned int, std::less<std::pair<gold::Relobj*, unsigned int> >,\n   std::allocator<std::pair<std::pair<gold::Relobj*, unsigned int> const, unsigned int> > > const*)\n    */\n\nvoid __thiscall gold::Output_section::update_section_layout(Output_section *this,map *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  map *pmVar3;\n  map *pmVar4;\n  map *pmVar5;\n  Input_section *pIVar6;\n  Input_section *this_00;\n  \n  pIVar6 = *(Input_section **)(this + 0x74);\n  this_00 = *(Input_section **)(this + 0x70);\n  if (this_00 != pIVar6) {\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall gold::Output_section::update_section_layout(Output_section *this,map *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  map *pmVar3;\n  map *pmVar4;\n  map *pmVar5;\n  Input_section *pIVar6;\n  Input_section *this_00;\n  \n  pIVar6 = *(Input_section **)(this + 0x74);\n  this_00 = *(Input_section **)(this + 0x70);\n  if (this_00 != pIVar6) {\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section::" identifier : : identifier : :) (function_declarator "update_section_layout(Output_section *this,map *param_1)" identifier (parameter_list "(Output_section *this,map *param_1)" ( (parameter_declaration "Output_section *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "map *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  map *pmVar3;\n  map *pmVar4;\n  map *pmVar5;\n  Input_section *pIVar6;\n  Input_section *this_00;\n  \n  pIVar6 = *(Input_section **)(this + 0x74);\n  this_00 = *(Input_section **)(this + 0x70);\n  if (this_00 != pIVar6) {\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "map *pmVar3;" type_identifier (pointer_declarator "*pmVar3" * identifier) ;) (declaration "map *pmVar4;" type_identifier (pointer_declarator "*pmVar4" * identifier) ;) (declaration "map *pmVar5;" type_identifier (pointer_declarator "*pmVar5" * identifier) ;) (declaration "Input_section *pIVar6;" type_identifier (pointer_declarator "*pIVar6" * identifier) ;) (declaration "Input_section *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (expression_statement "pIVar6 = *(Input_section **)(this + 0x74);" (assignment_expression "pIVar6 = *(Input_section **)(this + 0x74)" identifier = (pointer_expression "*(Input_section **)(this + 0x74)" * (cast_expression "(Input_section **)(this + 0x74)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) ))))) ;) (expression_statement "this_00 = *(Input_section **)(this + 0x70);" (assignment_expression "this_00 = *(Input_section **)(this + 0x70)" identifier = (pointer_expression "*(Input_section **)(this + 0x70)" * (cast_expression "(Input_section **)(this + 0x70)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x70)" ( (binary_expression "this + 0x70" identifier + number_literal) ))))) ;) (if_statement "if (this_00 != pIVar6) {\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }" if (parenthesized_expression "(this_00 != pIVar6)" ( (binary_expression "this_00 != pIVar6" identifier != identifier) )) (compound_statement "{\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }" { (do_statement "do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);" do (compound_statement "{\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    }" { (if_statement "if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }" if (parenthesized_expression "(*(int *)this_00 + 4U < 4)" ( (binary_expression "*(int *)this_00 + 4U < 4" (binary_expression "*(int *)this_00 + 4U" (pointer_expression "*(int *)this_00" * (cast_expression "(int *)this_00" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) < number_literal) )) (compound_statement "{\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }" { (if_statement "if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }" if (parenthesized_expression "(*(int *)this_00 == -4)" ( (binary_expression "*(int *)this_00 == -4" (pointer_expression "*(int *)this_00" * (cast_expression "(int *)this_00" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) )) (compound_statement "{\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }" { (expression_statement "uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);" (assignment_expression "uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30)" identifier = (pointer_expression "*(uint *)(*(int *)(this_00 + 0x10) + 0x30)" * (cast_expression "(uint *)(*(int *)(this_00 + 0x10) + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(this_00 + 0x10) + 0x30)" ( (binary_expression "*(int *)(this_00 + 0x10) + 0x30" (pointer_expression "*(int *)(this_00 + 0x10)" * (cast_expression "(int *)(this_00 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00 + 0x10)" ( (binary_expression "this_00 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (goto_statement "goto LAB_00215f3c;" goto statement_identifier ;) })) }) (else_clause "else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }" else (compound_statement "{\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }" { (ERROR "uVar1 = Input_section::" (assignment_expression "uVar1 = Input_section" identifier = identifier) : :) (expression_statement "relobj(this_00);" (call_expression "relobj(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;) (labeled_statement "LAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);" statement_identifier : (ERROR "uVar2 = Input_section::" (assignment_expression "uVar2 = Input_section" identifier = identifier) : :) (expression_statement "shndx(this_00);" (call_expression "shndx(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;)) (expression_statement "pmVar3 = *(map **)(param_1 + 8);" (assignment_expression "pmVar3 = *(map **)(param_1 + 8)" identifier = (pointer_expression "*(map **)(param_1 + 8)" * (cast_expression "(map **)(param_1 + 8)" ( (type_descriptor "map **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "pmVar5 = param_1 + 4;" (assignment_expression "pmVar5 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (if_statement "if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }" if (parenthesized_expression "(*(map **)(param_1 + 8) != (map *)0x0)" ( (binary_expression "*(map **)(param_1 + 8) != (map *)0x0" (pointer_expression "*(map **)(param_1 + 8)" * (cast_expression "(map **)(param_1 + 8)" ( (type_descriptor "map **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) != (cast_expression "(map *)0x0" ( (type_descriptor "map *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }" { (do_statement "do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);" do (compound_statement "{\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          }" { (if_statement "if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }" if (parenthesized_expression "((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2))))" ( (binary_expression "(*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))" (parenthesized_expression "(*(uint *)(pmVar3 + 0x10) < uVar1)" ( (binary_expression "*(uint *)(pmVar3 + 0x10) < uVar1" (pointer_expression "*(uint *)(pmVar3 + 0x10)" * (cast_expression "(uint *)(pmVar3 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar3 + 0x10)" ( (binary_expression "pmVar3 + 0x10" identifier + number_literal) )))) < identifier) )) || (parenthesized_expression "((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))" ( (parenthesized_expression "(uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2))" ( (binary_expression "uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)" (binary_expression "uVar1 == *(uint *)(pmVar3 + 0x10)" identifier == (pointer_expression "*(uint *)(pmVar3 + 0x10)" * (cast_expression "(uint *)(pmVar3 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar3 + 0x10)" ( (binary_expression "pmVar3 + 0x10" identifier + number_literal) ))))) && (parenthesized_expression "(*(uint *)(pmVar3 + 0x14) < uVar2)" ( (binary_expression "*(uint *)(pmVar3 + 0x14) < uVar2" (pointer_expression "*(uint *)(pmVar3 + 0x14)" * (cast_expression "(uint *)(pmVar3 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar3 + 0x14)" ( (binary_expression "pmVar3 + 0x14" identifier + number_literal) )))) < identifier) ))) )) ))) )) (compound_statement "{\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }" { (expression_statement "pmVar4 = *(map **)(pmVar3 + 0xc);" (assignment_expression "pmVar4 = *(map **)(pmVar3 + 0xc)" identifier = (pointer_expression "*(map **)(pmVar3 + 0xc)" * (cast_expression "(map **)(pmVar3 + 0xc)" ( (type_descriptor "map **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pmVar3 + 0xc)" ( (binary_expression "pmVar3 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }" else (compound_statement "{\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }" { (expression_statement "pmVar4 = *(map **)(pmVar3 + 8);" (assignment_expression "pmVar4 = *(map **)(pmVar3 + 8)" identifier = (pointer_expression "*(map **)(pmVar3 + 8)" * (cast_expression "(map **)(pmVar3 + 8)" ( (type_descriptor "map **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pmVar3 + 8)" ( (binary_expression "pmVar3 + 8" identifier + number_literal) ))))) ;) (expression_statement "pmVar5 = pmVar3;" (assignment_expression "pmVar5 = pmVar3" identifier = identifier) ;) }))) (expression_statement "pmVar3 = pmVar4;" (assignment_expression "pmVar3 = pmVar4" identifier = identifier) ;) }) while (parenthesized_expression "(pmVar4 != (map *)0x0)" ( (binary_expression "pmVar4 != (map *)0x0" identifier != (cast_expression "(map *)0x0" ( (type_descriptor "map *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }" if (parenthesized_expression "((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0))" ( (binary_expression "(((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)" (parenthesized_expression "(((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2))))" ( (binary_expression "((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))" (parenthesized_expression "((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1))" ( (binary_expression "(param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)" (parenthesized_expression "(param_1 + 4 != pmVar5)" ( (binary_expression "param_1 + 4 != pmVar5" (binary_expression "param_1 + 4" identifier + number_literal) != identifier) )) && (parenthesized_expression "(*(uint *)(pmVar5 + 0x10) <= uVar1)" ( (binary_expression "*(uint *)(pmVar5 + 0x10) <= uVar1" (pointer_expression "*(uint *)(pmVar5 + 0x10)" * (cast_expression "(uint *)(pmVar5 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar5 + 0x10)" ( (binary_expression "pmVar5 + 0x10" identifier + number_literal) )))) <= identifier) ))) )) && (parenthesized_expression "((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))" ( (parenthesized_expression "(uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2))" ( (binary_expression "uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)" (binary_expression "uVar1 != *(uint *)(pmVar5 + 0x10)" identifier != (pointer_expression "*(uint *)(pmVar5 + 0x10)" * (cast_expression "(uint *)(pmVar5 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar5 + 0x10)" ( (binary_expression "pmVar5 + 0x10" identifier + number_literal) ))))) || (parenthesized_expression "(*(uint *)(pmVar5 + 0x14) <= uVar2)" ( (binary_expression "*(uint *)(pmVar5 + 0x14) <= uVar2" (pointer_expression "*(uint *)(pmVar5 + 0x14)" * (cast_expression "(uint *)(pmVar5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar5 + 0x14)" ( (binary_expression "pmVar5 + 0x14" identifier + number_literal) )))) <= identifier) ))) )) ))) )) && (parenthesized_expression "(*(int *)(pmVar5 + 0x18) != 0)" ( (binary_expression "*(int *)(pmVar5 + 0x18) != 0" (pointer_expression "*(int *)(pmVar5 + 0x18)" * (cast_expression "(int *)(pmVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar5 + 0x18)" ( (binary_expression "pmVar5 + 0x18" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }" { (expression_statement "pIVar6 = *(Input_section **)(this + 0x74);" (assignment_expression "pIVar6 = *(Input_section **)(this + 0x74)" identifier = (pointer_expression "*(Input_section **)(this + 0x74)" * (cast_expression "(Input_section **)(this + 0x74)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);" (assignment_expression "*(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18)" (pointer_expression "*(int *)(this_00 + 0x14)" * (cast_expression "(int *)(this_00 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00 + 0x14)" ( (binary_expression "this_00 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(int *)(pmVar5 + 0x18)" * (cast_expression "(int *)(pmVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar5 + 0x18)" ( (binary_expression "pmVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;" (assignment_expression "*(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000" (pointer_expression "*(uint *)(this + 0x98)" * (cast_expression "(uint *)(this + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x98)" ( (binary_expression "this + 0x98" identifier + number_literal) )))) = (binary_expression "*(uint *)(this + 0x98) & 0xffbfffff | 0x400000" (binary_expression "*(uint *)(this + 0x98) & 0xffbfffff" (pointer_expression "*(uint *)(this + 0x98)" * (cast_expression "(uint *)(this + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x98)" ( (binary_expression "this + 0x98" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (goto_statement "goto LAB_00215fdc;" goto statement_identifier ;) })) })) (expression_statement "pIVar6 = *(Input_section **)(this + 0x74);" (assignment_expression "pIVar6 = *(Input_section **)(this + 0x74)" identifier = (pointer_expression "*(Input_section **)(this + 0x74)" * (cast_expression "(Input_section **)(this + 0x74)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) ))))) ;) }))) (labeled_statement "LAB_00215fdc:\n      this_00 = this_00 + 0x18;" statement_identifier : (expression_statement "this_00 = this_00 + 0x18;" (assignment_expression "this_00 = this_00 + 0x18" identifier = (binary_expression "this_00 + 0x18" identifier + number_literal)) ;)) }) while (parenthesized_expression "(pIVar6 != this_00)" ( (binary_expression "pIVar6 != this_00" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* DWARF original prototype: void update_section_layout(Output_section * this, Section_layout_order\n   * order_map) */\n\nvoid __thiscall\ngold::Output_section::update_section_layout(Output_section *this,Section_layout_order *order_map)\n\n{\n  Relobj *pRVar1;\n  uint uVar2;\n  _Base_ptr p_Var3;\n  _Base_ptr p_Var4;\n  _Base_ptr p_Var5;\n  pointer pIVar6;\n  Input_section *this_00;\n  _Rb_tree_header *p_Var7;\n  \n  pIVar6 = (this->input_sections_).\n           super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n           ._M_impl._M_finish;\n  this_00 = (this->input_sections_).\n            super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n            ._M_impl._M_start;\n  if (this_00 != pIVar6) {\n    p_Var7 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;\n    do {\n      if (this_00->shndx_ + 4 < 4) {\n        if (this_00->shndx_ == 0xfffffffc) {\n          pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        pRVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var5 = &p_Var7->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);\n          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = (this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish;\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 1;\n    } while (pIVar6 != this_00);\n  }\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall\ngold::Output_section::update_section_layout(Output_section *this,Section_layout_order *order_map)\n\n{\n  Relobj *pRVar1;\n  uint uVar2;\n  _Base_ptr p_Var3;\n  _Base_ptr p_Var4;\n  _Base_ptr p_Var5;\n  pointer pIVar6;\n  Input_section *this_00;\n  _Rb_tree_header *p_Var7;\n  \n  pIVar6 = (this->input_sections_).\n           super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n           ._M_impl._M_finish;\n  this_00 = (this->input_sections_).\n            super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n            ._M_impl._M_start;\n  if (this_00 != pIVar6) {\n    p_Var7 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;\n    do {\n      if (this_00->shndx_ + 4 < 4) {\n        if (this_00->shndx_ == 0xfffffffc) {\n          pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        pRVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var5 = &p_Var7->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);\n          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = (this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish;\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 1;\n    } while (pIVar6 != this_00);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section::" identifier : : identifier : :) (function_declarator "update_section_layout(Output_section *this,Section_layout_order *order_map)" identifier (parameter_list "(Output_section *this,Section_layout_order *order_map)" ( (parameter_declaration "Output_section *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Section_layout_order *order_map" type_identifier (pointer_declarator "*order_map" * identifier)) ))) (compound_statement "{\n  Relobj *pRVar1;\n  uint uVar2;\n  _Base_ptr p_Var3;\n  _Base_ptr p_Var4;\n  _Base_ptr p_Var5;\n  pointer pIVar6;\n  Input_section *this_00;\n  _Rb_tree_header *p_Var7;\n  \n  pIVar6 = (this->input_sections_).\n           super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n           ._M_impl._M_finish;\n  this_00 = (this->input_sections_).\n            super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n            ._M_impl._M_start;\n  if (this_00 != pIVar6) {\n    p_Var7 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;\n    do {\n      if (this_00->shndx_ + 4 < 4) {\n        if (this_00->shndx_ == 0xfffffffc) {\n          pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        pRVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var5 = &p_Var7->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);\n          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = (this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish;\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 1;\n    } while (pIVar6 != this_00);\n  }\n  return;\n}" { (declaration "Relobj *pRVar1;" type_identifier (pointer_declarator "*pRVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "_Base_ptr p_Var3;" type_identifier identifier ;) (declaration "_Base_ptr p_Var4;" type_identifier identifier ;) (declaration "_Base_ptr p_Var5;" type_identifier identifier ;) (declaration "pointer pIVar6;" type_identifier identifier ;) (declaration "Input_section *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "_Rb_tree_header *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (ERROR "pIVar6 = (this->input_sections_).\n           super__Vector_base<gold::" (assignment_expression "pIVar6 = (this->input_sections_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->input_sections_).\n           super__Vector_base<gold" (field_expression "(this->input_sections_).\n           super__Vector_base" (parenthesized_expression "(this->input_sections_)" ( (field_expression "this->input_sections_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n           ._M_impl._M_finish;" statement_identifier (ERROR "::Input_section,_std::allocator<gold:" : : (comma_expression "Input_section,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Output_section::Input_section>_>\n           ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Input_section>_>\n           ._M_impl._M_finish;" (field_expression "Input_section>_>\n           ._M_impl._M_finish" (field_expression "Input_section>_>\n           ._M_impl" (binary_expression "Input_section>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (ERROR "this_00 = (this->input_sections_).\n            super__Vector_base<gold::" (assignment_expression "this_00 = (this->input_sections_).\n            super__Vector_base<gold" identifier = (binary_expression "(this->input_sections_).\n            super__Vector_base<gold" (field_expression "(this->input_sections_).\n            super__Vector_base" (parenthesized_expression "(this->input_sections_)" ( (field_expression "this->input_sections_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n            ._M_impl._M_start;" statement_identifier (ERROR "::Input_section,_std::allocator<gold:" : : (comma_expression "Input_section,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Output_section::Input_section>_>\n            ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Input_section>_>\n            ._M_impl._M_start;" (field_expression "Input_section>_>\n            ._M_impl._M_start" (field_expression "Input_section>_>\n            ._M_impl" (binary_expression "Input_section>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (if_statement "if (this_00 != pIVar6) {\n    p_Var7 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;\n    do {\n      if (this_00->shndx_ + 4 < 4) {\n        if (this_00->shndx_ == 0xfffffffc) {\n          pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        pRVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var5 = &p_Var7->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);\n          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = (this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish;\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 1;\n    } while (pIVar6 != this_00);\n  }" if (parenthesized_expression "(this_00 != pIVar6)" ( (binary_expression "this_00 != pIVar6" identifier != identifier) )) (compound_statement "{\n    p_Var7 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;\n    do {\n      if (this_00->shndx_ + 4 < 4) {\n        if (this_00->shndx_ == 0xfffffffc) {\n          pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        pRVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var5 = &p_Var7->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);\n          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = (this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish;\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 1;\n    } while (pIVar6 != this_00);\n  }" { (expression_statement "p_Var7 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var7 = &(order_map->_M_t)._M_impl.super__Rb_tree_header" identifier = (pointer_expression "&(order_map->_M_t)._M_impl.super__Rb_tree_header" & (field_expression "(order_map->_M_t)._M_impl.super__Rb_tree_header" (field_expression "(order_map->_M_t)._M_impl" (parenthesized_expression "(order_map->_M_t)" ( (field_expression "order_map->_M_t" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (do_statement "do {\n      if (this_00->shndx_ + 4 < 4) {\n        if (this_00->shndx_ == 0xfffffffc) {\n          pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        pRVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var5 = &p_Var7->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);\n          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = (this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish;\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 1;\n    } while (pIVar6 != this_00);" do (compound_statement "{\n      if (this_00->shndx_ + 4 < 4) {\n        if (this_00->shndx_ == 0xfffffffc) {\n          pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        pRVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var5 = &p_Var7->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);\n          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = (this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish;\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 1;\n    }" { (if_statement "if (this_00->shndx_ + 4 < 4) {\n        if (this_00->shndx_ == 0xfffffffc) {\n          pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        pRVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var5 = &p_Var7->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);\n          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = (this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish;\n      }" if (parenthesized_expression "(this_00->shndx_ + 4 < 4)" ( (binary_expression "this_00->shndx_ + 4 < 4" (binary_expression "this_00->shndx_ + 4" (field_expression "this_00->shndx_" identifier -> field_identifier) + number_literal) < number_literal) )) (compound_statement "{\n        if (this_00->shndx_ == 0xfffffffc) {\n          pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;\n          goto LAB_00215f3c;\n        }\n      }" { (if_statement "if (this_00->shndx_ == 0xfffffffc) {\n          pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;\n          goto LAB_00215f3c;\n        }" if (parenthesized_expression "(this_00->shndx_ == 0xfffffffc)" ( (binary_expression "this_00->shndx_ == 0xfffffffc" (field_expression "this_00->shndx_" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n          pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;\n          goto LAB_00215f3c;\n        }" { (expression_statement "pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_;" (assignment_expression "pRVar1 = (Relobj *)(((this_00->u2_).object)->super_Object).xindex_" identifier = (cast_expression "(Relobj *)(((this_00->u2_).object)->super_Object).xindex_" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(((this_00->u2_).object)->super_Object).xindex_" (parenthesized_expression "(((this_00->u2_).object)->super_Object)" ( (field_expression "((this_00->u2_).object)->super_Object" (parenthesized_expression "((this_00->u2_).object)" ( (field_expression "(this_00->u2_).object" (parenthesized_expression "(this_00->u2_)" ( (field_expression "this_00->u2_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier))) ;) (goto_statement "goto LAB_00215f3c;" goto statement_identifier ;) })) }) (else_clause "else {\n        pRVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var5 = &p_Var7->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);\n          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = (this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish;\n      }" else (compound_statement "{\n        pRVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var5 = &p_Var7->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);\n          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = (this->input_sections_).\n                 super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish;\n      }" { (ERROR "pRVar1 = Input_section::" (assignment_expression "pRVar1 = Input_section" identifier = identifier) : :) (expression_statement "relobj(this_00);" (call_expression "relobj(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;) (labeled_statement "LAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);" statement_identifier : (ERROR "uVar2 = Input_section::" (assignment_expression "uVar2 = Input_section" identifier = identifier) : :) (expression_statement "shndx(this_00);" (call_expression "shndx(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;)) (expression_statement "p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent" (field_expression "(order_map->_M_t)._M_impl.super__Rb_tree_header._M_header" (field_expression "(order_map->_M_t)._M_impl.super__Rb_tree_header" (field_expression "(order_map->_M_t)._M_impl" (parenthesized_expression "(order_map->_M_t)" ( (field_expression "order_map->_M_t" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "p_Var5 = &p_Var7->_M_header;" (assignment_expression "p_Var5 = &p_Var7->_M_header" identifier = (pointer_expression "&p_Var7->_M_header" & (field_expression "p_Var7->_M_header" identifier -> field_identifier))) ;) (if_statement "if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);\n          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }" if (parenthesized_expression "(p_Var3 != (_Base_ptr)0x0)" ( (binary_expression "p_Var3 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);\n          if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }" { (do_statement "do {\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          } while (p_Var4 != (_Base_ptr)0x0);" do (compound_statement "{\n            if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }\n            p_Var3 = p_Var4;\n          }" { (if_statement "if ((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))\n            {\n              p_Var4 = p_Var3->_M_right;\n            }\n            else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }" if (parenthesized_expression "((*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))))" ( (binary_expression "(*(Relobj **)(p_Var3 + 1) < pRVar1) ||\n               ((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2)))" (parenthesized_expression "(*(Relobj **)(p_Var3 + 1) < pRVar1)" ( (binary_expression "*(Relobj **)(p_Var3 + 1) < pRVar1" (pointer_expression "*(Relobj **)(p_Var3 + 1)" * (cast_expression "(Relobj **)(p_Var3 + 1)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var3 + 1)" ( (binary_expression "p_Var3 + 1" identifier + number_literal) )))) < identifier) )) || (parenthesized_expression "((pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2)))" ( (parenthesized_expression "(pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2))" ( (binary_expression "pRVar1 == *(Relobj **)(p_Var3 + 1) && (*(uint *)((int)(p_Var3 + 1) + 4) < uVar2)" (binary_expression "pRVar1 == *(Relobj **)(p_Var3 + 1)" identifier == (pointer_expression "*(Relobj **)(p_Var3 + 1)" * (cast_expression "(Relobj **)(p_Var3 + 1)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var3 + 1)" ( (binary_expression "p_Var3 + 1" identifier + number_literal) ))))) && (parenthesized_expression "(*(uint *)((int)(p_Var3 + 1) + 4) < uVar2)" ( (binary_expression "*(uint *)((int)(p_Var3 + 1) + 4) < uVar2" (pointer_expression "*(uint *)((int)(p_Var3 + 1) + 4)" * (cast_expression "(uint *)((int)(p_Var3 + 1) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(p_Var3 + 1) + 4)" ( (binary_expression "(int)(p_Var3 + 1) + 4" (cast_expression "(int)(p_Var3 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_Var3 + 1)" ( (binary_expression "p_Var3 + 1" identifier + number_literal) ))) + number_literal) )))) < identifier) ))) )) ))) )) (compound_statement "{\n              p_Var4 = p_Var3->_M_right;\n            }" { (expression_statement "p_Var4 = p_Var3->_M_right;" (assignment_expression "p_Var4 = p_Var3->_M_right" identifier = (field_expression "p_Var3->_M_right" identifier -> field_identifier)) ;) }) (else_clause "else {\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }" else (compound_statement "{\n              p_Var4 = p_Var3->_M_left;\n              p_Var5 = p_Var3;\n            }" { (expression_statement "p_Var4 = p_Var3->_M_left;" (assignment_expression "p_Var4 = p_Var3->_M_left" identifier = (field_expression "p_Var3->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var5 = p_Var3;" (assignment_expression "p_Var5 = p_Var3" identifier = identifier) ;) }))) (expression_statement "p_Var3 = p_Var4;" (assignment_expression "p_Var3 = p_Var4" identifier = identifier) ;) }) while (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (if_statement "if ((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)) {\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }" if (parenthesized_expression "((((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0))" ( (binary_expression "(((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)" (parenthesized_expression "(((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2))))" ( (binary_expression "((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)) &&\n              ((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))" (parenthesized_expression "((p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1))" ( (binary_expression "(p_Var7 != (_Rb_tree_header *)p_Var5) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)" (parenthesized_expression "(p_Var7 != (_Rb_tree_header *)p_Var5)" ( (binary_expression "p_Var7 != (_Rb_tree_header *)p_Var5" identifier != (cast_expression "(_Rb_tree_header *)p_Var5" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) && (parenthesized_expression "((Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1)" ( (binary_expression "(Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count <= pRVar1" (cast_expression "(Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((_Rb_tree_header *)p_Var5)->_M_node_count" (parenthesized_expression "((_Rb_tree_header *)p_Var5)" ( (cast_expression "(_Rb_tree_header *)p_Var5" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) <= identifier) ))) )) && (parenthesized_expression "((pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)))" ( (parenthesized_expression "(pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2))" ( (binary_expression "pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count ||\n               (*(uint *)((int)p_Var5 + 0x14) <= uVar2)" (binary_expression "pRVar1 != (Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count" identifier != (cast_expression "(Relobj *)((_Rb_tree_header *)p_Var5)->_M_node_count" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((_Rb_tree_header *)p_Var5)->_M_node_count" (parenthesized_expression "((_Rb_tree_header *)p_Var5)" ( (cast_expression "(_Rb_tree_header *)p_Var5" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) || (parenthesized_expression "(*(uint *)((int)p_Var5 + 0x14) <= uVar2)" ( (binary_expression "*(uint *)((int)p_Var5 + 0x14) <= uVar2" (pointer_expression "*(uint *)((int)p_Var5 + 0x14)" * (cast_expression "(uint *)((int)p_Var5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var5 + 0x14)" ( (binary_expression "(int)p_Var5 + 0x14" (cast_expression "(int)p_Var5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= identifier) ))) )) ))) )) && (parenthesized_expression "(*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0)" ( (binary_expression "*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4) != 0" (pointer_expression "*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4)" * (cast_expression "(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((undefined1 *)((int)p_Var5 + 0x14) + 4)" ( (binary_expression "(undefined1 *)((int)p_Var5 + 0x14) + 4" (cast_expression "(undefined1 *)((int)p_Var5 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var5 + 0x14)" ( (binary_expression "(int)p_Var5 + 0x14" (cast_expression "(int)p_Var5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);\n            *(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }" { (ERROR "pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold::" (assignment_expression "pIVar6 = (this->input_sections_).\n                     super__Vector_base<gold" identifier = (binary_expression "(this->input_sections_).\n                     super__Vector_base<gold" (field_expression "(this->input_sections_).\n                     super__Vector_base" (parenthesized_expression "(this->input_sections_)" ( (field_expression "this->input_sections_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                     ._M_impl._M_finish;" statement_identifier (ERROR "::Input_section,_std::allocator<gold:" : : (comma_expression "Input_section,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Output_section::Input_section>_>\n                     ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Input_section>_>\n                     ._M_impl._M_finish;" (field_expression "Input_section>_>\n                     ._M_impl._M_finish" (field_expression "Input_section>_>\n                     ._M_impl" (binary_expression "Input_section>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4);" (assignment_expression "this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4)" (field_expression "this_00->section_order_index_" identifier -> field_identifier) = (pointer_expression "*(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4)" * (cast_expression "(uint *)((undefined1 *)((int)p_Var5 + 0x14) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((undefined1 *)((int)p_Var5 + 0x14) + 4)" ( (binary_expression "(undefined1 *)((int)p_Var5 + 0x14) + 4" (cast_expression "(undefined1 *)((int)p_Var5 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var5 + 0x14)" ( (binary_expression "(int)p_Var5 + 0x14" (cast_expression "(int)p_Var5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) + number_literal) ))))) ;) (expression_statement "*(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000;" (assignment_expression "*(uint *)&this->field_0x98 = *(uint *)&this->field_0x98 & 0xffbfffff | 0x400000" (pointer_expression "*(uint *)&this->field_0x98" * (cast_expression "(uint *)&this->field_0x98" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x98" & (field_expression "this->field_0x98" identifier -> field_identifier)))) = (binary_expression "*(uint *)&this->field_0x98 & 0xffbfffff | 0x400000" (binary_expression "*(uint *)&this->field_0x98 & 0xffbfffff" (pointer_expression "*(uint *)&this->field_0x98" * (cast_expression "(uint *)&this->field_0x98" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x98" & (field_expression "this->field_0x98" identifier -> field_identifier)))) & number_literal) | number_literal)) ;) (goto_statement "goto LAB_00215fdc;" goto statement_identifier ;) })) })) (ERROR "pIVar6 = (this->input_sections_).\n                 super__Vector_base<gold::" (assignment_expression "pIVar6 = (this->input_sections_).\n                 super__Vector_base<gold" identifier = (binary_expression "(this->input_sections_).\n                 super__Vector_base<gold" (field_expression "(this->input_sections_).\n                 super__Vector_base" (parenthesized_expression "(this->input_sections_)" ( (field_expression "this->input_sections_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n                 ._M_impl._M_finish;" statement_identifier (ERROR "::Input_section,_std::allocator<gold:" : : (comma_expression "Input_section,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Output_section::Input_section>_>\n                 ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Input_section>_>\n                 ._M_impl._M_finish;" (field_expression "Input_section>_>\n                 ._M_impl._M_finish" (field_expression "Input_section>_>\n                 ._M_impl" (binary_expression "Input_section>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) }))) (labeled_statement "LAB_00215fdc:\n      this_00 = this_00 + 1;" statement_identifier : (expression_statement "this_00 = this_00 + 1;" (assignment_expression "this_00 = this_00 + 1" identifier = (binary_expression "this_00 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(pIVar6 != this_00)" ( (binary_expression "pIVar6 != this_00" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __thiscall gold::Output_section::update_section_layout(Output_section *this,map *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  map *pmVar3;\n  map *pmVar4;\n  map *pmVar5;\n  Input_section *pIVar6;\n  Input_section *this_00;\n  \n  pIVar6 = *(Input_section **)(this + 0x74);\n  this_00 = *(Input_section **)(this + 0x70);\n  if (this_00 != pIVar6) {\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }\n  return;\n}\n\n" (function_definition "void __thiscall gold::Output_section::update_section_layout(Output_section *this,map *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  map *pmVar3;\n  map *pmVar4;\n  map *pmVar5;\n  Input_section *pIVar6;\n  Input_section *this_00;\n  \n  pIVar6 = *(Input_section **)(this + 0x74);\n  this_00 = *(Input_section **)(this + 0x70);\n  if (this_00 != pIVar6) {\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section::" identifier : : identifier : :) (function_declarator "update_section_layout(Output_section *this,map *param_1)" identifier (parameter_list "(Output_section *this,map *param_1)" ( (parameter_declaration "Output_section *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "map *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  map *pmVar3;\n  map *pmVar4;\n  map *pmVar5;\n  Input_section *pIVar6;\n  Input_section *this_00;\n  \n  pIVar6 = *(Input_section **)(this + 0x74);\n  this_00 = *(Input_section **)(this + 0x70);\n  if (this_00 != pIVar6) {\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "map *pmVar3;" type_identifier (pointer_declarator "*pmVar3" * identifier) ;) (declaration "map *pmVar4;" type_identifier (pointer_declarator "*pmVar4" * identifier) ;) (declaration "map *pmVar5;" type_identifier (pointer_declarator "*pmVar5" * identifier) ;) (declaration "Input_section *pIVar6;" type_identifier (pointer_declarator "*pIVar6" * identifier) ;) (declaration "Input_section *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (expression_statement "pIVar6 = *(Input_section **)(this + 0x74);" (assignment_expression "pIVar6 = *(Input_section **)(this + 0x74)" identifier = (pointer_expression "*(Input_section **)(this + 0x74)" * (cast_expression "(Input_section **)(this + 0x74)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) ))))) ;) (expression_statement "this_00 = *(Input_section **)(this + 0x70);" (assignment_expression "this_00 = *(Input_section **)(this + 0x70)" identifier = (pointer_expression "*(Input_section **)(this + 0x70)" * (cast_expression "(Input_section **)(this + 0x70)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x70)" ( (binary_expression "this + 0x70" identifier + number_literal) ))))) ;) (if_statement "if (this_00 != pIVar6) {\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }" if (parenthesized_expression "(this_00 != pIVar6)" ( (binary_expression "this_00 != pIVar6" identifier != identifier) )) (compound_statement "{\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }" { (do_statement "do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);" do (compound_statement "{\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    }" { (if_statement "if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }" if (parenthesized_expression "(*(int *)this_00 + 4U < 4)" ( (binary_expression "*(int *)this_00 + 4U < 4" (binary_expression "*(int *)this_00 + 4U" (pointer_expression "*(int *)this_00" * (cast_expression "(int *)this_00" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) < number_literal) )) (compound_statement "{\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }" { (if_statement "if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }" if (parenthesized_expression "(*(int *)this_00 == -4)" ( (binary_expression "*(int *)this_00 == -4" (pointer_expression "*(int *)this_00" * (cast_expression "(int *)this_00" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) )) (compound_statement "{\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }" { (expression_statement "uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);" (assignment_expression "uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30)" identifier = (pointer_expression "*(uint *)(*(int *)(this_00 + 0x10) + 0x30)" * (cast_expression "(uint *)(*(int *)(this_00 + 0x10) + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(this_00 + 0x10) + 0x30)" ( (binary_expression "*(int *)(this_00 + 0x10) + 0x30" (pointer_expression "*(int *)(this_00 + 0x10)" * (cast_expression "(int *)(this_00 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00 + 0x10)" ( (binary_expression "this_00 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (goto_statement "goto LAB_00215f3c;" goto statement_identifier ;) })) }) (else_clause "else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }" else (compound_statement "{\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }" { (ERROR "uVar1 = Input_section::" (assignment_expression "uVar1 = Input_section" identifier = identifier) : :) (expression_statement "relobj(this_00);" (call_expression "relobj(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;) (labeled_statement "LAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);" statement_identifier : (ERROR "uVar2 = Input_section::" (assignment_expression "uVar2 = Input_section" identifier = identifier) : :) (expression_statement "shndx(this_00);" (call_expression "shndx(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;)) (expression_statement "pmVar3 = *(map **)(param_1 + 8);" (assignment_expression "pmVar3 = *(map **)(param_1 + 8)" identifier = (pointer_expression "*(map **)(param_1 + 8)" * (cast_expression "(map **)(param_1 + 8)" ( (type_descriptor "map **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "pmVar5 = param_1 + 4;" (assignment_expression "pmVar5 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (if_statement "if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }" if (parenthesized_expression "(*(map **)(param_1 + 8) != (map *)0x0)" ( (binary_expression "*(map **)(param_1 + 8) != (map *)0x0" (pointer_expression "*(map **)(param_1 + 8)" * (cast_expression "(map **)(param_1 + 8)" ( (type_descriptor "map **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) != (cast_expression "(map *)0x0" ( (type_descriptor "map *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }" { (do_statement "do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);" do (compound_statement "{\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          }" { (if_statement "if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }" if (parenthesized_expression "((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2))))" ( (binary_expression "(*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))" (parenthesized_expression "(*(uint *)(pmVar3 + 0x10) < uVar1)" ( (binary_expression "*(uint *)(pmVar3 + 0x10) < uVar1" (pointer_expression "*(uint *)(pmVar3 + 0x10)" * (cast_expression "(uint *)(pmVar3 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar3 + 0x10)" ( (binary_expression "pmVar3 + 0x10" identifier + number_literal) )))) < identifier) )) || (parenthesized_expression "((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))" ( (parenthesized_expression "(uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2))" ( (binary_expression "uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)" (binary_expression "uVar1 == *(uint *)(pmVar3 + 0x10)" identifier == (pointer_expression "*(uint *)(pmVar3 + 0x10)" * (cast_expression "(uint *)(pmVar3 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar3 + 0x10)" ( (binary_expression "pmVar3 + 0x10" identifier + number_literal) ))))) && (parenthesized_expression "(*(uint *)(pmVar3 + 0x14) < uVar2)" ( (binary_expression "*(uint *)(pmVar3 + 0x14) < uVar2" (pointer_expression "*(uint *)(pmVar3 + 0x14)" * (cast_expression "(uint *)(pmVar3 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar3 + 0x14)" ( (binary_expression "pmVar3 + 0x14" identifier + number_literal) )))) < identifier) ))) )) ))) )) (compound_statement "{\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }" { (expression_statement "pmVar4 = *(map **)(pmVar3 + 0xc);" (assignment_expression "pmVar4 = *(map **)(pmVar3 + 0xc)" identifier = (pointer_expression "*(map **)(pmVar3 + 0xc)" * (cast_expression "(map **)(pmVar3 + 0xc)" ( (type_descriptor "map **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pmVar3 + 0xc)" ( (binary_expression "pmVar3 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }" else (compound_statement "{\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }" { (expression_statement "pmVar4 = *(map **)(pmVar3 + 8);" (assignment_expression "pmVar4 = *(map **)(pmVar3 + 8)" identifier = (pointer_expression "*(map **)(pmVar3 + 8)" * (cast_expression "(map **)(pmVar3 + 8)" ( (type_descriptor "map **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pmVar3 + 8)" ( (binary_expression "pmVar3 + 8" identifier + number_literal) ))))) ;) (expression_statement "pmVar5 = pmVar3;" (assignment_expression "pmVar5 = pmVar3" identifier = identifier) ;) }))) (expression_statement "pmVar3 = pmVar4;" (assignment_expression "pmVar3 = pmVar4" identifier = identifier) ;) }) while (parenthesized_expression "(pmVar4 != (map *)0x0)" ( (binary_expression "pmVar4 != (map *)0x0" identifier != (cast_expression "(map *)0x0" ( (type_descriptor "map *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }" if (parenthesized_expression "((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0))" ( (binary_expression "(((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)" (parenthesized_expression "(((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2))))" ( (binary_expression "((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))" (parenthesized_expression "((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1))" ( (binary_expression "(param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)" (parenthesized_expression "(param_1 + 4 != pmVar5)" ( (binary_expression "param_1 + 4 != pmVar5" (binary_expression "param_1 + 4" identifier + number_literal) != identifier) )) && (parenthesized_expression "(*(uint *)(pmVar5 + 0x10) <= uVar1)" ( (binary_expression "*(uint *)(pmVar5 + 0x10) <= uVar1" (pointer_expression "*(uint *)(pmVar5 + 0x10)" * (cast_expression "(uint *)(pmVar5 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar5 + 0x10)" ( (binary_expression "pmVar5 + 0x10" identifier + number_literal) )))) <= identifier) ))) )) && (parenthesized_expression "((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))" ( (parenthesized_expression "(uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2))" ( (binary_expression "uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)" (binary_expression "uVar1 != *(uint *)(pmVar5 + 0x10)" identifier != (pointer_expression "*(uint *)(pmVar5 + 0x10)" * (cast_expression "(uint *)(pmVar5 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar5 + 0x10)" ( (binary_expression "pmVar5 + 0x10" identifier + number_literal) ))))) || (parenthesized_expression "(*(uint *)(pmVar5 + 0x14) <= uVar2)" ( (binary_expression "*(uint *)(pmVar5 + 0x14) <= uVar2" (pointer_expression "*(uint *)(pmVar5 + 0x14)" * (cast_expression "(uint *)(pmVar5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar5 + 0x14)" ( (binary_expression "pmVar5 + 0x14" identifier + number_literal) )))) <= identifier) ))) )) ))) )) && (parenthesized_expression "(*(int *)(pmVar5 + 0x18) != 0)" ( (binary_expression "*(int *)(pmVar5 + 0x18) != 0" (pointer_expression "*(int *)(pmVar5 + 0x18)" * (cast_expression "(int *)(pmVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar5 + 0x18)" ( (binary_expression "pmVar5 + 0x18" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }" { (expression_statement "pIVar6 = *(Input_section **)(this + 0x74);" (assignment_expression "pIVar6 = *(Input_section **)(this + 0x74)" identifier = (pointer_expression "*(Input_section **)(this + 0x74)" * (cast_expression "(Input_section **)(this + 0x74)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);" (assignment_expression "*(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18)" (pointer_expression "*(int *)(this_00 + 0x14)" * (cast_expression "(int *)(this_00 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00 + 0x14)" ( (binary_expression "this_00 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(int *)(pmVar5 + 0x18)" * (cast_expression "(int *)(pmVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar5 + 0x18)" ( (binary_expression "pmVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;" (assignment_expression "*(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000" (pointer_expression "*(uint *)(this + 0x98)" * (cast_expression "(uint *)(this + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x98)" ( (binary_expression "this + 0x98" identifier + number_literal) )))) = (binary_expression "*(uint *)(this + 0x98) & 0xffbfffff | 0x400000" (binary_expression "*(uint *)(this + 0x98) & 0xffbfffff" (pointer_expression "*(uint *)(this + 0x98)" * (cast_expression "(uint *)(this + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x98)" ( (binary_expression "this + 0x98" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (goto_statement "goto LAB_00215fdc;" goto statement_identifier ;) })) })) (expression_statement "pIVar6 = *(Input_section **)(this + 0x74);" (assignment_expression "pIVar6 = *(Input_section **)(this + 0x74)" identifier = (pointer_expression "*(Input_section **)(this + 0x74)" * (cast_expression "(Input_section **)(this + 0x74)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) ))))) ;) }))) (labeled_statement "LAB_00215fdc:\n      this_00 = this_00 + 0x18;" statement_identifier : (expression_statement "this_00 = this_00 + 0x18;" (assignment_expression "this_00 = this_00 + 0x18" identifier = (binary_expression "this_00 + 0x18" identifier + number_literal)) ;)) }) while (parenthesized_expression "(pIVar6 != this_00)" ( (binary_expression "pIVar6 != this_00" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(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)) ))) (compound_statement { (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) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (ERROR (assignment_expression IDENT = IDENT) : :) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (ERROR (assignment_expression IDENT = IDENT) : :) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (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 ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) ))) )) ))) )) (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) ))))) ;) }) (else_clause else (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) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_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) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) || (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) )))) != 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) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void __thiscall gold::Output_section::update_section_layout(Output_section *this,map *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  map *pmVar3;\n  map *pmVar4;\n  map *pmVar5;\n  Input_section *pIVar6;\n  Input_section *this_00;\n  \n  pIVar6 = *(Input_section **)(this + 0x74);\n  this_00 = *(Input_section **)(this + 0x70);\n  if (this_00 != pIVar6) {\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }\n  return;\n}" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::Output_section::" (identifier "gold") (: ":") (: ":") (identifier "Output_section") (: ":") (: ":")) (function_declarator "update_section_layout(Output_section *this,map *param_1)" (identifier "update_section_layout") (parameter_list "(Output_section *this,map *param_1)" (( "(") (parameter_declaration "Output_section *this" (type_identifier "Output_section") (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "map *param_1" (type_identifier "map") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  map *pmVar3;\n  map *pmVar4;\n  map *pmVar5;\n  Input_section *pIVar6;\n  Input_section *this_00;\n  \n  pIVar6 = *(Input_section **)(this + 0x74);\n  this_00 = *(Input_section **)(this + 0x70);\n  if (this_00 != pIVar6) {\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "map *pmVar3;" (type_identifier "map") (pointer_declarator "*pmVar3" (* "*") (identifier "pmVar3")) (; ";")) (declaration "map *pmVar4;" (type_identifier "map") (pointer_declarator "*pmVar4" (* "*") (identifier "pmVar4")) (; ";")) (declaration "map *pmVar5;" (type_identifier "map") (pointer_declarator "*pmVar5" (* "*") (identifier "pmVar5")) (; ";")) (declaration "Input_section *pIVar6;" (type_identifier "Input_section") (pointer_declarator "*pIVar6" (* "*") (identifier "pIVar6")) (; ";")) (declaration "Input_section *this_00;" (type_identifier "Input_section") (pointer_declarator "*this_00" (* "*") (identifier "this_00")) (; ";")) (expression_statement "pIVar6 = *(Input_section **)(this + 0x74);" (assignment_expression "pIVar6 = *(Input_section **)(this + 0x74)" (identifier "pIVar6") (= "=") (pointer_expression "*(Input_section **)(this + 0x74)" (* "*") (cast_expression "(Input_section **)(this + 0x74)" (( "(") (type_descriptor "Input_section **" (type_identifier "Input_section") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x74)" (( "(") (binary_expression "this + 0x74" (identifier "this") (+ "+") (number_literal "0x74")) () ")"))))) (; ";")) (expression_statement "this_00 = *(Input_section **)(this + 0x70);" (assignment_expression "this_00 = *(Input_section **)(this + 0x70)" (identifier "this_00") (= "=") (pointer_expression "*(Input_section **)(this + 0x70)" (* "*") (cast_expression "(Input_section **)(this + 0x70)" (( "(") (type_descriptor "Input_section **" (type_identifier "Input_section") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x70)" (( "(") (binary_expression "this + 0x70" (identifier "this") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (if_statement "if (this_00 != pIVar6) {\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }" (if "if") (parenthesized_expression "(this_00 != pIVar6)" (( "(") (binary_expression "this_00 != pIVar6" (identifier "this_00") (!= "!=") (identifier "pIVar6")) () ")")) (compound_statement "{\n    do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);\n  }" ({ "{") (do_statement "do {\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    } while (pIVar6 != this_00);" (do "do") (compound_statement "{\n      if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }\nLAB_00215fdc:\n      this_00 = this_00 + 0x18;\n    }" ({ "{") (if_statement "if (*(int *)this_00 + 4U < 4) {\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }\n      else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }" (if "if") (parenthesized_expression "(*(int *)this_00 + 4U < 4)" (( "(") (binary_expression "*(int *)this_00 + 4U < 4" (binary_expression "*(int *)this_00 + 4U" (pointer_expression "*(int *)this_00" (* "*") (cast_expression "(int *)this_00" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this_00"))) (+ "+") (number_literal "4U")) (< "<") (number_literal "4")) () ")")) (compound_statement "{\n        if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }\n      }" ({ "{") (if_statement "if (*(int *)this_00 == -4) {\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }" (if "if") (parenthesized_expression "(*(int *)this_00 == -4)" (( "(") (binary_expression "*(int *)this_00 == -4" (pointer_expression "*(int *)this_00" (* "*") (cast_expression "(int *)this_00" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this_00"))) (== "==") (number_literal "-4")) () ")")) (compound_statement "{\n          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);\n          goto LAB_00215f3c;\n        }" ({ "{") (expression_statement "uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);" (assignment_expression "uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(*(int *)(this_00 + 0x10) + 0x30)" (* "*") (cast_expression "(uint *)(*(int *)(this_00 + 0x10) + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(this_00 + 0x10) + 0x30)" (( "(") (binary_expression "*(int *)(this_00 + 0x10) + 0x30" (pointer_expression "*(int *)(this_00 + 0x10)" (* "*") (cast_expression "(int *)(this_00 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this_00 + 0x10)" (( "(") (binary_expression "this_00 + 0x10" (identifier "this_00") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (goto_statement "goto LAB_00215f3c;" (goto "goto") (statement_identifier "LAB_00215f3c") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }" (else "else") (compound_statement "{\n        uVar1 = Input_section::relobj(this_00);\nLAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);\n        pmVar3 = *(map **)(param_1 + 8);\n        pmVar5 = param_1 + 4;\n        if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }\n        pIVar6 = *(Input_section **)(this + 0x74);\n      }" ({ "{") (ERROR "uVar1 = Input_section::" (assignment_expression "uVar1 = Input_section" (identifier "uVar1") (= "=") (identifier "Input_section")) (: ":") (: ":")) (expression_statement "relobj(this_00);" (call_expression "relobj(this_00)" (identifier "relobj") (argument_list "(this_00)" (( "(") (identifier "this_00") () ")"))) (; ";")) (labeled_statement "LAB_00215f3c:\n        uVar2 = Input_section::shndx(this_00);" (statement_identifier "LAB_00215f3c") (: ":") (ERROR "uVar2 = Input_section::" (assignment_expression "uVar2 = Input_section" (identifier "uVar2") (= "=") (identifier "Input_section")) (: ":") (: ":")) (expression_statement "shndx(this_00);" (call_expression "shndx(this_00)" (identifier "shndx") (argument_list "(this_00)" (( "(") (identifier "this_00") () ")"))) (; ";"))) (expression_statement "pmVar3 = *(map **)(param_1 + 8);" (assignment_expression "pmVar3 = *(map **)(param_1 + 8)" (identifier "pmVar3") (= "=") (pointer_expression "*(map **)(param_1 + 8)" (* "*") (cast_expression "(map **)(param_1 + 8)" (( "(") (type_descriptor "map **" (type_identifier "map") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pmVar5 = param_1 + 4;" (assignment_expression "pmVar5 = param_1 + 4" (identifier "pmVar5") (= "=") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (*(map **)(param_1 + 8) != (map *)0x0) {\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }" (if "if") (parenthesized_expression "(*(map **)(param_1 + 8) != (map *)0x0)" (( "(") (binary_expression "*(map **)(param_1 + 8) != (map *)0x0" (pointer_expression "*(map **)(param_1 + 8)" (* "*") (cast_expression "(map **)(param_1 + 8)" (( "(") (type_descriptor "map **" (type_identifier "map") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (cast_expression "(map *)0x0" (( "(") (type_descriptor "map *" (type_identifier "map") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);\n          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }\n        }" ({ "{") (do_statement "do {\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          } while (pmVar4 != (map *)0x0);" (do "do") (compound_statement "{\n            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }\n            pmVar3 = pmVar4;\n          }" ({ "{") (if_statement "if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }\n            else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }" (if "if") (parenthesized_expression "((*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2))))" (( "(") (binary_expression "(*(uint *)(pmVar3 + 0x10) < uVar1) ||\n               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))" (parenthesized_expression "(*(uint *)(pmVar3 + 0x10) < uVar1)" (( "(") (binary_expression "*(uint *)(pmVar3 + 0x10) < uVar1" (pointer_expression "*(uint *)(pmVar3 + 0x10)" (* "*") (cast_expression "(uint *)(pmVar3 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pmVar3 + 0x10)" (( "(") (binary_expression "pmVar3 + 0x10" (identifier "pmVar3") (+ "+") (number_literal "0x10")) () ")")))) (< "<") (identifier "uVar1")) () ")")) (|| "||") (parenthesized_expression "((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))" (( "(") (parenthesized_expression "(uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2))" (( "(") (binary_expression "uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)" (binary_expression "uVar1 == *(uint *)(pmVar3 + 0x10)" (identifier "uVar1") (== "==") (pointer_expression "*(uint *)(pmVar3 + 0x10)" (* "*") (cast_expression "(uint *)(pmVar3 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pmVar3 + 0x10)" (( "(") (binary_expression "pmVar3 + 0x10" (identifier "pmVar3") (+ "+") (number_literal "0x10")) () ")"))))) (&& "&&") (parenthesized_expression "(*(uint *)(pmVar3 + 0x14) < uVar2)" (( "(") (binary_expression "*(uint *)(pmVar3 + 0x14) < uVar2" (pointer_expression "*(uint *)(pmVar3 + 0x14)" (* "*") (cast_expression "(uint *)(pmVar3 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pmVar3 + 0x14)" (( "(") (binary_expression "pmVar3 + 0x14" (identifier "pmVar3") (+ "+") (number_literal "0x14")) () ")")))) (< "<") (identifier "uVar2")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              pmVar4 = *(map **)(pmVar3 + 0xc);\n            }" ({ "{") (expression_statement "pmVar4 = *(map **)(pmVar3 + 0xc);" (assignment_expression "pmVar4 = *(map **)(pmVar3 + 0xc)" (identifier "pmVar4") (= "=") (pointer_expression "*(map **)(pmVar3 + 0xc)" (* "*") (cast_expression "(map **)(pmVar3 + 0xc)" (( "(") (type_descriptor "map **" (type_identifier "map") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pmVar3 + 0xc)" (( "(") (binary_expression "pmVar3 + 0xc" (identifier "pmVar3") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }" (else "else") (compound_statement "{\n              pmVar4 = *(map **)(pmVar3 + 8);\n              pmVar5 = pmVar3;\n            }" ({ "{") (expression_statement "pmVar4 = *(map **)(pmVar3 + 8);" (assignment_expression "pmVar4 = *(map **)(pmVar3 + 8)" (identifier "pmVar4") (= "=") (pointer_expression "*(map **)(pmVar3 + 8)" (* "*") (cast_expression "(map **)(pmVar3 + 8)" (( "(") (type_descriptor "map **" (type_identifier "map") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pmVar3 + 8)" (( "(") (binary_expression "pmVar3 + 8" (identifier "pmVar3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pmVar5 = pmVar3;" (assignment_expression "pmVar5 = pmVar3" (identifier "pmVar5") (= "=") (identifier "pmVar3")) (; ";")) (} "}")))) (expression_statement "pmVar3 = pmVar4;" (assignment_expression "pmVar3 = pmVar4" (identifier "pmVar3") (= "=") (identifier "pmVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pmVar4 != (map *)0x0)" (( "(") (binary_expression "pmVar4 != (map *)0x0" (identifier "pmVar4") (!= "!=") (cast_expression "(map *)0x0" (( "(") (type_descriptor "map *" (type_identifier "map") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (if_statement "if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)) {\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }" (if "if") (parenthesized_expression "((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0))" (( "(") (binary_expression "(((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&\n             (*(int *)(pmVar5 + 0x18) != 0)" (parenthesized_expression "(((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2))))" (( "(") (binary_expression "((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&\n              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))" (parenthesized_expression "((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1))" (( "(") (binary_expression "(param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)" (parenthesized_expression "(param_1 + 4 != pmVar5)" (( "(") (binary_expression "param_1 + 4 != pmVar5" (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) (!= "!=") (identifier "pmVar5")) () ")")) (&& "&&") (parenthesized_expression "(*(uint *)(pmVar5 + 0x10) <= uVar1)" (( "(") (binary_expression "*(uint *)(pmVar5 + 0x10) <= uVar1" (pointer_expression "*(uint *)(pmVar5 + 0x10)" (* "*") (cast_expression "(uint *)(pmVar5 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pmVar5 + 0x10)" (( "(") (binary_expression "pmVar5 + 0x10" (identifier "pmVar5") (+ "+") (number_literal "0x10")) () ")")))) (<= "<=") (identifier "uVar1")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))" (( "(") (parenthesized_expression "(uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2))" (( "(") (binary_expression "uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)" (binary_expression "uVar1 != *(uint *)(pmVar5 + 0x10)" (identifier "uVar1") (!= "!=") (pointer_expression "*(uint *)(pmVar5 + 0x10)" (* "*") (cast_expression "(uint *)(pmVar5 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pmVar5 + 0x10)" (( "(") (binary_expression "pmVar5 + 0x10" (identifier "pmVar5") (+ "+") (number_literal "0x10")) () ")"))))) (|| "||") (parenthesized_expression "(*(uint *)(pmVar5 + 0x14) <= uVar2)" (( "(") (binary_expression "*(uint *)(pmVar5 + 0x14) <= uVar2" (pointer_expression "*(uint *)(pmVar5 + 0x14)" (* "*") (cast_expression "(uint *)(pmVar5 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pmVar5 + 0x14)" (( "(") (binary_expression "pmVar5 + 0x14" (identifier "pmVar5") (+ "+") (number_literal "0x14")) () ")")))) (<= "<=") (identifier "uVar2")) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(pmVar5 + 0x18) != 0)" (( "(") (binary_expression "*(int *)(pmVar5 + 0x18) != 0" (pointer_expression "*(int *)(pmVar5 + 0x18)" (* "*") (cast_expression "(int *)(pmVar5 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pmVar5 + 0x18)" (( "(") (binary_expression "pmVar5 + 0x18" (identifier "pmVar5") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            pIVar6 = *(Input_section **)(this + 0x74);\n            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);\n            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;\n            goto LAB_00215fdc;\n          }" ({ "{") (expression_statement "pIVar6 = *(Input_section **)(this + 0x74);" (assignment_expression "pIVar6 = *(Input_section **)(this + 0x74)" (identifier "pIVar6") (= "=") (pointer_expression "*(Input_section **)(this + 0x74)" (* "*") (cast_expression "(Input_section **)(this + 0x74)" (( "(") (type_descriptor "Input_section **" (type_identifier "Input_section") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x74)" (( "(") (binary_expression "this + 0x74" (identifier "this") (+ "+") (number_literal "0x74")) () ")"))))) (; ";")) (expression_statement "*(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);" (assignment_expression "*(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18)" (pointer_expression "*(int *)(this_00 + 0x14)" (* "*") (cast_expression "(int *)(this_00 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this_00 + 0x14)" (( "(") (binary_expression "this_00 + 0x14" (identifier "this_00") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "*(int *)(pmVar5 + 0x18)" (* "*") (cast_expression "(int *)(pmVar5 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pmVar5 + 0x18)" (( "(") (binary_expression "pmVar5 + 0x18" (identifier "pmVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;" (assignment_expression "*(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000" (pointer_expression "*(uint *)(this + 0x98)" (* "*") (cast_expression "(uint *)(this + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x98)" (( "(") (binary_expression "this + 0x98" (identifier "this") (+ "+") (number_literal "0x98")) () ")")))) (= "=") (binary_expression "*(uint *)(this + 0x98) & 0xffbfffff | 0x400000" (binary_expression "*(uint *)(this + 0x98) & 0xffbfffff" (pointer_expression "*(uint *)(this + 0x98)" (* "*") (cast_expression "(uint *)(this + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x98)" (( "(") (binary_expression "this + 0x98" (identifier "this") (+ "+") (number_literal "0x98")) () ")")))) (& "&") (number_literal "0xffbfffff")) (| "|") (number_literal "0x400000"))) (; ";")) (goto_statement "goto LAB_00215fdc;" (goto "goto") (statement_identifier "LAB_00215fdc") (; ";")) (} "}"))) (} "}"))) (expression_statement "pIVar6 = *(Input_section **)(this + 0x74);" (assignment_expression "pIVar6 = *(Input_section **)(this + 0x74)" (identifier "pIVar6") (= "=") (pointer_expression "*(Input_section **)(this + 0x74)" (* "*") (cast_expression "(Input_section **)(this + 0x74)" (( "(") (type_descriptor "Input_section **" (type_identifier "Input_section") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x74)" (( "(") (binary_expression "this + 0x74" (identifier "this") (+ "+") (number_literal "0x74")) () ")"))))) (; ";")) (} "}")))) (labeled_statement "LAB_00215fdc:\n      this_00 = this_00 + 0x18;" (statement_identifier "LAB_00215fdc") (: ":") (expression_statement "this_00 = this_00 + 0x18;" (assignment_expression "this_00 = this_00 + 0x18" (identifier "this_00") (= "=") (binary_expression "this_00 + 0x18" (identifier "this_00") (+ "+") (number_literal "0x18"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(pIVar6 != this_00)" (( "(") (binary_expression "pIVar6 != this_00" (identifier "pIVar6") (!= "!=") (identifier "this_00")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: void update_section_layout(Output_section * this, Section_layout_order
   * order_map) */

void __thiscall
gold::type_1::function_1(type_1 *this,type_2 *order_map)

{
  type_3 *var_7;
  type_4 var_8;
  type_5 var_6;
  type_5 var_9;
  type_5 p_Var5;
  type_6 var_3;
  type_7 *var_2;
  type_8 *var_10;
  
  var_3 = (this->input_sections_).
           super__Vector_base<gold::Output_section::type_7,_std::allocator<gold::Output_section::type_7>var_1>
           ._M_impl._M_finish;
  var_2 = (this->input_sections_).
            super__Vector_base<gold::Output_section::type_7,_std::allocator<gold::Output_section::type_7>var_1>
            ._M_impl._M_start;
  if (var_2 != var_3) {
    var_10 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;
    do {
      if (var_2->shndx_ + 4 < 4) {
        if (var_2->shndx_ == 0xfffffffc) {
          var_7 = (type_3 *)(((var_2->u2_).object)->super_Object).xindex_;
          goto LAB_00215f3c;
        }
      }
      else {
        var_7 = type_7::var_4(var_2);
LAB_00215f3c:
        var_8 = type_7::var_5(var_2);
        var_6 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;
        p_Var5 = &var_10->_M_header;
        if (var_6 != (type_5)0x0) {
          do {
            if ((*(type_3 **)(var_6 + 1) < var_7) ||
               ((var_7 == *(type_3 **)(var_6 + 1) && (*(type_4 *)((int)(var_6 + 1) + 4) < var_8))))
            {
              var_9 = var_6->_M_right;
            }
            else {
              var_9 = var_6->_M_left;
              p_Var5 = var_6;
            }
            var_6 = var_9;
          } while (var_9 != (type_5)0x0);
          if ((((var_10 != (type_8 *)p_Var5) &&
               ((type_3 *)((type_8 *)p_Var5)->_M_node_count <= var_7)) &&
              ((var_7 != (type_3 *)((type_8 *)p_Var5)->_M_node_count ||
               (*(type_4 *)((int)p_Var5 + 0x14) <= var_8)))) &&
             (*(type_4 *)((type_9 *)((int)p_Var5 + 0x14) + 4) != 0)) {
            var_3 = (this->input_sections_).
                     super__Vector_base<gold::Output_section::type_7,_std::allocator<gold::Output_section::type_7>var_1>
                     ._M_impl._M_finish;
            var_2->section_order_index_ = *(type_4 *)((type_9 *)((int)p_Var5 + 0x14) + 4);
            *(type_4 *)&this->field_0x98 = *(type_4 *)&this->field_0x98 & 0xffbfffff | 0x400000;
            goto LAB_00215fdc;
          }
        }
        var_3 = (this->input_sections_).
                 super__Vector_base<gold::Output_section::type_7,_std::allocator<gold::Output_section::type_7>var_1>
                 ._M_impl._M_finish;
      }
LAB_00215fdc:
      var_2 = var_2 + 1;
    } while (var_3 != var_2);
  }
  return;
}


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

/* gold::Output_section::MASKED(std::map<std::pair<gold::Relobj*, unsigned int>,
   unsigned int, std::less<std::pair<gold::Relobj*, unsigned int> >,
   std::allocator<std::pair<std::pair<gold::Relobj*, unsigned int> const, unsigned int> > > const*)
    */

void __thiscall gold::Output_section::MASKED(Output_section *this,map *param_1)

{
  uint uVar1;
  uint uVar2;
  map *pmVar3;
  map *pmVar4;
  map *pmVar5;
  Input_section *pIVar6;
  Input_section *this_00;
  
  pIVar6 = *(Input_section **)(this + 0x74);
  this_00 = *(Input_section **)(this + 0x70);
  if (this_00 != pIVar6) {
    do {
      if (*(int *)this_00 + 4U < 4) {
        if (*(int *)this_00 == -4) {
          uVar1 = *(uint *)(*(int *)(this_00 + 0x10) + 0x30);
          goto LAB_00215f3c;
        }
      }
      else {
        uVar1 = Input_section::relobj(this_00);
LAB_00215f3c:
        uVar2 = Input_section::shndx(this_00);
        pmVar3 = *(map **)(param_1 + 8);
        pmVar5 = param_1 + 4;
        if (*(map **)(param_1 + 8) != (map *)0x0) {
          do {
            if ((*(uint *)(pmVar3 + 0x10) < uVar1) ||
               ((uVar1 == *(uint *)(pmVar3 + 0x10) && (*(uint *)(pmVar3 + 0x14) < uVar2)))) {
              pmVar4 = *(map **)(pmVar3 + 0xc);
            }
            else {
              pmVar4 = *(map **)(pmVar3 + 8);
              pmVar5 = pmVar3;
            }
            pmVar3 = pmVar4;
          } while (pmVar4 != (map *)0x0);
          if ((((param_1 + 4 != pmVar5) && (*(uint *)(pmVar5 + 0x10) <= uVar1)) &&
              ((uVar1 != *(uint *)(pmVar5 + 0x10) || (*(uint *)(pmVar5 + 0x14) <= uVar2)))) &&
             (*(int *)(pmVar5 + 0x18) != 0)) {
            pIVar6 = *(Input_section **)(this + 0x74);
            *(int *)(this_00 + 0x14) = *(int *)(pmVar5 + 0x18);
            *(uint *)(this + 0x98) = *(uint *)(this + 0x98) & 0xffbfffff | 0x400000;
            goto LAB_00215fdc;
          }
        }
        pIVar6 = *(Input_section **)(this + 0x74);
      }
LAB_00215fdc:
      this_00 = this_00 + 0x18;
    } while (pIVar6 != this_00);
  }
  return;
}

