
/* 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)

{
  _Rb_tree_header *p_Var1;
  _Base_ptr *pp_Var2;
  _Base_ptr p_Var3;
  Relobj *pRVar4;
  uint uVar5;
  _Base_ptr p_Var6;
  _Base_ptr p_Var7;
  Input_section *this_00;
  
  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 !=
      (this->input_sections_).
      super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>
      ._M_impl._M_finish) {
    p_Var1 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;
    do {
      if (this_00->shndx_ < 0xfffffffc) {
        pRVar4 = Input_section::relobj(this_00);
LAB_000ef065:
        uVar5 = Input_section::shndx(this_00);
        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;
        p_Var6 = &p_Var1->_M_header;
        if (p_Var3 != (_Base_ptr)0x0) {
          do {
            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&
                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||
                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {
              p_Var6 = p_Var7;
              p_Var3 = p_Var7->_M_left;
              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;
            }
            pp_Var2 = &p_Var7->_M_right;
            p_Var7 = p_Var6;
            p_Var3 = *pp_Var2;
          } while (*pp_Var2 != (_Base_ptr)0x0);
LAB_000ef09c:
          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&
               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&
              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||
               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&
             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {
            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);
            this->field_0x91 = this->field_0x91 | 2;
          }
        }
      }
      else if (this_00->shndx_ == 0xfffffffc) {
        pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;
        goto LAB_000ef065;
      }
      this_00 = this_00 + 1;
    } while ((this->input_sections_).
             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>
             ._M_impl._M_finish != this_00);
  }
  return;
}



void FUN_000ef030(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  uint *puVar7;
  
  puVar7 = *(uint **)(param_1 + 0x6c);
  if (puVar7 != *(uint **)(param_1 + 0x70)) {
    do {
      if (*puVar7 < 0xfffffffc) {
        uVar3 = FUN_000ede60(puVar7);
LAB_000ef065:
        uVar4 = FUN_000edef0(puVar7);
        iVar5 = param_2 + 4;
        iVar2 = *(int *)(param_2 + 8);
        if (*(int *)(param_2 + 8) != 0) {
          do {
            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&
                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {
              iVar5 = iVar6;
              iVar2 = *(int *)(iVar6 + 8);
              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;
            }
            piVar1 = (int *)(iVar6 + 0xc);
            iVar6 = iVar5;
            iVar2 = *piVar1;
          } while (*piVar1 != 0);
LAB_000ef09c:
          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&
              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&
             (*(uint *)(iVar6 + 0x18) != 0)) {
            puVar7[5] = *(uint *)(iVar6 + 0x18);
            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;
          }
        }
      }
      else if (*puVar7 == 0xfffffffc) {
        uVar3 = *(uint *)(puVar7[4] + 0x2c);
        goto LAB_000ef065;
      }
      puVar7 = puVar7 + 6;
    } while (*(uint **)(param_1 + 0x70) != puVar7);
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0xc
MOV ESI,dword ptr [ESP + 0x20]
MOV EBX,dword ptr [ESI + 0x6c]
CMP EBX,dword ptr [ESI + 0x70]
JZ 0x000ef0c5
MOV EAX,dword ptr [ESP + 0x24]
LEA EDI,[EAX + 0x4]
NOP
MOV EAX,dword ptr [EBX]
CMP EAX,-0x4
JNC 0x000ef0d0
SUB ESP,0xc
PUSH EBX
CALL 0x000ede60
ADD ESP,0x10
MOV EBP,EAX
SUB ESP,0xc
PUSH EBX
CALL 0x000edef0
MOV ECX,dword ptr [ESP + 0x34]
ADD ESP,0x10
MOV EDX,dword ptr [ECX + 0x8]
TEST EDX,EDX
JZ 0x000ef0bd
MOV ECX,EDI
JMP 0x000ef090
JNZ 0x000ef087
CMP EAX,dword ptr [EDX + 0x14]
JA 0x000ef095
MOV ECX,EDX
MOV EDX,dword ptr [EDX + 0x8]
TEST EDX,EDX
JZ 0x000ef09c
CMP EBP,dword ptr [EDX + 0x10]
JBE 0x000ef080
MOV EDX,dword ptr [EDX + 0xc]
TEST EDX,EDX
JNZ 0x000ef090
CMP EDI,ECX
JZ 0x000ef0bd
CMP EBP,dword ptr [ECX + 0x10]
JC 0x000ef0bd
JNZ 0x000ef0ac
CMP EAX,dword ptr [ECX + 0x14]
JC 0x000ef0bd
MOV EAX,dword ptr [ECX + 0x18]
TEST EAX,EAX
JZ 0x000ef0bd
MOV dword ptr [EBX + 0x14],EAX
OR byte ptr [ESI + 0x91],0x2
ADD EBX,0x18
CMP dword ptr [ESI + 0x70],EBX
JNZ 0x000ef050
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
JNZ 0x000ef0bd
MOV EAX,dword ptr [EBX + 0x10]
MOV EBP,dword ptr [EAX + 0x2c]
JMP 0x000ef065
(translation_unit "void FUN_000ef030(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint *puVar7;\n  \n  puVar7 = *(uint **)(param_1 + 0x6c);\n  if (puVar7 != *(uint **)(param_1 + 0x70)) {\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }\n  return;\n}\n\n" (function_definition "void FUN_000ef030(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint *puVar7;\n  \n  puVar7 = *(uint **)(param_1 + 0x6c);\n  if (puVar7 != *(uint **)(param_1 + 0x70)) {\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000ef030(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint *puVar7;\n  \n  puVar7 = *(uint **)(param_1 + 0x6c);\n  if (puVar7 != *(uint **)(param_1 + 0x70)) {\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (expression_statement "puVar7 = *(uint **)(param_1 + 0x6c);" (assignment_expression "puVar7 = *(uint **)(param_1 + 0x6c)" identifier = (pointer_expression "*(uint **)(param_1 + 0x6c)" * (cast_expression "(uint **)(param_1 + 0x6c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (if_statement "if (puVar7 != *(uint **)(param_1 + 0x70)) {\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }" if (parenthesized_expression "(puVar7 != *(uint **)(param_1 + 0x70))" ( (binary_expression "puVar7 != *(uint **)(param_1 + 0x70)" identifier != (pointer_expression "*(uint **)(param_1 + 0x70)" * (cast_expression "(uint **)(param_1 + 0x70)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }" { (do_statement "do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);" do (compound_statement "{\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    }" { (if_statement "if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }" if (parenthesized_expression "(*puVar7 < 0xfffffffc)" ( (binary_expression "*puVar7 < 0xfffffffc" (pointer_expression "*puVar7" * identifier) < number_literal) )) (compound_statement "{\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }" { (expression_statement "uVar3 = FUN_000ede60(puVar7);" (assignment_expression "uVar3 = FUN_000ede60(puVar7)" identifier = (call_expression "FUN_000ede60(puVar7)" identifier (argument_list "(puVar7)" ( identifier )))) ;) (labeled_statement "LAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);" statement_identifier : (expression_statement "uVar4 = FUN_000edef0(puVar7);" (assignment_expression "uVar4 = FUN_000edef0(puVar7)" identifier = (call_expression "FUN_000edef0(puVar7)" identifier (argument_list "(puVar7)" ( identifier )))) ;)) (expression_statement "iVar5 = param_2 + 4;" (assignment_expression "iVar5 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "iVar2 = *(int *)(param_2 + 8);" (assignment_expression "iVar2 = *(int *)(param_2 + 8)" identifier = (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }" if (parenthesized_expression "(*(int *)(param_2 + 8) != 0)" ( (binary_expression "*(int *)(param_2 + 8) != 0" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }" { (do_statement "do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);" do (compound_statement "{\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          }" { (while_statement "while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }" while (parenthesized_expression "((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))))))" ( (parenthesized_expression "(iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))" ( (comma_expression "iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))))" (assignment_expression "iVar6 = iVar2" identifier = identifier) , (binary_expression "uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))))" (binary_expression "uVar3 <= *(uint *)(iVar6 + 0x10)" identifier <= (pointer_expression "*(uint *)(iVar6 + 0x10)" * (cast_expression "(uint *)(iVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) && (parenthesized_expression "((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))))" ( (parenthesized_expression "(uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))" ( (binary_expression "uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))" (binary_expression "uVar3 != *(uint *)(iVar6 + 0x10)" identifier != (pointer_expression "*(uint *)(iVar6 + 0x10)" * (cast_expression "(uint *)(iVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) || (parenthesized_expression "(uVar4 <= *(uint *)(iVar6 + 0x14))" ( (binary_expression "uVar4 <= *(uint *)(iVar6 + 0x14)" identifier <= (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) ))))) ))) )) )))) )) )) (compound_statement "{\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }" { (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)(iVar6 + 8);" (assignment_expression "iVar2 = *(int *)(iVar6 + 8)" identifier = (pointer_expression "*(int *)(iVar6 + 8)" * (cast_expression "(int *)(iVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;" if (parenthesized_expression "(*(int *)(iVar6 + 8) == 0)" ( (binary_expression "*(int *)(iVar6 + 8) == 0" (pointer_expression "*(int *)(iVar6 + 8)" * (cast_expression "(int *)(iVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000ef09c;" goto statement_identifier ;)) })) (expression_statement "piVar1 = (int *)(iVar6 + 0xc);" (assignment_expression "piVar1 = (int *)(iVar6 + 0xc)" identifier = (cast_expression "(int *)(iVar6 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) ;) (expression_statement "iVar6 = iVar5;" (assignment_expression "iVar6 = iVar5" identifier = identifier) ;) (expression_statement "iVar2 = *piVar1;" (assignment_expression "iVar2 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) }) while (parenthesized_expression "(*piVar1 != 0)" ( (binary_expression "*piVar1 != 0" (pointer_expression "*piVar1" * identifier) != number_literal) )) ;) (labeled_statement "LAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }" statement_identifier : (if_statement "if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }" if (parenthesized_expression "((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0))" ( (binary_expression "(((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)" (parenthesized_expression "(((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4))))" ( (binary_expression "((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))" (parenthesized_expression "((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3))" ( (binary_expression "(param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)" (parenthesized_expression "(param_2 + 4 != iVar6)" ( (binary_expression "param_2 + 4 != iVar6" (binary_expression "param_2 + 4" identifier + number_literal) != identifier) )) && (parenthesized_expression "(*(uint *)(iVar6 + 0x10) <= uVar3)" ( (binary_expression "*(uint *)(iVar6 + 0x10) <= uVar3" (pointer_expression "*(uint *)(iVar6 + 0x10)" * (cast_expression "(uint *)(iVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) <= identifier) ))) )) && (parenthesized_expression "((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))" ( (parenthesized_expression "(uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4))" ( (binary_expression "uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)" (binary_expression "uVar3 != *(uint *)(iVar6 + 0x10)" identifier != (pointer_expression "*(uint *)(iVar6 + 0x10)" * (cast_expression "(uint *)(iVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) || (parenthesized_expression "(*(uint *)(iVar6 + 0x14) <= uVar4)" ( (binary_expression "*(uint *)(iVar6 + 0x14) <= uVar4" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) <= identifier) ))) )) ))) )) && (parenthesized_expression "(*(uint *)(iVar6 + 0x18) != 0)" ( (binary_expression "*(uint *)(iVar6 + 0x18) != 0" (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }" { (expression_statement "puVar7[5] = *(uint *)(iVar6 + 0x18);" (assignment_expression "puVar7[5] = *(uint *)(iVar6 + 0x18)" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;" (assignment_expression "*(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2" (pointer_expression "*(byte *)(param_1 + 0x91)" * (cast_expression "(byte *)(param_1 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x91)" ( (binary_expression "param_1 + 0x91" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x91) | 2" (pointer_expression "*(byte *)(param_1 + 0x91)" * (cast_expression "(byte *)(param_1 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x91)" ( (binary_expression "param_1 + 0x91" identifier + number_literal) )))) | number_literal)) ;) }))) })) }) (else_clause "else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }" else (if_statement "if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }" if (parenthesized_expression "(*puVar7 == 0xfffffffc)" ( (binary_expression "*puVar7 == 0xfffffffc" (pointer_expression "*puVar7" * identifier) == number_literal) )) (compound_statement "{\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }" { (expression_statement "uVar3 = *(uint *)(puVar7[4] + 0x2c);" (assignment_expression "uVar3 = *(uint *)(puVar7[4] + 0x2c)" identifier = (pointer_expression "*(uint *)(puVar7[4] + 0x2c)" * (cast_expression "(uint *)(puVar7[4] + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7[4] + 0x2c)" ( (binary_expression "puVar7[4] + 0x2c" (subscript_expression "puVar7[4]" identifier [ number_literal ]) + number_literal) ))))) ;) (goto_statement "goto LAB_000ef065;" goto statement_identifier ;) })))) (expression_statement "puVar7 = puVar7 + 6;" (assignment_expression "puVar7 = puVar7 + 6" identifier = (binary_expression "puVar7 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(uint **)(param_1 + 0x70) != puVar7)" ( (binary_expression "*(uint **)(param_1 + 0x70) != puVar7" (pointer_expression "*(uint **)(param_1 + 0x70)" * (cast_expression "(uint **)(param_1 + 0x70)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* 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  _Rb_tree_header *p_Var1;\n  _Base_ptr *pp_Var2;\n  _Base_ptr p_Var3;\n  Relobj *pRVar4;\n  uint uVar5;\n  _Base_ptr p_Var6;\n  _Base_ptr p_Var7;\n  Input_section *this_00;\n  \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 !=\n      (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    p_Var1 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;\n    do {\n      if (this_00->shndx_ < 0xfffffffc) {\n        pRVar4 = Input_section::relobj(this_00);\nLAB_000ef065:\n        uVar5 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var6 = &p_Var1->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          } while (*pp_Var2 != (_Base_ptr)0x0);\nLAB_000ef09c:\n          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }\n        }\n      }\n      else if (this_00->shndx_ == 0xfffffffc) {\n        pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;\n        goto LAB_000ef065;\n      }\n      this_00 = this_00 + 1;\n    } while ((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != this_00);\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Output_section::update_section_layout(Output_section *this,Section_layout_order *order_map)\n\n{\n  _Rb_tree_header *p_Var1;\n  _Base_ptr *pp_Var2;\n  _Base_ptr p_Var3;\n  Relobj *pRVar4;\n  uint uVar5;\n  _Base_ptr p_Var6;\n  _Base_ptr p_Var7;\n  Input_section *this_00;\n  \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 !=\n      (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    p_Var1 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;\n    do {\n      if (this_00->shndx_ < 0xfffffffc) {\n        pRVar4 = Input_section::relobj(this_00);\nLAB_000ef065:\n        uVar5 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var6 = &p_Var1->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          } while (*pp_Var2 != (_Base_ptr)0x0);\nLAB_000ef09c:\n          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }\n        }\n      }\n      else if (this_00->shndx_ == 0xfffffffc) {\n        pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;\n        goto LAB_000ef065;\n      }\n      this_00 = this_00 + 1;\n    } while ((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != 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  _Rb_tree_header *p_Var1;\n  _Base_ptr *pp_Var2;\n  _Base_ptr p_Var3;\n  Relobj *pRVar4;\n  uint uVar5;\n  _Base_ptr p_Var6;\n  _Base_ptr p_Var7;\n  Input_section *this_00;\n  \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 !=\n      (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    p_Var1 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;\n    do {\n      if (this_00->shndx_ < 0xfffffffc) {\n        pRVar4 = Input_section::relobj(this_00);\nLAB_000ef065:\n        uVar5 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var6 = &p_Var1->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          } while (*pp_Var2 != (_Base_ptr)0x0);\nLAB_000ef09c:\n          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }\n        }\n      }\n      else if (this_00->shndx_ == 0xfffffffc) {\n        pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;\n        goto LAB_000ef065;\n      }\n      this_00 = this_00 + 1;\n    } while ((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != this_00);\n  }\n  return;\n}" { (declaration "_Rb_tree_header *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (declaration "_Base_ptr *pp_Var2;" type_identifier (pointer_declarator "*pp_Var2" * identifier) ;) (declaration "_Base_ptr p_Var3;" type_identifier identifier ;) (declaration "Relobj *pRVar4;" type_identifier (pointer_declarator "*pRVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "_Base_ptr p_Var6;" type_identifier identifier ;) (declaration "_Base_ptr p_Var7;" type_identifier identifier ;) (declaration "Input_section *this_00;" type_identifier (pointer_declarator "*this_00" * 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 !=\n      (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    p_Var1 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;\n    do {\n      if (this_00->shndx_ < 0xfffffffc) {\n        pRVar4 = Input_section::relobj(this_00);\nLAB_000ef065:\n        uVar5 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var6 = &p_Var1->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          } while (*pp_Var2 != (_Base_ptr)0x0);\nLAB_000ef09c:\n          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }\n        }\n      }\n      else if (this_00->shndx_ == 0xfffffffc) {\n        pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;\n        goto LAB_000ef065;\n      }\n      this_00 = this_00 + 1;\n    } while ((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != this_00);\n  }" if (parenthesized_expression "(this_00 !=\n      (this->input_sections_).\n      super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n      ._M_impl._M_finish)" ( (ERROR "this_00 !=\n      (this->input_sections_).\n      super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::" (comma_expression "this_00 !=\n      (this->input_sections_).\n      super__Vector_base<gold::Output_section::Input_section,_std" (binary_expression "this_00 !=\n      (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)) (ERROR "::Output_section::Input_section" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (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) )) (compound_statement "{\n    p_Var1 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;\n    do {\n      if (this_00->shndx_ < 0xfffffffc) {\n        pRVar4 = Input_section::relobj(this_00);\nLAB_000ef065:\n        uVar5 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var6 = &p_Var1->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          } while (*pp_Var2 != (_Base_ptr)0x0);\nLAB_000ef09c:\n          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }\n        }\n      }\n      else if (this_00->shndx_ == 0xfffffffc) {\n        pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;\n        goto LAB_000ef065;\n      }\n      this_00 = this_00 + 1;\n    } while ((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != this_00);\n  }" { (expression_statement "p_Var1 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var1 = &(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_ < 0xfffffffc) {\n        pRVar4 = Input_section::relobj(this_00);\nLAB_000ef065:\n        uVar5 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var6 = &p_Var1->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          } while (*pp_Var2 != (_Base_ptr)0x0);\nLAB_000ef09c:\n          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }\n        }\n      }\n      else if (this_00->shndx_ == 0xfffffffc) {\n        pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;\n        goto LAB_000ef065;\n      }\n      this_00 = this_00 + 1;\n    } while ((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != this_00);" do (compound_statement "{\n      if (this_00->shndx_ < 0xfffffffc) {\n        pRVar4 = Input_section::relobj(this_00);\nLAB_000ef065:\n        uVar5 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var6 = &p_Var1->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          } while (*pp_Var2 != (_Base_ptr)0x0);\nLAB_000ef09c:\n          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }\n        }\n      }\n      else if (this_00->shndx_ == 0xfffffffc) {\n        pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;\n        goto LAB_000ef065;\n      }\n      this_00 = this_00 + 1;\n    }" { (if_statement "if (this_00->shndx_ < 0xfffffffc) {\n        pRVar4 = Input_section::relobj(this_00);\nLAB_000ef065:\n        uVar5 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var6 = &p_Var1->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          } while (*pp_Var2 != (_Base_ptr)0x0);\nLAB_000ef09c:\n          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }\n        }\n      }\n      else if (this_00->shndx_ == 0xfffffffc) {\n        pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;\n        goto LAB_000ef065;\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        pRVar4 = Input_section::relobj(this_00);\nLAB_000ef065:\n        uVar5 = Input_section::shndx(this_00);\n        p_Var3 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n        p_Var6 = &p_Var1->_M_header;\n        if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          } while (*pp_Var2 != (_Base_ptr)0x0);\nLAB_000ef09c:\n          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }\n        }\n      }" { (ERROR "pRVar4 = Input_section::" (assignment_expression "pRVar4 = Input_section" identifier = identifier) : :) (expression_statement "relobj(this_00);" (call_expression "relobj(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;) (labeled_statement "LAB_000ef065:\n        uVar5 = Input_section::shndx(this_00);" statement_identifier : (ERROR "uVar5 = Input_section::" (assignment_expression "uVar5 = 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_Var6 = &p_Var1->_M_header;" (assignment_expression "p_Var6 = &p_Var1->_M_header" identifier = (pointer_expression "&p_Var1->_M_header" & (field_expression "p_Var1->_M_header" identifier -> field_identifier))) ;) (if_statement "if (p_Var3 != (_Base_ptr)0x0) {\n          do {\n            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          } while (*pp_Var2 != (_Base_ptr)0x0);\nLAB_000ef09c:\n          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\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            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          } while (*pp_Var2 != (_Base_ptr)0x0);\nLAB_000ef09c:\n          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }\n        }" { (do_statement "do {\n            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          } while (*pp_Var2 != (_Base_ptr)0x0);" do (compound_statement "{\n            while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }\n            pp_Var2 = &p_Var7->_M_right;\n            p_Var7 = p_Var6;\n            p_Var3 = *pp_Var2;\n          }" { (while_statement "while ((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))) {\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }" while (parenthesized_expression "((p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4))))))" ( (parenthesized_expression "(p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))))" ( (comma_expression "p_Var7 = p_Var3, pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4))))" (assignment_expression "p_Var7 = p_Var3" identifier = identifier) , (binary_expression "pRVar4 <= (Relobj *)p_Var7[1]._M_color &&\n                   ((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4))))" (binary_expression "pRVar4 <= (Relobj *)p_Var7[1]._M_color" identifier <= (cast_expression "(Relobj *)p_Var7[1]._M_color" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var7[1]._M_color" (subscript_expression "p_Var7[1]" identifier [ number_literal ]) . field_identifier))) && (parenthesized_expression "((pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4))))" ( (parenthesized_expression "(pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)))" ( (binary_expression "pRVar4 != (Relobj *)p_Var7[1]._M_color ||\n                    (uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4))" (binary_expression "pRVar4 != (Relobj *)p_Var7[1]._M_color" identifier != (cast_expression "(Relobj *)p_Var7[1]._M_color" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var7[1]._M_color" (subscript_expression "p_Var7[1]" identifier [ number_literal ]) . field_identifier))) || (parenthesized_expression "(uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4))" ( (binary_expression "uVar5 <= *(uint *)((int)(p_Var7 + 1) + 4)" identifier <= (pointer_expression "*(uint *)((int)(p_Var7 + 1) + 4)" * (cast_expression "(uint *)((int)(p_Var7 + 1) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(p_Var7 + 1) + 4)" ( (binary_expression "(int)(p_Var7 + 1) + 4" (cast_expression "(int)(p_Var7 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_Var7 + 1)" ( (binary_expression "p_Var7 + 1" identifier + number_literal) ))) + number_literal) ))))) ))) )) )))) )) )) (compound_statement "{\n              p_Var6 = p_Var7;\n              p_Var3 = p_Var7->_M_left;\n              if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;\n            }" { (expression_statement "p_Var6 = p_Var7;" (assignment_expression "p_Var6 = p_Var7" identifier = identifier) ;) (expression_statement "p_Var3 = p_Var7->_M_left;" (assignment_expression "p_Var3 = p_Var7->_M_left" identifier = (field_expression "p_Var7->_M_left" identifier -> field_identifier)) ;) (if_statement "if (p_Var7->_M_left == (_Base_ptr)0x0) goto LAB_000ef09c;" if (parenthesized_expression "(p_Var7->_M_left == (_Base_ptr)0x0)" ( (binary_expression "p_Var7->_M_left == (_Base_ptr)0x0" (field_expression "p_Var7->_M_left" identifier -> field_identifier) == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_000ef09c;" goto statement_identifier ;)) })) (expression_statement "pp_Var2 = &p_Var7->_M_right;" (assignment_expression "pp_Var2 = &p_Var7->_M_right" identifier = (pointer_expression "&p_Var7->_M_right" & (field_expression "p_Var7->_M_right" identifier -> field_identifier))) ;) (expression_statement "p_Var7 = p_Var6;" (assignment_expression "p_Var7 = p_Var6" identifier = identifier) ;) (expression_statement "p_Var3 = *pp_Var2;" (assignment_expression "p_Var3 = *pp_Var2" identifier = (pointer_expression "*pp_Var2" * identifier)) ;) }) while (parenthesized_expression "(*pp_Var2 != (_Base_ptr)0x0)" ( (binary_expression "*pp_Var2 != (_Base_ptr)0x0" (pointer_expression "*pp_Var2" * identifier) != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (labeled_statement "LAB_000ef09c:\n          if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }" statement_identifier : (if_statement "if ((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)) {\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }" if (parenthesized_expression "((((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0))" ( (binary_expression "(((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))) &&\n             (*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)" (parenthesized_expression "(((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5))))" ( (binary_expression "((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)) &&\n              ((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))" (parenthesized_expression "((p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4))" ( (binary_expression "(p_Var1 != (_Rb_tree_header *)p_Var7) &&\n               ((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)" (parenthesized_expression "(p_Var1 != (_Rb_tree_header *)p_Var7)" ( (binary_expression "p_Var1 != (_Rb_tree_header *)p_Var7" identifier != (cast_expression "(_Rb_tree_header *)p_Var7" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) && (parenthesized_expression "((Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4)" ( (binary_expression "(Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count <= pRVar4" (cast_expression "(Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((_Rb_tree_header *)p_Var7)->_M_node_count" (parenthesized_expression "((_Rb_tree_header *)p_Var7)" ( (cast_expression "(_Rb_tree_header *)p_Var7" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) <= identifier) ))) )) && (parenthesized_expression "((pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)))" ( (parenthesized_expression "(pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5))" ( (binary_expression "pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count ||\n               (*(uint *)((int)p_Var7 + 0x14) <= uVar5)" (binary_expression "pRVar4 != (Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count" identifier != (cast_expression "(Relobj *)((_Rb_tree_header *)p_Var7)->_M_node_count" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((_Rb_tree_header *)p_Var7)->_M_node_count" (parenthesized_expression "((_Rb_tree_header *)p_Var7)" ( (cast_expression "(_Rb_tree_header *)p_Var7" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) || (parenthesized_expression "(*(uint *)((int)p_Var7 + 0x14) <= uVar5)" ( (binary_expression "*(uint *)((int)p_Var7 + 0x14) <= uVar5" (pointer_expression "*(uint *)((int)p_Var7 + 0x14)" * (cast_expression "(uint *)((int)p_Var7 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var7 + 0x14)" ( (binary_expression "(int)p_Var7 + 0x14" (cast_expression "(int)p_Var7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= identifier) ))) )) ))) )) && (parenthesized_expression "(*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0)" ( (binary_expression "*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4) != 0" (pointer_expression "*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4)" * (cast_expression "(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((undefined1 *)((int)p_Var7 + 0x14) + 4)" ( (binary_expression "(undefined1 *)((int)p_Var7 + 0x14) + 4" (cast_expression "(undefined1 *)((int)p_Var7 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var7 + 0x14)" ( (binary_expression "(int)p_Var7 + 0x14" (cast_expression "(int)p_Var7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);\n            this->field_0x91 = this->field_0x91 | 2;\n          }" { (expression_statement "this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4);" (assignment_expression "this_00->section_order_index_ = *(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4)" (field_expression "this_00->section_order_index_" identifier -> field_identifier) = (pointer_expression "*(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4)" * (cast_expression "(uint *)((undefined1 *)((int)p_Var7 + 0x14) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((undefined1 *)((int)p_Var7 + 0x14) + 4)" ( (binary_expression "(undefined1 *)((int)p_Var7 + 0x14) + 4" (cast_expression "(undefined1 *)((int)p_Var7 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var7 + 0x14)" ( (binary_expression "(int)p_Var7 + 0x14" (cast_expression "(int)p_Var7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) + number_literal) ))))) ;) (expression_statement "this->field_0x91 = this->field_0x91 | 2;" (assignment_expression "this->field_0x91 = this->field_0x91 | 2" (field_expression "this->field_0x91" identifier -> field_identifier) = (binary_expression "this->field_0x91 | 2" (field_expression "this->field_0x91" identifier -> field_identifier) | number_literal)) ;) }))) })) }) (else_clause "else if (this_00->shndx_ == 0xfffffffc) {\n        pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;\n        goto LAB_000ef065;\n      }" else (if_statement "if (this_00->shndx_ == 0xfffffffc) {\n        pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;\n        goto LAB_000ef065;\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        pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;\n        goto LAB_000ef065;\n      }" { (expression_statement "pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c;" (assignment_expression "pRVar4 = *(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c" identifier = (pointer_expression "*(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c" * (cast_expression "(Relobj **)&(((this_00->u2_).object)->super_Object).field_0x2c" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(((this_00->u2_).object)->super_Object).field_0x2c" & (field_expression "(((this_00->u2_).object)->super_Object).field_0x2c" (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_000ef065;" goto 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 "((this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::Input_section>_>\n             ._M_impl._M_finish != this_00)" ( (ERROR "(this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std::allocator<gold::Output_section::" (comma_expression "(this->input_sections_).\n             super__Vector_base<gold::Output_section::Input_section,_std" (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) (ERROR "::Output_section::Input_section" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Input_section>_>\n             ._M_impl._M_finish != this_00" (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) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000ef030(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint *puVar7;\n  \n  puVar7 = *(uint **)(param_1 + 0x6c);\n  if (puVar7 != *(uint **)(param_1 + 0x70)) {\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }\n  return;\n}\n\n" (function_definition "void FUN_000ef030(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint *puVar7;\n  \n  puVar7 = *(uint **)(param_1 + 0x6c);\n  if (puVar7 != *(uint **)(param_1 + 0x70)) {\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000ef030(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint *puVar7;\n  \n  puVar7 = *(uint **)(param_1 + 0x6c);\n  if (puVar7 != *(uint **)(param_1 + 0x70)) {\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (expression_statement "puVar7 = *(uint **)(param_1 + 0x6c);" (assignment_expression "puVar7 = *(uint **)(param_1 + 0x6c)" identifier = (pointer_expression "*(uint **)(param_1 + 0x6c)" * (cast_expression "(uint **)(param_1 + 0x6c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (if_statement "if (puVar7 != *(uint **)(param_1 + 0x70)) {\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }" if (parenthesized_expression "(puVar7 != *(uint **)(param_1 + 0x70))" ( (binary_expression "puVar7 != *(uint **)(param_1 + 0x70)" identifier != (pointer_expression "*(uint **)(param_1 + 0x70)" * (cast_expression "(uint **)(param_1 + 0x70)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }" { (do_statement "do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);" do (compound_statement "{\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    }" { (if_statement "if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }" if (parenthesized_expression "(*puVar7 < 0xfffffffc)" ( (binary_expression "*puVar7 < 0xfffffffc" (pointer_expression "*puVar7" * identifier) < number_literal) )) (compound_statement "{\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }" { (expression_statement "uVar3 = FUN_000ede60(puVar7);" (assignment_expression "uVar3 = FUN_000ede60(puVar7)" identifier = (call_expression "FUN_000ede60(puVar7)" identifier (argument_list "(puVar7)" ( identifier )))) ;) (labeled_statement "LAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);" statement_identifier : (expression_statement "uVar4 = FUN_000edef0(puVar7);" (assignment_expression "uVar4 = FUN_000edef0(puVar7)" identifier = (call_expression "FUN_000edef0(puVar7)" identifier (argument_list "(puVar7)" ( identifier )))) ;)) (expression_statement "iVar5 = param_2 + 4;" (assignment_expression "iVar5 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "iVar2 = *(int *)(param_2 + 8);" (assignment_expression "iVar2 = *(int *)(param_2 + 8)" identifier = (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }" if (parenthesized_expression "(*(int *)(param_2 + 8) != 0)" ( (binary_expression "*(int *)(param_2 + 8) != 0" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }" { (do_statement "do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);" do (compound_statement "{\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          }" { (while_statement "while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }" while (parenthesized_expression "((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))))))" ( (parenthesized_expression "(iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))" ( (comma_expression "iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))))" (assignment_expression "iVar6 = iVar2" identifier = identifier) , (binary_expression "uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))))" (binary_expression "uVar3 <= *(uint *)(iVar6 + 0x10)" identifier <= (pointer_expression "*(uint *)(iVar6 + 0x10)" * (cast_expression "(uint *)(iVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) && (parenthesized_expression "((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))))" ( (parenthesized_expression "(uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))" ( (binary_expression "uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))" (binary_expression "uVar3 != *(uint *)(iVar6 + 0x10)" identifier != (pointer_expression "*(uint *)(iVar6 + 0x10)" * (cast_expression "(uint *)(iVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) || (parenthesized_expression "(uVar4 <= *(uint *)(iVar6 + 0x14))" ( (binary_expression "uVar4 <= *(uint *)(iVar6 + 0x14)" identifier <= (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) ))))) ))) )) )))) )) )) (compound_statement "{\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }" { (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)(iVar6 + 8);" (assignment_expression "iVar2 = *(int *)(iVar6 + 8)" identifier = (pointer_expression "*(int *)(iVar6 + 8)" * (cast_expression "(int *)(iVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;" if (parenthesized_expression "(*(int *)(iVar6 + 8) == 0)" ( (binary_expression "*(int *)(iVar6 + 8) == 0" (pointer_expression "*(int *)(iVar6 + 8)" * (cast_expression "(int *)(iVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000ef09c;" goto statement_identifier ;)) })) (expression_statement "piVar1 = (int *)(iVar6 + 0xc);" (assignment_expression "piVar1 = (int *)(iVar6 + 0xc)" identifier = (cast_expression "(int *)(iVar6 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) ;) (expression_statement "iVar6 = iVar5;" (assignment_expression "iVar6 = iVar5" identifier = identifier) ;) (expression_statement "iVar2 = *piVar1;" (assignment_expression "iVar2 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) }) while (parenthesized_expression "(*piVar1 != 0)" ( (binary_expression "*piVar1 != 0" (pointer_expression "*piVar1" * identifier) != number_literal) )) ;) (labeled_statement "LAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }" statement_identifier : (if_statement "if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }" if (parenthesized_expression "((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0))" ( (binary_expression "(((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)" (parenthesized_expression "(((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4))))" ( (binary_expression "((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))" (parenthesized_expression "((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3))" ( (binary_expression "(param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)" (parenthesized_expression "(param_2 + 4 != iVar6)" ( (binary_expression "param_2 + 4 != iVar6" (binary_expression "param_2 + 4" identifier + number_literal) != identifier) )) && (parenthesized_expression "(*(uint *)(iVar6 + 0x10) <= uVar3)" ( (binary_expression "*(uint *)(iVar6 + 0x10) <= uVar3" (pointer_expression "*(uint *)(iVar6 + 0x10)" * (cast_expression "(uint *)(iVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) <= identifier) ))) )) && (parenthesized_expression "((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))" ( (parenthesized_expression "(uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4))" ( (binary_expression "uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)" (binary_expression "uVar3 != *(uint *)(iVar6 + 0x10)" identifier != (pointer_expression "*(uint *)(iVar6 + 0x10)" * (cast_expression "(uint *)(iVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) || (parenthesized_expression "(*(uint *)(iVar6 + 0x14) <= uVar4)" ( (binary_expression "*(uint *)(iVar6 + 0x14) <= uVar4" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) <= identifier) ))) )) ))) )) && (parenthesized_expression "(*(uint *)(iVar6 + 0x18) != 0)" ( (binary_expression "*(uint *)(iVar6 + 0x18) != 0" (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }" { (expression_statement "puVar7[5] = *(uint *)(iVar6 + 0x18);" (assignment_expression "puVar7[5] = *(uint *)(iVar6 + 0x18)" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;" (assignment_expression "*(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2" (pointer_expression "*(byte *)(param_1 + 0x91)" * (cast_expression "(byte *)(param_1 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x91)" ( (binary_expression "param_1 + 0x91" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x91) | 2" (pointer_expression "*(byte *)(param_1 + 0x91)" * (cast_expression "(byte *)(param_1 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x91)" ( (binary_expression "param_1 + 0x91" identifier + number_literal) )))) | number_literal)) ;) }))) })) }) (else_clause "else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }" else (if_statement "if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }" if (parenthesized_expression "(*puVar7 == 0xfffffffc)" ( (binary_expression "*puVar7 == 0xfffffffc" (pointer_expression "*puVar7" * identifier) == number_literal) )) (compound_statement "{\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }" { (expression_statement "uVar3 = *(uint *)(puVar7[4] + 0x2c);" (assignment_expression "uVar3 = *(uint *)(puVar7[4] + 0x2c)" identifier = (pointer_expression "*(uint *)(puVar7[4] + 0x2c)" * (cast_expression "(uint *)(puVar7[4] + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7[4] + 0x2c)" ( (binary_expression "puVar7[4] + 0x2c" (subscript_expression "puVar7[4]" identifier [ number_literal ]) + number_literal) ))))) ;) (goto_statement "goto LAB_000ef065;" goto statement_identifier ;) })))) (expression_statement "puVar7 = puVar7 + 6;" (assignment_expression "puVar7 = puVar7 + 6" identifier = (binary_expression "puVar7 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(uint **)(param_1 + 0x70) != puVar7)" ( (binary_expression "*(uint **)(param_1 + 0x70) != puVar7" (pointer_expression "*(uint **)(param_1 + 0x70)" * (cast_expression "(uint **)(param_1 + 0x70)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) || (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) )))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (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 ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) ;) (labeled_statement statement_identifier : (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 (subscript_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) }))) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_000ef030(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint *puVar7;\n  \n  puVar7 = *(uint **)(param_1 + 0x6c);\n  if (puVar7 != *(uint **)(param_1 + 0x70)) {\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000ef030(int param_1,int param_2)" (identifier "FUN_000ef030") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint *puVar7;\n  \n  puVar7 = *(uint **)(param_1 + 0x6c);\n  if (puVar7 != *(uint **)(param_1 + 0x70)) {\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (expression_statement "puVar7 = *(uint **)(param_1 + 0x6c);" (assignment_expression "puVar7 = *(uint **)(param_1 + 0x6c)" (identifier "puVar7") (= "=") (pointer_expression "*(uint **)(param_1 + 0x6c)" (* "*") (cast_expression "(uint **)(param_1 + 0x6c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (if_statement "if (puVar7 != *(uint **)(param_1 + 0x70)) {\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }" (if "if") (parenthesized_expression "(puVar7 != *(uint **)(param_1 + 0x70))" (( "(") (binary_expression "puVar7 != *(uint **)(param_1 + 0x70)" (identifier "puVar7") (!= "!=") (pointer_expression "*(uint **)(param_1 + 0x70)" (* "*") (cast_expression "(uint **)(param_1 + 0x70)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")"))))) () ")")) (compound_statement "{\n    do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);\n  }" ({ "{") (do_statement "do {\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    } while (*(uint **)(param_1 + 0x70) != puVar7);" (do "do") (compound_statement "{\n      if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }\n      puVar7 = puVar7 + 6;\n    }" ({ "{") (if_statement "if (*puVar7 < 0xfffffffc) {\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }\n      else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }" (if "if") (parenthesized_expression "(*puVar7 < 0xfffffffc)" (( "(") (binary_expression "*puVar7 < 0xfffffffc" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (< "<") (number_literal "0xfffffffc")) () ")")) (compound_statement "{\n        uVar3 = FUN_000ede60(puVar7);\nLAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);\n        iVar5 = param_2 + 4;\n        iVar2 = *(int *)(param_2 + 8);\n        if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }\n      }" ({ "{") (expression_statement "uVar3 = FUN_000ede60(puVar7);" (assignment_expression "uVar3 = FUN_000ede60(puVar7)" (identifier "uVar3") (= "=") (call_expression "FUN_000ede60(puVar7)" (identifier "FUN_000ede60") (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")")))) (; ";")) (labeled_statement "LAB_000ef065:\n        uVar4 = FUN_000edef0(puVar7);" (statement_identifier "LAB_000ef065") (: ":") (expression_statement "uVar4 = FUN_000edef0(puVar7);" (assignment_expression "uVar4 = FUN_000edef0(puVar7)" (identifier "uVar4") (= "=") (call_expression "FUN_000edef0(puVar7)" (identifier "FUN_000edef0") (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")")))) (; ";"))) (expression_statement "iVar5 = param_2 + 4;" (assignment_expression "iVar5 = param_2 + 4" (identifier "iVar5") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_2 + 8);" (assignment_expression "iVar2 = *(int *)(param_2 + 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_2 + 8) != 0) {\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 8) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 8) != 0" (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);\nLAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }\n        }" ({ "{") (do_statement "do {\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          } while (*piVar1 != 0);" (do "do") (compound_statement "{\n            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }\n            piVar1 = (int *)(iVar6 + 0xc);\n            iVar6 = iVar5;\n            iVar2 = *piVar1;\n          }" ({ "{") (while_statement "while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }" (while "while") (parenthesized_expression "((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))))))" (( "(") (parenthesized_expression "(iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))" (( "(") (comma_expression "iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))))" (assignment_expression "iVar6 = iVar2" (identifier "iVar6") (= "=") (identifier "iVar2")) (, ",") (binary_expression "uVar3 <= *(uint *)(iVar6 + 0x10) &&\n                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))))" (binary_expression "uVar3 <= *(uint *)(iVar6 + 0x10)" (identifier "uVar3") (<= "<=") (pointer_expression "*(uint *)(iVar6 + 0x10)" (* "*") (cast_expression "(uint *)(iVar6 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (&& "&&") (parenthesized_expression "((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))))" (( "(") (parenthesized_expression "(uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))" (( "(") (binary_expression "uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14))" (binary_expression "uVar3 != *(uint *)(iVar6 + 0x10)" (identifier "uVar3") (!= "!=") (pointer_expression "*(uint *)(iVar6 + 0x10)" (* "*") (cast_expression "(uint *)(iVar6 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (|| "||") (parenthesized_expression "(uVar4 <= *(uint *)(iVar6 + 0x14))" (( "(") (binary_expression "uVar4 <= *(uint *)(iVar6 + 0x14)" (identifier "uVar4") (<= "<=") (pointer_expression "*(uint *)(iVar6 + 0x14)" (* "*") (cast_expression "(uint *)(iVar6 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")"))))) () ")"))) () ")")) () ")")))) () ")")) () ")")) (compound_statement "{\n              iVar5 = iVar6;\n              iVar2 = *(int *)(iVar6 + 8);\n              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;\n            }" ({ "{") (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" (identifier "iVar5") (= "=") (identifier "iVar6")) (; ";")) (expression_statement "iVar2 = *(int *)(iVar6 + 8);" (assignment_expression "iVar2 = *(int *)(iVar6 + 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar6 + 8)" (* "*") (cast_expression "(int *)(iVar6 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;" (if "if") (parenthesized_expression "(*(int *)(iVar6 + 8) == 0)" (( "(") (binary_expression "*(int *)(iVar6 + 8) == 0" (pointer_expression "*(int *)(iVar6 + 8)" (* "*") (cast_expression "(int *)(iVar6 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000ef09c;" (goto "goto") (statement_identifier "LAB_000ef09c") (; ";"))) (} "}"))) (expression_statement "piVar1 = (int *)(iVar6 + 0xc);" (assignment_expression "piVar1 = (int *)(iVar6 + 0xc)" (identifier "piVar1") (= "=") (cast_expression "(int *)(iVar6 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (expression_statement "iVar6 = iVar5;" (assignment_expression "iVar6 = iVar5" (identifier "iVar6") (= "=") (identifier "iVar5")) (; ";")) (expression_statement "iVar2 = *piVar1;" (assignment_expression "iVar2 = *piVar1" (identifier "iVar2") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*piVar1 != 0)" (( "(") (binary_expression "*piVar1 != 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_000ef09c:\n          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }" (statement_identifier "LAB_000ef09c") (: ":") (if_statement "if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)) {\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }" (if "if") (parenthesized_expression "((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0))" (( "(") (binary_expression "(((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&\n             (*(uint *)(iVar6 + 0x18) != 0)" (parenthesized_expression "(((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4))))" (( "(") (binary_expression "((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&\n              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))" (parenthesized_expression "((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3))" (( "(") (binary_expression "(param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)" (parenthesized_expression "(param_2 + 4 != iVar6)" (( "(") (binary_expression "param_2 + 4 != iVar6" (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) (!= "!=") (identifier "iVar6")) () ")")) (&& "&&") (parenthesized_expression "(*(uint *)(iVar6 + 0x10) <= uVar3)" (( "(") (binary_expression "*(uint *)(iVar6 + 0x10) <= uVar3" (pointer_expression "*(uint *)(iVar6 + 0x10)" (* "*") (cast_expression "(uint *)(iVar6 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")")))) (<= "<=") (identifier "uVar3")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))" (( "(") (parenthesized_expression "(uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4))" (( "(") (binary_expression "uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)" (binary_expression "uVar3 != *(uint *)(iVar6 + 0x10)" (identifier "uVar3") (!= "!=") (pointer_expression "*(uint *)(iVar6 + 0x10)" (* "*") (cast_expression "(uint *)(iVar6 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (|| "||") (parenthesized_expression "(*(uint *)(iVar6 + 0x14) <= uVar4)" (( "(") (binary_expression "*(uint *)(iVar6 + 0x14) <= uVar4" (pointer_expression "*(uint *)(iVar6 + 0x14)" (* "*") (cast_expression "(uint *)(iVar6 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")")))) (<= "<=") (identifier "uVar4")) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(uint *)(iVar6 + 0x18) != 0)" (( "(") (binary_expression "*(uint *)(iVar6 + 0x18) != 0" (pointer_expression "*(uint *)(iVar6 + 0x18)" (* "*") (cast_expression "(uint *)(iVar6 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            puVar7[5] = *(uint *)(iVar6 + 0x18);\n            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n          }" ({ "{") (expression_statement "puVar7[5] = *(uint *)(iVar6 + 0x18);" (assignment_expression "puVar7[5] = *(uint *)(iVar6 + 0x18)" (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")) (= "=") (pointer_expression "*(uint *)(iVar6 + 0x18)" (* "*") (cast_expression "(uint *)(iVar6 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;" (assignment_expression "*(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2" (pointer_expression "*(byte *)(param_1 + 0x91)" (* "*") (cast_expression "(byte *)(param_1 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x91)" (( "(") (binary_expression "param_1 + 0x91" (identifier "param_1") (+ "+") (number_literal "0x91")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0x91) | 2" (pointer_expression "*(byte *)(param_1 + 0x91)" (* "*") (cast_expression "(byte *)(param_1 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x91)" (( "(") (binary_expression "param_1 + 0x91" (identifier "param_1") (+ "+") (number_literal "0x91")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }" (else "else") (if_statement "if (*puVar7 == 0xfffffffc) {\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }" (if "if") (parenthesized_expression "(*puVar7 == 0xfffffffc)" (( "(") (binary_expression "*puVar7 == 0xfffffffc" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (== "==") (number_literal "0xfffffffc")) () ")")) (compound_statement "{\n        uVar3 = *(uint *)(puVar7[4] + 0x2c);\n        goto LAB_000ef065;\n      }" ({ "{") (expression_statement "uVar3 = *(uint *)(puVar7[4] + 0x2c);" (assignment_expression "uVar3 = *(uint *)(puVar7[4] + 0x2c)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(puVar7[4] + 0x2c)" (* "*") (cast_expression "(uint *)(puVar7[4] + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7[4] + 0x2c)" (( "(") (binary_expression "puVar7[4] + 0x2c" (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (goto_statement "goto LAB_000ef065;" (goto "goto") (statement_identifier "LAB_000ef065") (; ";")) (} "}"))))) (expression_statement "puVar7 = puVar7 + 6;" (assignment_expression "puVar7 = puVar7 + 6" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 6" (identifier "puVar7") (+ "+") (number_literal "6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(uint **)(param_1 + 0x70) != puVar7)" (( "(") (binary_expression "*(uint **)(param_1 + 0x70) != puVar7" (pointer_expression "*(uint **)(param_1 + 0x70)" (* "*") (cast_expression "(uint **)(param_1 + 0x70)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")")))) (!= "!=") (identifier "puVar7")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* 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_8;
  type_4 *pp_Var2;
  type_4 var_4;
  type_5 *var_5;
  type_6 var_6;
  type_4 p_Var6;
  type_4 var_7;
  type_7 *var_9;
  
  var_9 = (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_9 !=
      (this->input_sections_).
      super__Vector_base<gold::type_1::type_7,_std::allocator<gold::type_1::type_7>var_1>
      ._M_impl._M_finish) {
    var_8 = &(order_map->_M_t)._M_impl.super__Rb_tree_header;
    do {
      if (var_9->shndx_ < 0xfffffffc) {
        var_5 = type_7::var_2(var_9);
LAB_000ef065:
        var_6 = type_7::var_3(var_9);
        var_4 = (order_map->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;
        p_Var6 = &var_8->_M_header;
        if (var_4 != (type_4)0x0) {
          do {
            while ((var_7 = var_4, var_5 <= (type_5 *)var_7[1]._M_color &&
                   ((var_5 != (type_5 *)var_7[1]._M_color ||
                    (var_6 <= *(type_6 *)((int)(var_7 + 1) + 4)))))) {
              p_Var6 = var_7;
              var_4 = var_7->_M_left;
              if (var_7->_M_left == (type_4)0x0) goto LAB_000ef09c;
            }
            pp_Var2 = &var_7->_M_right;
            var_7 = p_Var6;
            var_4 = *pp_Var2;
          } while (*pp_Var2 != (type_4)0x0);
LAB_000ef09c:
          if ((((var_8 != (type_3 *)var_7) &&
               ((type_5 *)((type_3 *)var_7)->_M_node_count <= var_5)) &&
              ((var_5 != (type_5 *)((type_3 *)var_7)->_M_node_count ||
               (*(type_6 *)((int)var_7 + 0x14) <= var_6)))) &&
             (*(type_6 *)((type_8 *)((int)var_7 + 0x14) + 4) != 0)) {
            var_9->section_order_index_ = *(type_6 *)((type_8 *)((int)var_7 + 0x14) + 4);
            this->field_0x91 = this->field_0x91 | 2;
          }
        }
      }
      else if (var_9->shndx_ == 0xfffffffc) {
        var_5 = *(type_5 **)&(((var_9->u2_).object)->super_Object).field_0x2c;
        goto LAB_000ef065;
      }
      var_9 = var_9 + 1;
    } while ((this->input_sections_).
             super__Vector_base<gold::type_1::type_7,_std::allocator<gold::type_1::type_7>var_1>
             ._M_impl._M_finish != var_9);
  }
  return;
}


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

void MASKED(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  uint *puVar7;
  
  puVar7 = *(uint **)(param_1 + 0x6c);
  if (puVar7 != *(uint **)(param_1 + 0x70)) {
    do {
      if (*puVar7 < 0xfffffffc) {
        uVar3 = FUN_000ede60(puVar7);
LAB_000ef065:
        uVar4 = FUN_000edef0(puVar7);
        iVar5 = param_2 + 4;
        iVar2 = *(int *)(param_2 + 8);
        if (*(int *)(param_2 + 8) != 0) {
          do {
            while ((iVar6 = iVar2, uVar3 <= *(uint *)(iVar6 + 0x10) &&
                   ((uVar3 != *(uint *)(iVar6 + 0x10) || (uVar4 <= *(uint *)(iVar6 + 0x14)))))) {
              iVar5 = iVar6;
              iVar2 = *(int *)(iVar6 + 8);
              if (*(int *)(iVar6 + 8) == 0) goto LAB_000ef09c;
            }
            piVar1 = (int *)(iVar6 + 0xc);
            iVar6 = iVar5;
            iVar2 = *piVar1;
          } while (*piVar1 != 0);
LAB_000ef09c:
          if ((((param_2 + 4 != iVar6) && (*(uint *)(iVar6 + 0x10) <= uVar3)) &&
              ((uVar3 != *(uint *)(iVar6 + 0x10) || (*(uint *)(iVar6 + 0x14) <= uVar4)))) &&
             (*(uint *)(iVar6 + 0x18) != 0)) {
            puVar7[5] = *(uint *)(iVar6 + 0x18);
            *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;
          }
        }
      }
      else if (*puVar7 == 0xfffffffc) {
        uVar3 = *(uint *)(puVar7[4] + 0x2c);
        goto LAB_000ef065;
      }
      puVar7 = puVar7 + 6;
    } while (*(uint **)(param_1 + 0x70) != puVar7);
  }
  return;
}

