
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */

ld_plugin_status gold::update_section_order(ld_plugin_section *section_list,uint num_sections)

{
  _Base_ptr *pp_Var1;
  _Rb_tree_header *p_Var2;
  size_t *psVar3;
  uint uVar4;
  Plugin_manager *this;
  Layout *pLVar5;
  _Base_ptr p_Var6;
  ld_plugin_status lVar7;
  Object *pOVar8;
  _Base_ptr p_Var9;
  _Rb_tree_node_base *p_Var10;
  int iVar11;
  _Base_ptr p_Var12;
  const_iterator __position;
  bool bVar13;
  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar14;
  
  if (parameters->options_ == (General_options *)0x0) {
LAB_001f2352:
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
  }
  this = parameters->options_->plugins_;
  if (this == (Plugin_manager *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/plugin.cc",0x858,"update_section_order");
  }
  if (num_sections == 0) {
LAB_001f2308:
    lVar7 = LDPS_OK;
  }
  else {
    if (section_list != (ld_plugin_section *)0x0) {
      pLVar5 = this->layout_;
      if (pLVar5 == (Layout *)0x0) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order");
      }
      iVar11 = 0;
      p_Var2 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header;
      pOVar8 = Plugin_manager::get_elf_object(this,section_list->handle);
      do {
        if ((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)) {
          return LDPS_BAD_HANDLE;
        }
        p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent
        ;
        uVar4 = section_list->shndx;
        p_Var12 = &p_Var2->_M_header;
        __position._M_node = &p_Var2->_M_header;
        if (p_Var6 == (_Base_ptr)0x0) {
LAB_001f2220:
          p_Var9 = (_Base_ptr)operator_new(0x38);
          *(uint *)&p_Var9[1]._M_parent = uVar4;
          *(Object **)(p_Var9 + 1) = pOVar8;
          *(undefined4 *)&p_Var9[1]._M_left = 0;
          pVar14 = std::
                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>
                   ::_M_get_insert_hint_unique_pos
                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)
                             );
          p_Var10 = pVar14.second;
          if (p_Var10 != (_Rb_tree_node_base *)0x0) {
            bVar13 = true;
            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&
                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&
                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&
               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {
              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;
            }
            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);
            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;
            *psVar3 = *psVar3 + 1;
            goto LAB_001f228b;
          }
          operator_delete(p_Var9);
          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;
        }
        else {
          do {
            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||
                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))
                   )) {
              pp_Var1 = &p_Var9->_M_right;
              p_Var6 = *pp_Var1;
              p_Var9 = p_Var12;
              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;
            }
            p_Var6 = p_Var9->_M_left;
            p_Var12 = p_Var9;
          } while (p_Var9->_M_left != (_Base_ptr)0x0);
LAB_001f2203:
          __position._M_node = p_Var9;
          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||
             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))
          goto LAB_001f2220;
LAB_001f228b:
          *(int *)&p_Var9[1]._M_left = iVar11 + 1;
        }
        if (iVar11 + 1U == num_sections) goto LAB_001f2308;
        iVar11 = iVar11 + 1;
        section_list = section_list + 1;
        if (parameters->options_ == (General_options *)0x0) goto LAB_001f2352;
        pOVar8 = Plugin_manager::get_elf_object(parameters->options_->plugins_,section_list->handle)
        ;
      } while( true );
    }
    lVar7 = LDPS_ERR;
  }
  return lVar7;
}



undefined8 FUN_001f2140(undefined8 *param_1,int param_2)

{
  long *plVar1;
  long lVar2;
  uint uVar3;
  long lVar4;
  ulong uVar5;
  long lVar6;
  undefined8 uVar7;
  long lVar8;
  int iVar9;
  long lVar10;
  bool bVar11;
  undefined1 auVar12 [16];
  
  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {
LAB_001f2352:
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");
  }
  lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);
  if (lVar8 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");
  }
  if (param_2 == 0) {
LAB_001f2308:
    uVar7 = 0;
  }
  else {
    if (param_1 != (undefined8 *)0x0) {
      lVar4 = *(long *)(lVar8 + 0xe0);
      if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");
      }
      iVar9 = 0;
      lVar2 = lVar4 + 0x3b8;
      uVar5 = FUN_001efa60(lVar8,*param_1);
      do {
        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {
          return 2;
        }
        uVar3 = *(uint *)(param_1 + 1);
        lVar8 = *(long *)(lVar4 + 0x3c0);
        lVar10 = lVar2;
        if (*(long *)(lVar4 + 0x3c0) == 0) {
LAB_001f2220:
          lVar6 = FUN_00275550(0x38);
          *(uint *)(lVar6 + 0x28) = uVar3;
          *(ulong *)(lVar6 + 0x20) = uVar5;
          *(undefined4 *)(lVar6 + 0x30) = 0;
          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);
          lVar8 = auVar12._8_8_;
          if (lVar8 != 0) {
            bVar11 = true;
            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&
                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&
               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {
              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);
            }
            FUN_00278220(bVar11,lVar6,lVar8,lVar2);
            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;
            goto LAB_001f228b;
          }
          FUN_00276d20(lVar6);
          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;
        }
        else {
          do {
            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||
                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {
              plVar1 = (long *)(lVar6 + 0x18);
              lVar8 = *plVar1;
              lVar6 = lVar10;
              if (*plVar1 == 0) goto LAB_001f2203;
            }
            lVar8 = *(long *)(lVar6 + 0x10);
            lVar10 = lVar6;
          } while (*(long *)(lVar6 + 0x10) != 0);
LAB_001f2203:
          lVar10 = lVar6;
          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||
             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))
          goto LAB_001f2220;
LAB_001f228b:
          *(int *)(lVar6 + 0x30) = iVar9 + 1;
        }
        if (iVar9 + 1 == param_2) goto LAB_001f2308;
        iVar9 = iVar9 + 1;
        param_1 = param_1 + 2;
        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;
        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);
      } while( true );
    }
    uVar7 = 3;
  }
  return uVar7;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
MOV RAX,qword ptr [0x003be6b0]
MOV dword ptr [RSP + 0x1c],ESI
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x001f2352
MOV RBX,RDI
MOV RDI,qword ptr [RAX + 0x9058]
TEST RDI,RDI
JZ 0x001f236a
MOV EAX,dword ptr [RSP + 0x1c]
TEST EAX,EAX
JZ 0x001f2308
TEST RBX,RBX
JZ 0x001f234b
MOV R13,qword ptr [RDI + 0xe0]
TEST R13,R13
JZ 0x001f2382
MOV RSI,qword ptr [RBX]
XOR EBP,EBP
LEA R12,[R13 + 0x3b8]
CALL 0x001efa60
MOV RDX,RAX
TEST RAX,RAX
JZ 0x001f22cb
NOP dword ptr [RAX + RAX*0x1]
TEST byte ptr [RAX + 0x3c],0x1
JNZ 0x001f22cb
MOV RAX,qword ptr [R13 + 0x3c0]
MOV R14D,dword ptr [RBX + 0x8]
MOV R15,R12
TEST RAX,RAX
JNZ 0x001f21f4
JMP 0x001f2220
JNZ 0x001f21e8
CMP R14D,dword ptr [RAX + 0x28]
JA 0x001f21fa
MOV R15,RAX
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x001f2203
CMP RDX,qword ptr [RAX + 0x20]
JBE 0x001f21e0
MOV RAX,qword ptr [RAX + 0x18]
TEST RAX,RAX
JNZ 0x001f21f4
CMP R12,R15
JZ 0x001f2220
CMP RDX,qword ptr [R15 + 0x20]
JC 0x001f2220
JNZ 0x001f228b
CMP R14D,dword ptr [R15 + 0x28]
JNC 0x001f228b
NOP word ptr CS:[RAX + RAX*0x1]
MOV EDI,0x38
MOV qword ptr [RSP + 0x10],RDX
MOV qword ptr [RSP + 0x8],R15
CALL 0x00275550
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RSP + 0x8]
LEA RDI,[R13 + 0x3b0]
MOV dword ptr [RAX + 0x28],R14D
MOV R15,RAX
MOV qword ptr [RAX + 0x20],RDX
LEA RDX,[RAX + 0x20]
MOV dword ptr [RAX + 0x30],0x0
CALL 0x001f3af0
TEST RDX,RDX
JZ 0x001f22e0
MOV EDI,0x1
CMP R12,RDX
JZ 0x001f2278
TEST RAX,RAX
JZ 0x001f2320
MOV RCX,R12
MOV RSI,R15
CALL 0x00278220
ADD qword ptr [R13 + 0x3d8],0x1
ADD EBP,0x1
MOV dword ptr [R15 + 0x30],EBP
CMP EBP,dword ptr [RSP + 0x1c]
JZ 0x001f2308
MOV RAX,qword ptr [0x003be6b0]
ADD RBX,0x10
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x001f2352
MOV RDI,qword ptr [RAX + 0x9058]
MOV RSI,qword ptr [RBX]
CALL 0x001efa60
MOV RDX,RAX
TEST RAX,RAX
JNZ 0x001f21c0
ADD RSP,0x28
MOV EAX,0x2
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,R15
MOV qword ptr [RSP + 0x8],RAX
ADD EBP,0x1
CALL 0x00276d20
MOV RAX,qword ptr [RSP + 0x8]
MOV R15,RAX
MOV dword ptr [R15 + 0x30],EBP
CMP EBP,dword ptr [RSP + 0x1c]
JNZ 0x001f2298
NOP word ptr [RAX + RAX*0x1]
XOR EAX,EAX
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,qword ptr [RDX + 0x20]
CMP qword ptr [R15 + 0x20],RAX
JC 0x001f2278
MOV EDI,0x0
JNZ 0x001f2278
XOR EDI,EDI
MOV EAX,dword ptr [RDX + 0x28]
CMP dword ptr [R15 + 0x28],EAX
SETC DIL
JMP 0x001f2278
MOV EAX,0x3
JMP 0x001f230a
LEA RDX,[0x31b028]
MOV ESI,0x5c
LEA RDI,[0x30dc70]
CALL 0x0016cdf0
LEA RDX,[0x31b280]
MOV ESI,0x858
LEA RDI,[0x31aa44]
CALL 0x0016cdf0
LEA RDX,[0x31b280]
MOV ESI,0x861
LEA RDI,[0x31aa44]
CALL 0x0016cdf0
(translation_unit "undefined8 FUN_001f2140(undefined8 *param_1,int param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  uint uVar3;\n  long lVar4;\n  ulong uVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  bool bVar11;\n  undefined1 auVar12 [16];\n  \n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\nLAB_001f2352:\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }\n  lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);\n  if (lVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }\n  if (param_2 == 0) {\nLAB_001f2308:\n    uVar7 = 0;\n  }\n  else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }\n  return uVar7;\n}\n\n" (function_definition "undefined8 FUN_001f2140(undefined8 *param_1,int param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  uint uVar3;\n  long lVar4;\n  ulong uVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  bool bVar11;\n  undefined1 auVar12 [16];\n  \n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\nLAB_001f2352:\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }\n  lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);\n  if (lVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }\n  if (param_2 == 0) {\nLAB_001f2308:\n    uVar7 = 0;\n  }\n  else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }\n  return uVar7;\n}" type_identifier (function_declarator "FUN_001f2140(undefined8 *param_1,int param_2)" identifier (parameter_list "(undefined8 *param_1,int param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  long *plVar1;\n  long lVar2;\n  uint uVar3;\n  long lVar4;\n  ulong uVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  bool bVar11;\n  undefined1 auVar12 [16];\n  \n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\nLAB_001f2352:\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }\n  lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);\n  if (lVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }\n  if (param_2 == 0) {\nLAB_001f2308:\n    uVar7 = 0;\n  }\n  else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }\n  return uVar7;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "undefined1 auVar12 [16];" type_identifier (array_declarator "auVar12 [16]" identifier [ number_literal ]) ;) (if_statement "if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\nLAB_001f2352:\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_001f2352:\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }" { (labeled_statement "LAB_001f2352:\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");" statement_identifier : comment (expression_statement "FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0016cdf0("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;)) })) (expression_statement "lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);" (assignment_expression "lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" identifier = (pointer_expression "*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" * (cast_expression "(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (lVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }" { comment (expression_statement "FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");" (call_expression "FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order")" identifier (argument_list "("../../gold/plugin.cc",0x858,"update_section_order")" ( (string_literal ""../../gold/plugin.cc"" " string_content ") , number_literal , (string_literal ""update_section_order"" " string_content ") ))) ;) })) (if_statement "if (param_2 == 0) {\nLAB_001f2308:\n    uVar7 = 0;\n  }\n  else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001f2308:\n    uVar7 = 0;\n  }" { (labeled_statement "LAB_001f2308:\n    uVar7 = 0;" statement_identifier : (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }" else (compound_statement "{\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }" { (if_statement "if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }" if (parenthesized_expression "(param_1 != (undefined8 *)0x0)" ( (binary_expression "param_1 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }" { (expression_statement "lVar4 = *(long *)(lVar8 + 0xe0);" (assignment_expression "lVar4 = *(long *)(lVar8 + 0xe0)" identifier = (pointer_expression "*(long *)(lVar8 + 0xe0)" * (cast_expression "(long *)(lVar8 + 0xe0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0xe0)" ( (binary_expression "lVar8 + 0xe0" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }" { comment (expression_statement "FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");" (call_expression "FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order")" identifier (argument_list "("../../gold/plugin.cc",0x861,"update_section_order")" ( (string_literal ""../../gold/plugin.cc"" " string_content ") , number_literal , (string_literal ""update_section_order"" " string_content ") ))) ;) })) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "lVar2 = lVar4 + 0x3b8;" (assignment_expression "lVar2 = lVar4 + 0x3b8" identifier = (binary_expression "lVar4 + 0x3b8" identifier + number_literal)) ;) (expression_statement "uVar5 = FUN_001efa60(lVar8,*param_1);" (assignment_expression "uVar5 = FUN_001efa60(lVar8,*param_1)" identifier = (call_expression "FUN_001efa60(lVar8,*param_1)" identifier (argument_list "(lVar8,*param_1)" ( identifier , (pointer_expression "*param_1" * identifier) )))) ;) (do_statement "do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );" do (compound_statement "{\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      }" { (if_statement "if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }" if (parenthesized_expression "((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0))" ( (binary_expression "(uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)" (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) || (parenthesized_expression "((*(byte *)(uVar5 + 0x3c) & 1) != 0)" ( (binary_expression "(*(byte *)(uVar5 + 0x3c) & 1) != 0" (parenthesized_expression "(*(byte *)(uVar5 + 0x3c) & 1)" ( (binary_expression "*(byte *)(uVar5 + 0x3c) & 1" (pointer_expression "*(byte *)(uVar5 + 0x3c)" * (cast_expression "(byte *)(uVar5 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x3c)" ( (binary_expression "uVar5 + 0x3c" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          return 2;\n        }" { (return_statement "return 2;" return number_literal ;) })) (expression_statement "uVar3 = *(uint *)(param_1 + 1);" (assignment_expression "uVar3 = *(uint *)(param_1 + 1)" identifier = (pointer_expression "*(uint *)(param_1 + 1)" * (cast_expression "(uint *)(param_1 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = *(long *)(lVar4 + 0x3c0);" (assignment_expression "lVar8 = *(long *)(lVar4 + 0x3c0)" identifier = (pointer_expression "*(long *)(lVar4 + 0x3c0)" * (cast_expression "(long *)(lVar4 + 0x3c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x3c0)" ( (binary_expression "lVar4 + 0x3c0" identifier + number_literal) ))))) ;) (expression_statement "lVar10 = lVar2;" (assignment_expression "lVar10 = lVar2" identifier = identifier) ;) (if_statement "if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }" if (parenthesized_expression "(*(long *)(lVar4 + 0x3c0) == 0)" ( (binary_expression "*(long *)(lVar4 + 0x3c0) == 0" (pointer_expression "*(long *)(lVar4 + 0x3c0)" * (cast_expression "(long *)(lVar4 + 0x3c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x3c0)" ( (binary_expression "lVar4 + 0x3c0" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }" { (labeled_statement "LAB_001f2220:\n          lVar6 = FUN_00275550(0x38);" statement_identifier : (expression_statement "lVar6 = FUN_00275550(0x38);" (assignment_expression "lVar6 = FUN_00275550(0x38)" identifier = (call_expression "FUN_00275550(0x38)" identifier (argument_list "(0x38)" ( number_literal )))) ;)) (expression_statement "*(uint *)(lVar6 + 0x28) = uVar3;" (assignment_expression "*(uint *)(lVar6 + 0x28) = uVar3" (pointer_expression "*(uint *)(lVar6 + 0x28)" * (cast_expression "(uint *)(lVar6 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(ulong *)(lVar6 + 0x20) = uVar5;" (assignment_expression "*(ulong *)(lVar6 + 0x20) = uVar5" (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(lVar6 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(lVar6 + 0x30) = 0" (pointer_expression "*(undefined4 *)(lVar6 + 0x30)" * (cast_expression "(undefined4 *)(lVar6 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x30)" ( (binary_expression "lVar6 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);" (assignment_expression "auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20)" identifier = (call_expression "FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20)" identifier (argument_list "(lVar4 + 0x3b0,lVar10,lVar6 + 0x20)" ( (binary_expression "lVar4 + 0x3b0" identifier + number_literal) , identifier , (binary_expression "lVar6 + 0x20" identifier + number_literal) )))) ;) (expression_statement "lVar8 = auVar12._8_8_;" (assignment_expression "lVar8 = auVar12._8_8_" identifier = (field_expression "auVar12._8_8_" identifier . field_identifier)) ;) (if_statement "if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }" { (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (if_statement "if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }" if (parenthesized_expression "((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20)))" ( (binary_expression "(((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))" (parenthesized_expression "(((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20)))" ( (binary_expression "((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))" (parenthesized_expression "((lVar2 != lVar8) && (auVar12._0_8_ == 0))" ( (binary_expression "(lVar2 != lVar8) && (auVar12._0_8_ == 0)" (parenthesized_expression "(lVar2 != lVar8)" ( (binary_expression "lVar2 != lVar8" identifier != identifier) )) && (parenthesized_expression "(auVar12._0_8_ == 0)" ( (binary_expression "auVar12._0_8_ == 0" (field_expression "auVar12._0_8_" identifier . field_identifier) == number_literal) ))) )) && (parenthesized_expression "(*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))" ( (binary_expression "*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20)" (pointer_expression "*(ulong *)(lVar8 + 0x20)" * (cast_expression "(ulong *)(lVar8 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) )))) <= (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "(bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))" ( (comma_expression "bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20)" (assignment_expression "bVar11 = false" identifier = false) , (binary_expression "*(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20)" (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) )))) == (pointer_expression "*(ulong *)(lVar8 + 0x20)" * (cast_expression "(ulong *)(lVar8 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) )))))) ))) )) (compound_statement "{\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }" { (expression_statement "bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);" (assignment_expression "bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28)" identifier = (binary_expression "*(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28)" (pointer_expression "*(uint *)(lVar6 + 0x28)" * (cast_expression "(uint *)(lVar6 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) )))) < (pointer_expression "*(uint *)(lVar8 + 0x28)" * (cast_expression "(uint *)(lVar8 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x28)" ( (binary_expression "lVar8 + 0x28" identifier + number_literal) )))))) ;) })) (expression_statement "FUN_00278220(bVar11,lVar6,lVar8,lVar2);" (call_expression "FUN_00278220(bVar11,lVar6,lVar8,lVar2)" identifier (argument_list "(bVar11,lVar6,lVar8,lVar2)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;" (assignment_expression "*(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1" (pointer_expression "*(long *)(lVar4 + 0x3d8)" * (cast_expression "(long *)(lVar4 + 0x3d8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x3d8)" ( (binary_expression "lVar4 + 0x3d8" identifier + number_literal) )))) = (binary_expression "*(long *)(lVar4 + 0x3d8) + 1" (pointer_expression "*(long *)(lVar4 + 0x3d8)" * (cast_expression "(long *)(lVar4 + 0x3d8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x3d8)" ( (binary_expression "lVar4 + 0x3d8" identifier + number_literal) )))) + number_literal)) ;) (goto_statement "goto LAB_001f228b;" goto statement_identifier ;) })) (expression_statement "FUN_00276d20(lVar6);" (call_expression "FUN_00276d20(lVar6)" identifier (argument_list "(lVar6)" ( identifier ))) ;) (expression_statement "*(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;" (assignment_expression "*(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1" (pointer_expression "*(int *)(auVar12._0_8_ + 0x30)" * (cast_expression "(int *)(auVar12._0_8_ + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar12._0_8_ + 0x30)" ( (binary_expression "auVar12._0_8_ + 0x30" (field_expression "auVar12._0_8_" identifier . field_identifier) + number_literal) )))) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }" else (compound_statement "{\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }" { (do_statement "do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);" do (compound_statement "{\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          }" { (while_statement "while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }" while (parenthesized_expression "((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)))))" ( (parenthesized_expression "(lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))" ( (comma_expression "lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)))" (assignment_expression "lVar6 = lVar8" identifier = identifier) , (binary_expression "*(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)))" (binary_expression "*(ulong *)(lVar6 + 0x20) < uVar5" (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) )))) < identifier) || (parenthesized_expression "((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)))" ( (parenthesized_expression "(uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))" ( (binary_expression "uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)" (binary_expression "uVar5 == *(ulong *)(lVar6 + 0x20)" identifier == (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) && (parenthesized_expression "(*(uint *)(lVar6 + 0x28) < uVar3)" ( (binary_expression "*(uint *)(lVar6 + 0x28) < uVar3" (pointer_expression "*(uint *)(lVar6 + 0x28)" * (cast_expression "(uint *)(lVar6 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) )))) < identifier) ))) )) )))) )) )) (compound_statement "{\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }" { (expression_statement "plVar1 = (long *)(lVar6 + 0x18);" (assignment_expression "plVar1 = (long *)(lVar6 + 0x18)" identifier = (cast_expression "(long *)(lVar6 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x18)" ( (binary_expression "lVar6 + 0x18" identifier + number_literal) )))) ;) (expression_statement "lVar8 = *plVar1;" (assignment_expression "lVar8 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (expression_statement "lVar6 = lVar10;" (assignment_expression "lVar6 = lVar10" identifier = identifier) ;) (if_statement "if (*plVar1 == 0) goto LAB_001f2203;" if (parenthesized_expression "(*plVar1 == 0)" ( (binary_expression "*plVar1 == 0" (pointer_expression "*plVar1" * identifier) == number_literal) )) (goto_statement "goto LAB_001f2203;" goto statement_identifier ;)) })) (expression_statement "lVar8 = *(long *)(lVar6 + 0x10);" (assignment_expression "lVar8 = *(long *)(lVar6 + 0x10)" identifier = (pointer_expression "*(long *)(lVar6 + 0x10)" * (cast_expression "(long *)(lVar6 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "lVar10 = lVar6;" (assignment_expression "lVar10 = lVar6" identifier = identifier) ;) }) while (parenthesized_expression "(*(long *)(lVar6 + 0x10) != 0)" ( (binary_expression "*(long *)(lVar6 + 0x10) != 0" (pointer_expression "*(long *)(lVar6 + 0x10)" * (cast_expression "(long *)(lVar6 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) )))) != number_literal) )) ;) (labeled_statement "LAB_001f2203:\n          lVar10 = lVar6;" statement_identifier : (expression_statement "lVar10 = lVar6;" (assignment_expression "lVar10 = lVar6" identifier = identifier) ;)) (if_statement "if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;" if (parenthesized_expression "(((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))" ( (binary_expression "((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28))))" (parenthesized_expression "((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20)))" ( (binary_expression "(lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))" (parenthesized_expression "(lVar2 == lVar6)" ( (binary_expression "lVar2 == lVar6" identifier == identifier) )) || (parenthesized_expression "(uVar5 < *(ulong *)(lVar6 + 0x20))" ( (binary_expression "uVar5 < *(ulong *)(lVar6 + 0x20)" identifier < (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ))) )) || (parenthesized_expression "((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28))))" ( (parenthesized_expression "(uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))" ( (binary_expression "uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28))" (binary_expression "uVar5 == *(ulong *)(lVar6 + 0x20)" identifier == (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) && (parenthesized_expression "(uVar3 < *(uint *)(lVar6 + 0x28))" ( (binary_expression "uVar3 < *(uint *)(lVar6 + 0x28)" identifier < (pointer_expression "*(uint *)(lVar6 + 0x28)" * (cast_expression "(uint *)(lVar6 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) ))))) ))) )) ))) )) (goto_statement "goto LAB_001f2220;" goto statement_identifier ;)) (labeled_statement "LAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;" statement_identifier : (expression_statement "*(int *)(lVar6 + 0x30) = iVar9 + 1;" (assignment_expression "*(int *)(lVar6 + 0x30) = iVar9 + 1" (pointer_expression "*(int *)(lVar6 + 0x30)" * (cast_expression "(int *)(lVar6 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x30)" ( (binary_expression "lVar6 + 0x30" identifier + number_literal) )))) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;)) }))) (if_statement "if (iVar9 + 1 == param_2) goto LAB_001f2308;" if (parenthesized_expression "(iVar9 + 1 == param_2)" ( (binary_expression "iVar9 + 1 == param_2" (binary_expression "iVar9 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_001f2308;" goto statement_identifier ;)) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 2;" (assignment_expression "param_1 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (if_statement "if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;" if (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_001f2352;" goto statement_identifier ;)) (expression_statement "uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);" (assignment_expression "uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1)" identifier = (call_expression "FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1)" identifier (argument_list "(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1)" ( (pointer_expression "*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" * (cast_expression "(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) , (pointer_expression "*param_1" * identifier) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "uVar7 = 3;" (assignment_expression "uVar7 = 3" identifier = number_literal) ;) }))) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Enum "DT": Some values do not have unique names */\n\nld_plugin_status gold::update_section_order(ld_plugin_section *section_list,uint num_sections)\n\n{\n  _Base_ptr *pp_Var1;\n  _Rb_tree_header *p_Var2;\n  size_t *psVar3;\n  uint uVar4;\n  Plugin_manager *this;\n  Layout *pLVar5;\n  _Base_ptr p_Var6;\n  ld_plugin_status lVar7;\n  Object *pOVar8;\n  _Base_ptr p_Var9;\n  _Rb_tree_node_base *p_Var10;\n  int iVar11;\n  _Base_ptr p_Var12;\n  const_iterator __position;\n  bool bVar13;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar14;\n  \n  if (parameters->options_ == (General_options *)0x0) {\nLAB_001f2352:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  this = parameters->options_->plugins_;\n  if (this == (Plugin_manager *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/plugin.cc",0x858,"update_section_order");\n  }\n  if (num_sections == 0) {\nLAB_001f2308:\n    lVar7 = LDPS_OK;\n  }\n  else {\n    if (section_list != (ld_plugin_section *)0x0) {\n      pLVar5 = this->layout_;\n      if (pLVar5 == (Layout *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar11 = 0;\n      p_Var2 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header;\n      pOVar8 = Plugin_manager::get_elf_object(this,section_list->handle);\n      do {\n        if ((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)) {\n          return LDPS_BAD_HANDLE;\n        }\n        p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent\n        ;\n        uVar4 = section_list->shndx;\n        p_Var12 = &p_Var2->_M_header;\n        __position._M_node = &p_Var2->_M_header;\n        if (p_Var6 == (_Base_ptr)0x0) {\nLAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);\n          *(uint *)&p_Var9[1]._M_parent = uVar4;\n          *(Object **)(p_Var9 + 1) = pOVar8;\n          *(undefined4 *)&p_Var9[1]._M_left = 0;\n          pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );\n          p_Var10 = pVar14.second;\n          if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }\n          operator_delete(p_Var9);\n          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;\n        }\n        else {\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }\n        if (iVar11 + 1U == num_sections) goto LAB_001f2308;\n        iVar11 = iVar11 + 1;\n        section_list = section_list + 1;\n        if (parameters->options_ == (General_options *)0x0) goto LAB_001f2352;\n        pOVar8 = Plugin_manager::get_elf_object(parameters->options_->plugins_,section_list->handle)\n        ;\n      } while( true );\n    }\n    lVar7 = LDPS_ERR;\n  }\n  return lVar7;\n}\n\n" comment comment (function_definition "ld_plugin_status gold::update_section_order(ld_plugin_section *section_list,uint num_sections)\n\n{\n  _Base_ptr *pp_Var1;\n  _Rb_tree_header *p_Var2;\n  size_t *psVar3;\n  uint uVar4;\n  Plugin_manager *this;\n  Layout *pLVar5;\n  _Base_ptr p_Var6;\n  ld_plugin_status lVar7;\n  Object *pOVar8;\n  _Base_ptr p_Var9;\n  _Rb_tree_node_base *p_Var10;\n  int iVar11;\n  _Base_ptr p_Var12;\n  const_iterator __position;\n  bool bVar13;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar14;\n  \n  if (parameters->options_ == (General_options *)0x0) {\nLAB_001f2352:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  this = parameters->options_->plugins_;\n  if (this == (Plugin_manager *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/plugin.cc",0x858,"update_section_order");\n  }\n  if (num_sections == 0) {\nLAB_001f2308:\n    lVar7 = LDPS_OK;\n  }\n  else {\n    if (section_list != (ld_plugin_section *)0x0) {\n      pLVar5 = this->layout_;\n      if (pLVar5 == (Layout *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar11 = 0;\n      p_Var2 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header;\n      pOVar8 = Plugin_manager::get_elf_object(this,section_list->handle);\n      do {\n        if ((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)) {\n          return LDPS_BAD_HANDLE;\n        }\n        p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent\n        ;\n        uVar4 = section_list->shndx;\n        p_Var12 = &p_Var2->_M_header;\n        __position._M_node = &p_Var2->_M_header;\n        if (p_Var6 == (_Base_ptr)0x0) {\nLAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);\n          *(uint *)&p_Var9[1]._M_parent = uVar4;\n          *(Object **)(p_Var9 + 1) = pOVar8;\n          *(undefined4 *)&p_Var9[1]._M_left = 0;\n          pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );\n          p_Var10 = pVar14.second;\n          if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }\n          operator_delete(p_Var9);\n          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;\n        }\n        else {\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }\n        if (iVar11 + 1U == num_sections) goto LAB_001f2308;\n        iVar11 = iVar11 + 1;\n        section_list = section_list + 1;\n        if (parameters->options_ == (General_options *)0x0) goto LAB_001f2352;\n        pOVar8 = Plugin_manager::get_elf_object(parameters->options_->plugins_,section_list->handle)\n        ;\n      } while( true );\n    }\n    lVar7 = LDPS_ERR;\n  }\n  return lVar7;\n}" type_identifier (ERROR "gold::" identifier : :) (function_declarator "update_section_order(ld_plugin_section *section_list,uint num_sections)" identifier (parameter_list "(ld_plugin_section *section_list,uint num_sections)" ( (parameter_declaration "ld_plugin_section *section_list" type_identifier (pointer_declarator "*section_list" * identifier)) , (parameter_declaration "uint num_sections" type_identifier identifier) ))) (compound_statement "{\n  _Base_ptr *pp_Var1;\n  _Rb_tree_header *p_Var2;\n  size_t *psVar3;\n  uint uVar4;\n  Plugin_manager *this;\n  Layout *pLVar5;\n  _Base_ptr p_Var6;\n  ld_plugin_status lVar7;\n  Object *pOVar8;\n  _Base_ptr p_Var9;\n  _Rb_tree_node_base *p_Var10;\n  int iVar11;\n  _Base_ptr p_Var12;\n  const_iterator __position;\n  bool bVar13;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar14;\n  \n  if (parameters->options_ == (General_options *)0x0) {\nLAB_001f2352:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  this = parameters->options_->plugins_;\n  if (this == (Plugin_manager *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/plugin.cc",0x858,"update_section_order");\n  }\n  if (num_sections == 0) {\nLAB_001f2308:\n    lVar7 = LDPS_OK;\n  }\n  else {\n    if (section_list != (ld_plugin_section *)0x0) {\n      pLVar5 = this->layout_;\n      if (pLVar5 == (Layout *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar11 = 0;\n      p_Var2 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header;\n      pOVar8 = Plugin_manager::get_elf_object(this,section_list->handle);\n      do {\n        if ((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)) {\n          return LDPS_BAD_HANDLE;\n        }\n        p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent\n        ;\n        uVar4 = section_list->shndx;\n        p_Var12 = &p_Var2->_M_header;\n        __position._M_node = &p_Var2->_M_header;\n        if (p_Var6 == (_Base_ptr)0x0) {\nLAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);\n          *(uint *)&p_Var9[1]._M_parent = uVar4;\n          *(Object **)(p_Var9 + 1) = pOVar8;\n          *(undefined4 *)&p_Var9[1]._M_left = 0;\n          pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );\n          p_Var10 = pVar14.second;\n          if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }\n          operator_delete(p_Var9);\n          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;\n        }\n        else {\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }\n        if (iVar11 + 1U == num_sections) goto LAB_001f2308;\n        iVar11 = iVar11 + 1;\n        section_list = section_list + 1;\n        if (parameters->options_ == (General_options *)0x0) goto LAB_001f2352;\n        pOVar8 = Plugin_manager::get_elf_object(parameters->options_->plugins_,section_list->handle)\n        ;\n      } while( true );\n    }\n    lVar7 = LDPS_ERR;\n  }\n  return lVar7;\n}" { (declaration "_Base_ptr *pp_Var1;" type_identifier (pointer_declarator "*pp_Var1" * identifier) ;) (declaration "_Rb_tree_header *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "size_t *psVar3;" primitive_type (pointer_declarator "*psVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "Plugin_manager *this;" type_identifier (pointer_declarator "*this" * identifier) ;) (declaration "Layout *pLVar5;" type_identifier (pointer_declarator "*pLVar5" * identifier) ;) (declaration "_Base_ptr p_Var6;" type_identifier identifier ;) (declaration "ld_plugin_status lVar7;" type_identifier identifier ;) (declaration "Object *pOVar8;" type_identifier (pointer_declarator "*pOVar8" * identifier) ;) (declaration "_Base_ptr p_Var9;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var10;" type_identifier (pointer_declarator "*p_Var10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "_Base_ptr p_Var12;" type_identifier identifier ;) (declaration "const_iterator __position;" type_identifier identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (ERROR "pair<std::_Rb_tree_node_base*,_std::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_node_base*,_std" identifier * (ERROR "," ,) identifier) : :) (expression_statement "_Rb_tree_node_base*> pVar14;" (binary_expression "_Rb_tree_node_base*> pVar14" identifier * (ERROR ">" >) identifier) ;) (if_statement "if (parameters->options_ == (General_options *)0x0) {\nLAB_001f2352:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001f2352:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" { (labeled_statement "LAB_001f2352:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;)) })) (expression_statement "this = parameters->options_->plugins_;" (assignment_expression "this = parameters->options_->plugins_" identifier = (field_expression "parameters->options_->plugins_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (this == (Plugin_manager *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/plugin.cc",0x858,"update_section_order");\n  }" if (parenthesized_expression "(this == (Plugin_manager *)0x0)" ( (binary_expression "this == (Plugin_manager *)0x0" identifier == (cast_expression "(Plugin_manager *)0x0" ( (type_descriptor "Plugin_manager *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/plugin.cc",0x858,"update_section_order");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/plugin.cc",0x858,"update_section_order");" (call_expression "do_gold_unreachable("../../gold/plugin.cc",0x858,"update_section_order")" identifier (argument_list "("../../gold/plugin.cc",0x858,"update_section_order")" ( (string_literal ""../../gold/plugin.cc"" " string_content ") , number_literal , (string_literal ""update_section_order"" " string_content ") ))) ;) })) (if_statement "if (num_sections == 0) {\nLAB_001f2308:\n    lVar7 = LDPS_OK;\n  }\n  else {\n    if (section_list != (ld_plugin_section *)0x0) {\n      pLVar5 = this->layout_;\n      if (pLVar5 == (Layout *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar11 = 0;\n      p_Var2 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header;\n      pOVar8 = Plugin_manager::get_elf_object(this,section_list->handle);\n      do {\n        if ((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)) {\n          return LDPS_BAD_HANDLE;\n        }\n        p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent\n        ;\n        uVar4 = section_list->shndx;\n        p_Var12 = &p_Var2->_M_header;\n        __position._M_node = &p_Var2->_M_header;\n        if (p_Var6 == (_Base_ptr)0x0) {\nLAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);\n          *(uint *)&p_Var9[1]._M_parent = uVar4;\n          *(Object **)(p_Var9 + 1) = pOVar8;\n          *(undefined4 *)&p_Var9[1]._M_left = 0;\n          pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );\n          p_Var10 = pVar14.second;\n          if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }\n          operator_delete(p_Var9);\n          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;\n        }\n        else {\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }\n        if (iVar11 + 1U == num_sections) goto LAB_001f2308;\n        iVar11 = iVar11 + 1;\n        section_list = section_list + 1;\n        if (parameters->options_ == (General_options *)0x0) goto LAB_001f2352;\n        pOVar8 = Plugin_manager::get_elf_object(parameters->options_->plugins_,section_list->handle)\n        ;\n      } while( true );\n    }\n    lVar7 = LDPS_ERR;\n  }" if (parenthesized_expression "(num_sections == 0)" ( (binary_expression "num_sections == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001f2308:\n    lVar7 = LDPS_OK;\n  }" { (labeled_statement "LAB_001f2308:\n    lVar7 = LDPS_OK;" statement_identifier : (expression_statement "lVar7 = LDPS_OK;" (assignment_expression "lVar7 = LDPS_OK" identifier = identifier) ;)) }) (else_clause "else {\n    if (section_list != (ld_plugin_section *)0x0) {\n      pLVar5 = this->layout_;\n      if (pLVar5 == (Layout *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar11 = 0;\n      p_Var2 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header;\n      pOVar8 = Plugin_manager::get_elf_object(this,section_list->handle);\n      do {\n        if ((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)) {\n          return LDPS_BAD_HANDLE;\n        }\n        p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent\n        ;\n        uVar4 = section_list->shndx;\n        p_Var12 = &p_Var2->_M_header;\n        __position._M_node = &p_Var2->_M_header;\n        if (p_Var6 == (_Base_ptr)0x0) {\nLAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);\n          *(uint *)&p_Var9[1]._M_parent = uVar4;\n          *(Object **)(p_Var9 + 1) = pOVar8;\n          *(undefined4 *)&p_Var9[1]._M_left = 0;\n          pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );\n          p_Var10 = pVar14.second;\n          if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }\n          operator_delete(p_Var9);\n          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;\n        }\n        else {\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }\n        if (iVar11 + 1U == num_sections) goto LAB_001f2308;\n        iVar11 = iVar11 + 1;\n        section_list = section_list + 1;\n        if (parameters->options_ == (General_options *)0x0) goto LAB_001f2352;\n        pOVar8 = Plugin_manager::get_elf_object(parameters->options_->plugins_,section_list->handle)\n        ;\n      } while( true );\n    }\n    lVar7 = LDPS_ERR;\n  }" else (compound_statement "{\n    if (section_list != (ld_plugin_section *)0x0) {\n      pLVar5 = this->layout_;\n      if (pLVar5 == (Layout *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar11 = 0;\n      p_Var2 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header;\n      pOVar8 = Plugin_manager::get_elf_object(this,section_list->handle);\n      do {\n        if ((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)) {\n          return LDPS_BAD_HANDLE;\n        }\n        p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent\n        ;\n        uVar4 = section_list->shndx;\n        p_Var12 = &p_Var2->_M_header;\n        __position._M_node = &p_Var2->_M_header;\n        if (p_Var6 == (_Base_ptr)0x0) {\nLAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);\n          *(uint *)&p_Var9[1]._M_parent = uVar4;\n          *(Object **)(p_Var9 + 1) = pOVar8;\n          *(undefined4 *)&p_Var9[1]._M_left = 0;\n          pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );\n          p_Var10 = pVar14.second;\n          if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }\n          operator_delete(p_Var9);\n          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;\n        }\n        else {\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }\n        if (iVar11 + 1U == num_sections) goto LAB_001f2308;\n        iVar11 = iVar11 + 1;\n        section_list = section_list + 1;\n        if (parameters->options_ == (General_options *)0x0) goto LAB_001f2352;\n        pOVar8 = Plugin_manager::get_elf_object(parameters->options_->plugins_,section_list->handle)\n        ;\n      } while( true );\n    }\n    lVar7 = LDPS_ERR;\n  }" { (if_statement "if (section_list != (ld_plugin_section *)0x0) {\n      pLVar5 = this->layout_;\n      if (pLVar5 == (Layout *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar11 = 0;\n      p_Var2 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header;\n      pOVar8 = Plugin_manager::get_elf_object(this,section_list->handle);\n      do {\n        if ((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)) {\n          return LDPS_BAD_HANDLE;\n        }\n        p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent\n        ;\n        uVar4 = section_list->shndx;\n        p_Var12 = &p_Var2->_M_header;\n        __position._M_node = &p_Var2->_M_header;\n        if (p_Var6 == (_Base_ptr)0x0) {\nLAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);\n          *(uint *)&p_Var9[1]._M_parent = uVar4;\n          *(Object **)(p_Var9 + 1) = pOVar8;\n          *(undefined4 *)&p_Var9[1]._M_left = 0;\n          pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );\n          p_Var10 = pVar14.second;\n          if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }\n          operator_delete(p_Var9);\n          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;\n        }\n        else {\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }\n        if (iVar11 + 1U == num_sections) goto LAB_001f2308;\n        iVar11 = iVar11 + 1;\n        section_list = section_list + 1;\n        if (parameters->options_ == (General_options *)0x0) goto LAB_001f2352;\n        pOVar8 = Plugin_manager::get_elf_object(parameters->options_->plugins_,section_list->handle)\n        ;\n      } while( true );\n    }" if (parenthesized_expression "(section_list != (ld_plugin_section *)0x0)" ( (binary_expression "section_list != (ld_plugin_section *)0x0" identifier != (cast_expression "(ld_plugin_section *)0x0" ( (type_descriptor "ld_plugin_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pLVar5 = this->layout_;\n      if (pLVar5 == (Layout *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar11 = 0;\n      p_Var2 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header;\n      pOVar8 = Plugin_manager::get_elf_object(this,section_list->handle);\n      do {\n        if ((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)) {\n          return LDPS_BAD_HANDLE;\n        }\n        p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent\n        ;\n        uVar4 = section_list->shndx;\n        p_Var12 = &p_Var2->_M_header;\n        __position._M_node = &p_Var2->_M_header;\n        if (p_Var6 == (_Base_ptr)0x0) {\nLAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);\n          *(uint *)&p_Var9[1]._M_parent = uVar4;\n          *(Object **)(p_Var9 + 1) = pOVar8;\n          *(undefined4 *)&p_Var9[1]._M_left = 0;\n          pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );\n          p_Var10 = pVar14.second;\n          if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }\n          operator_delete(p_Var9);\n          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;\n        }\n        else {\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }\n        if (iVar11 + 1U == num_sections) goto LAB_001f2308;\n        iVar11 = iVar11 + 1;\n        section_list = section_list + 1;\n        if (parameters->options_ == (General_options *)0x0) goto LAB_001f2352;\n        pOVar8 = Plugin_manager::get_elf_object(parameters->options_->plugins_,section_list->handle)\n        ;\n      } while( true );\n    }" { (expression_statement "pLVar5 = this->layout_;" (assignment_expression "pLVar5 = this->layout_" identifier = (field_expression "this->layout_" identifier -> field_identifier)) ;) (if_statement "if (pLVar5 == (Layout *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order");\n      }" if (parenthesized_expression "(pLVar5 == (Layout *)0x0)" ( (binary_expression "pLVar5 == (Layout *)0x0" identifier == (cast_expression "(Layout *)0x0" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order");\n      }" { comment (expression_statement "do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order");" (call_expression "do_gold_unreachable("../../gold/plugin.cc",0x861,"update_section_order")" identifier (argument_list "("../../gold/plugin.cc",0x861,"update_section_order")" ( (string_literal ""../../gold/plugin.cc"" " string_content ") , number_literal , (string_literal ""update_section_order"" " string_content ") ))) ;) })) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "p_Var2 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var2 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header" identifier = (pointer_expression "&(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(pLVar5->section_order_map_)._M_t._M_impl" (field_expression "(pLVar5->section_order_map_)._M_t" (parenthesized_expression "(pLVar5->section_order_map_)" ( (field_expression "pLVar5->section_order_map_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (ERROR "pOVar8 = Plugin_manager::" (assignment_expression "pOVar8 = Plugin_manager" identifier = identifier) : :) (expression_statement "get_elf_object(this,section_list->handle);" (call_expression "get_elf_object(this,section_list->handle)" identifier (argument_list "(this,section_list->handle)" ( identifier , (field_expression "section_list->handle" identifier -> field_identifier) ))) ;) (do_statement "do {\n        if ((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)) {\n          return LDPS_BAD_HANDLE;\n        }\n        p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent\n        ;\n        uVar4 = section_list->shndx;\n        p_Var12 = &p_Var2->_M_header;\n        __position._M_node = &p_Var2->_M_header;\n        if (p_Var6 == (_Base_ptr)0x0) {\nLAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);\n          *(uint *)&p_Var9[1]._M_parent = uVar4;\n          *(Object **)(p_Var9 + 1) = pOVar8;\n          *(undefined4 *)&p_Var9[1]._M_left = 0;\n          pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );\n          p_Var10 = pVar14.second;\n          if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }\n          operator_delete(p_Var9);\n          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;\n        }\n        else {\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }\n        if (iVar11 + 1U == num_sections) goto LAB_001f2308;\n        iVar11 = iVar11 + 1;\n        section_list = section_list + 1;\n        if (parameters->options_ == (General_options *)0x0) goto LAB_001f2352;\n        pOVar8 = Plugin_manager::get_elf_object(parameters->options_->plugins_,section_list->handle)\n        ;\n      } while( true );" do (compound_statement "{\n        if ((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)) {\n          return LDPS_BAD_HANDLE;\n        }\n        p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent\n        ;\n        uVar4 = section_list->shndx;\n        p_Var12 = &p_Var2->_M_header;\n        __position._M_node = &p_Var2->_M_header;\n        if (p_Var6 == (_Base_ptr)0x0) {\nLAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);\n          *(uint *)&p_Var9[1]._M_parent = uVar4;\n          *(Object **)(p_Var9 + 1) = pOVar8;\n          *(undefined4 *)&p_Var9[1]._M_left = 0;\n          pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );\n          p_Var10 = pVar14.second;\n          if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }\n          operator_delete(p_Var9);\n          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;\n        }\n        else {\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }\n        if (iVar11 + 1U == num_sections) goto LAB_001f2308;\n        iVar11 = iVar11 + 1;\n        section_list = section_list + 1;\n        if (parameters->options_ == (General_options *)0x0) goto LAB_001f2352;\n        pOVar8 = Plugin_manager::get_elf_object(parameters->options_->plugins_,section_list->handle)\n        ;\n      }" { (if_statement "if ((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)) {\n          return LDPS_BAD_HANDLE;\n        }" if (parenthesized_expression "((pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0))" ( (binary_expression "(pOVar8 == (Object *)0x0) || ((pOVar8->field_0x3c & 1) != 0)" (parenthesized_expression "(pOVar8 == (Object *)0x0)" ( (binary_expression "pOVar8 == (Object *)0x0" identifier == (cast_expression "(Object *)0x0" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((pOVar8->field_0x3c & 1) != 0)" ( (binary_expression "(pOVar8->field_0x3c & 1) != 0" (parenthesized_expression "(pOVar8->field_0x3c & 1)" ( (binary_expression "pOVar8->field_0x3c & 1" (field_expression "pOVar8->field_0x3c" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          return LDPS_BAD_HANDLE;\n        }" { (return_statement "return LDPS_BAD_HANDLE;" return identifier ;) })) (expression_statement "p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent\n        ;" (assignment_expression "p_Var6 = (pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" (field_expression "(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(pLVar5->section_order_map_)._M_t._M_impl" (field_expression "(pLVar5->section_order_map_)._M_t" (parenthesized_expression "(pLVar5->section_order_map_)" ( (field_expression "pLVar5->section_order_map_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "uVar4 = section_list->shndx;" (assignment_expression "uVar4 = section_list->shndx" identifier = (field_expression "section_list->shndx" identifier -> field_identifier)) ;) (expression_statement "p_Var12 = &p_Var2->_M_header;" (assignment_expression "p_Var12 = &p_Var2->_M_header" identifier = (pointer_expression "&p_Var2->_M_header" & (field_expression "p_Var2->_M_header" identifier -> field_identifier))) ;) (expression_statement "__position._M_node = &p_Var2->_M_header;" (assignment_expression "__position._M_node = &p_Var2->_M_header" (field_expression "__position._M_node" identifier . field_identifier) = (pointer_expression "&p_Var2->_M_header" & (field_expression "p_Var2->_M_header" identifier -> field_identifier))) ;) (if_statement "if (p_Var6 == (_Base_ptr)0x0) {\nLAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);\n          *(uint *)&p_Var9[1]._M_parent = uVar4;\n          *(Object **)(p_Var9 + 1) = pOVar8;\n          *(undefined4 *)&p_Var9[1]._M_left = 0;\n          pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );\n          p_Var10 = pVar14.second;\n          if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }\n          operator_delete(p_Var9);\n          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;\n        }\n        else {\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }" if (parenthesized_expression "(p_Var6 == (_Base_ptr)0x0)" ( (binary_expression "p_Var6 == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);\n          *(uint *)&p_Var9[1]._M_parent = uVar4;\n          *(Object **)(p_Var9 + 1) = pOVar8;\n          *(undefined4 *)&p_Var9[1]._M_left = 0;\n          pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );\n          p_Var10 = pVar14.second;\n          if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }\n          operator_delete(p_Var9);\n          *(int *)&pVar14.first[1]._M_left = iVar11 + 1;\n        }" { (labeled_statement "LAB_001f2220:\n          p_Var9 = (_Base_ptr)operator_new(0x38);" statement_identifier : (expression_statement "p_Var9 = (_Base_ptr)operator_new(0x38);" (assignment_expression "p_Var9 = (_Base_ptr)operator_new(0x38)" identifier = (cast_expression "(_Base_ptr)operator_new(0x38)" ( (type_descriptor "_Base_ptr" type_identifier) ) (call_expression "operator_new(0x38)" identifier (argument_list "(0x38)" ( number_literal ))))) ;)) (expression_statement "*(uint *)&p_Var9[1]._M_parent = uVar4;" (assignment_expression "*(uint *)&p_Var9[1]._M_parent = uVar4" (pointer_expression "*(uint *)&p_Var9[1]._M_parent" * (cast_expression "(uint *)&p_Var9[1]._M_parent" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var9[1]._M_parent" & (field_expression "p_Var9[1]._M_parent" (subscript_expression "p_Var9[1]" identifier [ number_literal ]) . field_identifier)))) = identifier) ;) (expression_statement "*(Object **)(p_Var9 + 1) = pOVar8;" (assignment_expression "*(Object **)(p_Var9 + 1) = pOVar8" (pointer_expression "*(Object **)(p_Var9 + 1)" * (cast_expression "(Object **)(p_Var9 + 1)" ( (type_descriptor "Object **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)&p_Var9[1]._M_left = 0;" (assignment_expression "*(undefined4 *)&p_Var9[1]._M_left = 0" (pointer_expression "*(undefined4 *)&p_Var9[1]._M_left" * (cast_expression "(undefined4 *)&p_Var9[1]._M_left" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var9[1]._M_left" & (field_expression "p_Var9[1]._M_left" (subscript_expression "p_Var9[1]" identifier [ number_literal ]) . field_identifier)))) = number_literal) ;) (ERROR "pVar14 = std::\n                   _Rb_tree<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>,_std::_Select1st<std::pair<const_std::pair<gold::Relobj*,_unsigned_int>,_unsigned_int>_>,_std::less<std::pair<gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<gold::" (assignment_expression "pVar14 = std" identifier = identifier) : : (binary_expression "_Rb_tree<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>,_std" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>,_unsigned_int>,_std" (binary_expression "Relobj*,_unsigned_int>,_unsigned_int" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) > (ERROR "," ,) identifier) : : (binary_expression "_Select1st<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>,_unsigned_int>_>,_std" (binary_expression "Relobj*,_unsigned_int>,_unsigned_int>_" (binary_expression "Relobj*,_unsigned_int>,_unsigned_int" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "less<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>_>,_std" (binary_expression "Relobj*,_unsigned_int>_" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : :) (expression_statement "Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             );" (binary_expression "Relobj*,_unsigned_int>,_unsigned_int>_>_>\n                   ::_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             )" (binary_expression "Relobj*,_unsigned_int>,_unsigned_int>_>_" (binary_expression "Relobj*,_unsigned_int>,_unsigned_int>_" (binary_expression "Relobj*,_unsigned_int>,_unsigned_int" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) > identifier) > identifier) > (ERROR "::" : :) (call_expression "_M_get_insert_hint_unique_pos\n                             (&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             )" identifier (argument_list "(&(pLVar5->section_order_map_)._M_t,__position,(key_type *)(p_Var9 + 1)\n                             )" ( (pointer_expression "&(pLVar5->section_order_map_)._M_t" & (field_expression "(pLVar5->section_order_map_)._M_t" (parenthesized_expression "(pLVar5->section_order_map_)" ( (field_expression "pLVar5->section_order_map_" identifier -> field_identifier) )) . field_identifier)) , identifier , (cast_expression "(key_type *)(p_Var9 + 1)" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) ))) )))) ;) (expression_statement "p_Var10 = pVar14.second;" (assignment_expression "p_Var10 = pVar14.second" identifier = (field_expression "pVar14.second" identifier . field_identifier)) ;) (if_statement "if (p_Var10 != (_Rb_tree_node_base *)0x0) {\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }" if (parenthesized_expression "(p_Var10 != (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var10 != (_Rb_tree_node_base *)0x0" identifier != (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            bVar13 = true;\n            if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }\n            std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);\n            psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n            *psVar3 = *psVar3 + 1;\n            goto LAB_001f228b;\n          }" { (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" identifier = true) ;) (if_statement "if ((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))) {\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }" if (parenthesized_expression "((((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1)))" ( (binary_expression "(((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))) &&\n               (bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))" (parenthesized_expression "(((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1)))" ( (binary_expression "((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)) &&\n                (*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))" (parenthesized_expression "((p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0))" ( (binary_expression "(p_Var2 != (_Rb_tree_header *)p_Var10) &&\n                 (pVar14.first == (_Rb_tree_node_base *)0x0)" (parenthesized_expression "(p_Var2 != (_Rb_tree_header *)p_Var10)" ( (binary_expression "p_Var2 != (_Rb_tree_header *)p_Var10" identifier != (cast_expression "(_Rb_tree_header *)p_Var10" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) && (parenthesized_expression "(pVar14.first == (_Rb_tree_node_base *)0x0)" ( (binary_expression "pVar14.first == (_Rb_tree_node_base *)0x0" (field_expression "pVar14.first" identifier . field_identifier) == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1))" ( (binary_expression "*(ulong *)(p_Var10 + 1) <= *(ulong *)(p_Var9 + 1)" (pointer_expression "*(ulong *)(p_Var10 + 1)" * (cast_expression "(ulong *)(p_Var10 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var10 + 1)" ( (binary_expression "p_Var10 + 1" identifier + number_literal) )))) <= (pointer_expression "*(ulong *)(p_Var9 + 1)" * (cast_expression "(ulong *)(p_Var9 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "(bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1))" ( (comma_expression "bVar13 = false, *(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1)" (assignment_expression "bVar13 = false" identifier = false) , (binary_expression "*(ulong *)(p_Var9 + 1) == *(ulong *)(p_Var10 + 1)" (pointer_expression "*(ulong *)(p_Var9 + 1)" * (cast_expression "(ulong *)(p_Var9 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) )))) == (pointer_expression "*(ulong *)(p_Var10 + 1)" * (cast_expression "(ulong *)(p_Var10 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var10 + 1)" ( (binary_expression "p_Var10 + 1" identifier + number_literal) )))))) ))) )) (compound_statement "{\n              bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;\n            }" { (expression_statement "bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent;" (assignment_expression "bVar13 = *(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent" identifier = (binary_expression "*(uint *)&p_Var9[1]._M_parent < *(uint *)&p_Var10[1]._M_parent" (pointer_expression "*(uint *)&p_Var9[1]._M_parent" * (cast_expression "(uint *)&p_Var9[1]._M_parent" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var9[1]._M_parent" & (field_expression "p_Var9[1]._M_parent" (subscript_expression "p_Var9[1]" identifier [ number_literal ]) . field_identifier)))) < (pointer_expression "*(uint *)&p_Var10[1]._M_parent" * (cast_expression "(uint *)&p_Var10[1]._M_parent" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var10[1]._M_parent" & (field_expression "p_Var10[1]._M_parent" (subscript_expression "p_Var10[1]" identifier [ number_literal ]) . field_identifier)))))) ;) })) (labeled_statement "std::_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);" statement_identifier : (ERROR ":" :) (expression_statement "_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header);" (call_expression "_Rb_tree_insert_and_rebalance(bVar13,p_Var9,p_Var10,&p_Var2->_M_header)" identifier (argument_list "(bVar13,p_Var9,p_Var10,&p_Var2->_M_header)" ( identifier , identifier , identifier , (pointer_expression "&p_Var2->_M_header" & (field_expression "p_Var2->_M_header" identifier -> field_identifier)) ))) ;)) (expression_statement "psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;" (assignment_expression "psVar3 = &(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count" identifier = (pointer_expression "&(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count" & (field_expression "(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count" (field_expression "(pLVar5->section_order_map_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(pLVar5->section_order_map_)._M_t._M_impl" (field_expression "(pLVar5->section_order_map_)._M_t" (parenthesized_expression "(pLVar5->section_order_map_)" ( (field_expression "pLVar5->section_order_map_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "*psVar3 = *psVar3 + 1;" (assignment_expression "*psVar3 = *psVar3 + 1" (pointer_expression "*psVar3" * identifier) = (binary_expression "*psVar3 + 1" (pointer_expression "*psVar3" * identifier) + number_literal)) ;) (goto_statement "goto LAB_001f228b;" goto statement_identifier ;) })) (expression_statement "operator_delete(p_Var9);" (call_expression "operator_delete(p_Var9)" identifier (argument_list "(p_Var9)" ( identifier ))) ;) (expression_statement "*(int *)&pVar14.first[1]._M_left = iVar11 + 1;" (assignment_expression "*(int *)&pVar14.first[1]._M_left = iVar11 + 1" (pointer_expression "*(int *)&pVar14.first[1]._M_left" * (cast_expression "(int *)&pVar14.first[1]._M_left" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pVar14.first[1]._M_left" & (field_expression "pVar14.first[1]._M_left" (subscript_expression "pVar14.first[1]" (field_expression "pVar14.first" identifier . field_identifier) [ number_literal ]) . field_identifier)))) = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }" else (compound_statement "{\n          do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);\nLAB_001f2203:\n          __position._M_node = p_Var9;\n          if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;\n        }" { (do_statement "do {\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          } while (p_Var9->_M_left != (_Base_ptr)0x0);" do (compound_statement "{\n            while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }\n            p_Var6 = p_Var9->_M_left;\n            p_Var12 = p_Var9;\n          }" { (while_statement "while ((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )) {\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }" while (parenthesized_expression "((p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   ))" ( (parenthesized_expression "(p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))\n                   )" ( (comma_expression "p_Var9 = p_Var6, *(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))" (assignment_expression "p_Var9 = p_Var6" identifier = identifier) , (binary_expression "*(Object **)(p_Var9 + 1) < pOVar8 ||\n                   ((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))" (binary_expression "*(Object **)(p_Var9 + 1) < pOVar8" (pointer_expression "*(Object **)(p_Var9 + 1)" * (cast_expression "(Object **)(p_Var9 + 1)" ( (type_descriptor "Object **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) )))) < identifier) || (parenthesized_expression "((pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)))" ( (parenthesized_expression "(pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4))" ( (binary_expression "pOVar8 == *(Object **)(p_Var9 + 1) && (*(uint *)&p_Var9[1]._M_parent < uVar4)" (binary_expression "pOVar8 == *(Object **)(p_Var9 + 1)" identifier == (pointer_expression "*(Object **)(p_Var9 + 1)" * (cast_expression "(Object **)(p_Var9 + 1)" ( (type_descriptor "Object **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) ))))) && (parenthesized_expression "(*(uint *)&p_Var9[1]._M_parent < uVar4)" ( (binary_expression "*(uint *)&p_Var9[1]._M_parent < uVar4" (pointer_expression "*(uint *)&p_Var9[1]._M_parent" * (cast_expression "(uint *)&p_Var9[1]._M_parent" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var9[1]._M_parent" & (field_expression "p_Var9[1]._M_parent" (subscript_expression "p_Var9[1]" identifier [ number_literal ]) . field_identifier)))) < identifier) ))) )) )))) )) )) (compound_statement "{\n              pp_Var1 = &p_Var9->_M_right;\n              p_Var6 = *pp_Var1;\n              p_Var9 = p_Var12;\n              if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;\n            }" { (expression_statement "pp_Var1 = &p_Var9->_M_right;" (assignment_expression "pp_Var1 = &p_Var9->_M_right" identifier = (pointer_expression "&p_Var9->_M_right" & (field_expression "p_Var9->_M_right" identifier -> field_identifier))) ;) (expression_statement "p_Var6 = *pp_Var1;" (assignment_expression "p_Var6 = *pp_Var1" identifier = (pointer_expression "*pp_Var1" * identifier)) ;) (expression_statement "p_Var9 = p_Var12;" (assignment_expression "p_Var9 = p_Var12" identifier = identifier) ;) (if_statement "if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001f2203;" if (parenthesized_expression "(*pp_Var1 == (_Base_ptr)0x0)" ( (binary_expression "*pp_Var1 == (_Base_ptr)0x0" (pointer_expression "*pp_Var1" * identifier) == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_001f2203;" goto statement_identifier ;)) })) (expression_statement "p_Var6 = p_Var9->_M_left;" (assignment_expression "p_Var6 = p_Var9->_M_left" identifier = (field_expression "p_Var9->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var12 = p_Var9;" (assignment_expression "p_Var12 = p_Var9" identifier = identifier) ;) }) while (parenthesized_expression "(p_Var9->_M_left != (_Base_ptr)0x0)" ( (binary_expression "p_Var9->_M_left != (_Base_ptr)0x0" (field_expression "p_Var9->_M_left" identifier -> field_identifier) != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (labeled_statement "LAB_001f2203:\n          __position._M_node = p_Var9;" statement_identifier : (expression_statement "__position._M_node = p_Var9;" (assignment_expression "__position._M_node = p_Var9" (field_expression "__position._M_node" identifier . field_identifier) = identifier) ;)) (if_statement "if (((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))\n          goto LAB_001f2220;" if (parenthesized_expression "(((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))))" ( (binary_expression "((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))) ||\n             ((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent)))" (parenthesized_expression "((p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1)))" ( (binary_expression "(p_Var2 == (_Rb_tree_header *)p_Var9) || (pOVar8 < *(Object **)(p_Var9 + 1))" (parenthesized_expression "(p_Var2 == (_Rb_tree_header *)p_Var9)" ( (binary_expression "p_Var2 == (_Rb_tree_header *)p_Var9" identifier == (cast_expression "(_Rb_tree_header *)p_Var9" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) || (parenthesized_expression "(pOVar8 < *(Object **)(p_Var9 + 1))" ( (binary_expression "pOVar8 < *(Object **)(p_Var9 + 1)" identifier < (pointer_expression "*(Object **)(p_Var9 + 1)" * (cast_expression "(Object **)(p_Var9 + 1)" ( (type_descriptor "Object **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) ))))) ))) )) || (parenthesized_expression "((pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent)))" ( (parenthesized_expression "(pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent))" ( (binary_expression "pOVar8 == *(Object **)(p_Var9 + 1) && (uVar4 < *(uint *)&p_Var9[1]._M_parent)" (binary_expression "pOVar8 == *(Object **)(p_Var9 + 1)" identifier == (pointer_expression "*(Object **)(p_Var9 + 1)" * (cast_expression "(Object **)(p_Var9 + 1)" ( (type_descriptor "Object **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) ))))) && (parenthesized_expression "(uVar4 < *(uint *)&p_Var9[1]._M_parent)" ( (binary_expression "uVar4 < *(uint *)&p_Var9[1]._M_parent" identifier < (pointer_expression "*(uint *)&p_Var9[1]._M_parent" * (cast_expression "(uint *)&p_Var9[1]._M_parent" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var9[1]._M_parent" & (field_expression "p_Var9[1]._M_parent" (subscript_expression "p_Var9[1]" identifier [ number_literal ]) . field_identifier))))) ))) )) ))) )) (goto_statement "goto LAB_001f2220;" goto statement_identifier ;)) (labeled_statement "LAB_001f228b:\n          *(int *)&p_Var9[1]._M_left = iVar11 + 1;" statement_identifier : (expression_statement "*(int *)&p_Var9[1]._M_left = iVar11 + 1;" (assignment_expression "*(int *)&p_Var9[1]._M_left = iVar11 + 1" (pointer_expression "*(int *)&p_Var9[1]._M_left" * (cast_expression "(int *)&p_Var9[1]._M_left" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var9[1]._M_left" & (field_expression "p_Var9[1]._M_left" (subscript_expression "p_Var9[1]" identifier [ number_literal ]) . field_identifier)))) = (binary_expression "iVar11 + 1" identifier + number_literal)) ;)) }))) (if_statement "if (iVar11 + 1U == num_sections) goto LAB_001f2308;" if (parenthesized_expression "(iVar11 + 1U == num_sections)" ( (binary_expression "iVar11 + 1U == num_sections" (binary_expression "iVar11 + 1U" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_001f2308;" goto statement_identifier ;)) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "section_list = section_list + 1;" (assignment_expression "section_list = section_list + 1" identifier = (binary_expression "section_list + 1" identifier + number_literal)) ;) (if_statement "if (parameters->options_ == (General_options *)0x0) goto LAB_001f2352;" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001f2352;" goto statement_identifier ;)) (ERROR "pOVar8 = Plugin_manager::" (assignment_expression "pOVar8 = Plugin_manager" identifier = identifier) : :) (expression_statement "get_elf_object(parameters->options_->plugins_,section_list->handle)\n        ;" (call_expression "get_elf_object(parameters->options_->plugins_,section_list->handle)" identifier (argument_list "(parameters->options_->plugins_,section_list->handle)" ( (field_expression "parameters->options_->plugins_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) , (field_expression "section_list->handle" identifier -> field_identifier) ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "lVar7 = LDPS_ERR;" (assignment_expression "lVar7 = LDPS_ERR" identifier = identifier) ;) }))) (return_statement "return lVar7;" return identifier ;) })))
(translation_unit "undefined8 FUN_001f2140(undefined8 *param_1,int param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  uint uVar3;\n  long lVar4;\n  ulong uVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  bool bVar11;\n  undefined1 auVar12 [16];\n  \n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\nLAB_001f2352:\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }\n  lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);\n  if (lVar8 == 0) {\n                    \n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }\n  if (param_2 == 0) {\nLAB_001f2308:\n    uVar7 = 0;\n  }\n  else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }\n  return uVar7;\n}\n\n" (function_definition "undefined8 FUN_001f2140(undefined8 *param_1,int param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  uint uVar3;\n  long lVar4;\n  ulong uVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  bool bVar11;\n  undefined1 auVar12 [16];\n  \n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\nLAB_001f2352:\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }\n  lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);\n  if (lVar8 == 0) {\n                    \n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }\n  if (param_2 == 0) {\nLAB_001f2308:\n    uVar7 = 0;\n  }\n  else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }\n  return uVar7;\n}" type_identifier (function_declarator "FUN_001f2140(undefined8 *param_1,int param_2)" identifier (parameter_list "(undefined8 *param_1,int param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  long *plVar1;\n  long lVar2;\n  uint uVar3;\n  long lVar4;\n  ulong uVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  bool bVar11;\n  undefined1 auVar12 [16];\n  \n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\nLAB_001f2352:\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }\n  lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);\n  if (lVar8 == 0) {\n                    \n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }\n  if (param_2 == 0) {\nLAB_001f2308:\n    uVar7 = 0;\n  }\n  else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }\n  return uVar7;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "undefined1 auVar12 [16];" type_identifier (array_declarator "auVar12 [16]" identifier [ number_literal ]) ;) (if_statement "if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\nLAB_001f2352:\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_001f2352:\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }" { (labeled_statement "LAB_001f2352:\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");" statement_identifier : (expression_statement "FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0016cdf0("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;)) })) (expression_statement "lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);" (assignment_expression "lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" identifier = (pointer_expression "*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" * (cast_expression "(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (lVar8 == 0) {\n                    \n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }" { (expression_statement "FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");" (call_expression "FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order")" identifier (argument_list "("../../gold/plugin.cc",0x858,"update_section_order")" ( (string_literal ""../../gold/plugin.cc"" " string_content ") , number_literal , (string_literal ""update_section_order"" " string_content ") ))) ;) })) (if_statement "if (param_2 == 0) {\nLAB_001f2308:\n    uVar7 = 0;\n  }\n  else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001f2308:\n    uVar7 = 0;\n  }" { (labeled_statement "LAB_001f2308:\n    uVar7 = 0;" statement_identifier : (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }" else (compound_statement "{\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }" { (if_statement "if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }" if (parenthesized_expression "(param_1 != (undefined8 *)0x0)" ( (binary_expression "param_1 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }" { (expression_statement "lVar4 = *(long *)(lVar8 + 0xe0);" (assignment_expression "lVar4 = *(long *)(lVar8 + 0xe0)" identifier = (pointer_expression "*(long *)(lVar8 + 0xe0)" * (cast_expression "(long *)(lVar8 + 0xe0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0xe0)" ( (binary_expression "lVar8 + 0xe0" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }" { (expression_statement "FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");" (call_expression "FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order")" identifier (argument_list "("../../gold/plugin.cc",0x861,"update_section_order")" ( (string_literal ""../../gold/plugin.cc"" " string_content ") , number_literal , (string_literal ""update_section_order"" " string_content ") ))) ;) })) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "lVar2 = lVar4 + 0x3b8;" (assignment_expression "lVar2 = lVar4 + 0x3b8" identifier = (binary_expression "lVar4 + 0x3b8" identifier + number_literal)) ;) (expression_statement "uVar5 = FUN_001efa60(lVar8,*param_1);" (assignment_expression "uVar5 = FUN_001efa60(lVar8,*param_1)" identifier = (call_expression "FUN_001efa60(lVar8,*param_1)" identifier (argument_list "(lVar8,*param_1)" ( identifier , (pointer_expression "*param_1" * identifier) )))) ;) (do_statement "do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );" do (compound_statement "{\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      }" { (if_statement "if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }" if (parenthesized_expression "((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0))" ( (binary_expression "(uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)" (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) || (parenthesized_expression "((*(byte *)(uVar5 + 0x3c) & 1) != 0)" ( (binary_expression "(*(byte *)(uVar5 + 0x3c) & 1) != 0" (parenthesized_expression "(*(byte *)(uVar5 + 0x3c) & 1)" ( (binary_expression "*(byte *)(uVar5 + 0x3c) & 1" (pointer_expression "*(byte *)(uVar5 + 0x3c)" * (cast_expression "(byte *)(uVar5 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x3c)" ( (binary_expression "uVar5 + 0x3c" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          return 2;\n        }" { (return_statement "return 2;" return number_literal ;) })) (expression_statement "uVar3 = *(uint *)(param_1 + 1);" (assignment_expression "uVar3 = *(uint *)(param_1 + 1)" identifier = (pointer_expression "*(uint *)(param_1 + 1)" * (cast_expression "(uint *)(param_1 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = *(long *)(lVar4 + 0x3c0);" (assignment_expression "lVar8 = *(long *)(lVar4 + 0x3c0)" identifier = (pointer_expression "*(long *)(lVar4 + 0x3c0)" * (cast_expression "(long *)(lVar4 + 0x3c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x3c0)" ( (binary_expression "lVar4 + 0x3c0" identifier + number_literal) ))))) ;) (expression_statement "lVar10 = lVar2;" (assignment_expression "lVar10 = lVar2" identifier = identifier) ;) (if_statement "if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }" if (parenthesized_expression "(*(long *)(lVar4 + 0x3c0) == 0)" ( (binary_expression "*(long *)(lVar4 + 0x3c0) == 0" (pointer_expression "*(long *)(lVar4 + 0x3c0)" * (cast_expression "(long *)(lVar4 + 0x3c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x3c0)" ( (binary_expression "lVar4 + 0x3c0" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }" { (labeled_statement "LAB_001f2220:\n          lVar6 = FUN_00275550(0x38);" statement_identifier : (expression_statement "lVar6 = FUN_00275550(0x38);" (assignment_expression "lVar6 = FUN_00275550(0x38)" identifier = (call_expression "FUN_00275550(0x38)" identifier (argument_list "(0x38)" ( number_literal )))) ;)) (expression_statement "*(uint *)(lVar6 + 0x28) = uVar3;" (assignment_expression "*(uint *)(lVar6 + 0x28) = uVar3" (pointer_expression "*(uint *)(lVar6 + 0x28)" * (cast_expression "(uint *)(lVar6 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(ulong *)(lVar6 + 0x20) = uVar5;" (assignment_expression "*(ulong *)(lVar6 + 0x20) = uVar5" (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(lVar6 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(lVar6 + 0x30) = 0" (pointer_expression "*(undefined4 *)(lVar6 + 0x30)" * (cast_expression "(undefined4 *)(lVar6 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x30)" ( (binary_expression "lVar6 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);" (assignment_expression "auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20)" identifier = (call_expression "FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20)" identifier (argument_list "(lVar4 + 0x3b0,lVar10,lVar6 + 0x20)" ( (binary_expression "lVar4 + 0x3b0" identifier + number_literal) , identifier , (binary_expression "lVar6 + 0x20" identifier + number_literal) )))) ;) (expression_statement "lVar8 = auVar12._8_8_;" (assignment_expression "lVar8 = auVar12._8_8_" identifier = (field_expression "auVar12._8_8_" identifier . field_identifier)) ;) (if_statement "if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }" { (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (if_statement "if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }" if (parenthesized_expression "((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20)))" ( (binary_expression "(((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))" (parenthesized_expression "(((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20)))" ( (binary_expression "((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))" (parenthesized_expression "((lVar2 != lVar8) && (auVar12._0_8_ == 0))" ( (binary_expression "(lVar2 != lVar8) && (auVar12._0_8_ == 0)" (parenthesized_expression "(lVar2 != lVar8)" ( (binary_expression "lVar2 != lVar8" identifier != identifier) )) && (parenthesized_expression "(auVar12._0_8_ == 0)" ( (binary_expression "auVar12._0_8_ == 0" (field_expression "auVar12._0_8_" identifier . field_identifier) == number_literal) ))) )) && (parenthesized_expression "(*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))" ( (binary_expression "*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20)" (pointer_expression "*(ulong *)(lVar8 + 0x20)" * (cast_expression "(ulong *)(lVar8 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) )))) <= (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "(bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))" ( (comma_expression "bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20)" (assignment_expression "bVar11 = false" identifier = false) , (binary_expression "*(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20)" (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) )))) == (pointer_expression "*(ulong *)(lVar8 + 0x20)" * (cast_expression "(ulong *)(lVar8 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) )))))) ))) )) (compound_statement "{\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }" { (expression_statement "bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);" (assignment_expression "bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28)" identifier = (binary_expression "*(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28)" (pointer_expression "*(uint *)(lVar6 + 0x28)" * (cast_expression "(uint *)(lVar6 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) )))) < (pointer_expression "*(uint *)(lVar8 + 0x28)" * (cast_expression "(uint *)(lVar8 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x28)" ( (binary_expression "lVar8 + 0x28" identifier + number_literal) )))))) ;) })) (expression_statement "FUN_00278220(bVar11,lVar6,lVar8,lVar2);" (call_expression "FUN_00278220(bVar11,lVar6,lVar8,lVar2)" identifier (argument_list "(bVar11,lVar6,lVar8,lVar2)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;" (assignment_expression "*(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1" (pointer_expression "*(long *)(lVar4 + 0x3d8)" * (cast_expression "(long *)(lVar4 + 0x3d8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x3d8)" ( (binary_expression "lVar4 + 0x3d8" identifier + number_literal) )))) = (binary_expression "*(long *)(lVar4 + 0x3d8) + 1" (pointer_expression "*(long *)(lVar4 + 0x3d8)" * (cast_expression "(long *)(lVar4 + 0x3d8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x3d8)" ( (binary_expression "lVar4 + 0x3d8" identifier + number_literal) )))) + number_literal)) ;) (goto_statement "goto LAB_001f228b;" goto statement_identifier ;) })) (expression_statement "FUN_00276d20(lVar6);" (call_expression "FUN_00276d20(lVar6)" identifier (argument_list "(lVar6)" ( identifier ))) ;) (expression_statement "*(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;" (assignment_expression "*(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1" (pointer_expression "*(int *)(auVar12._0_8_ + 0x30)" * (cast_expression "(int *)(auVar12._0_8_ + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar12._0_8_ + 0x30)" ( (binary_expression "auVar12._0_8_ + 0x30" (field_expression "auVar12._0_8_" identifier . field_identifier) + number_literal) )))) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }" else (compound_statement "{\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }" { (do_statement "do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);" do (compound_statement "{\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          }" { (while_statement "while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }" while (parenthesized_expression "((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)))))" ( (parenthesized_expression "(lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))" ( (comma_expression "lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)))" (assignment_expression "lVar6 = lVar8" identifier = identifier) , (binary_expression "*(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)))" (binary_expression "*(ulong *)(lVar6 + 0x20) < uVar5" (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) )))) < identifier) || (parenthesized_expression "((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)))" ( (parenthesized_expression "(uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))" ( (binary_expression "uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)" (binary_expression "uVar5 == *(ulong *)(lVar6 + 0x20)" identifier == (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) && (parenthesized_expression "(*(uint *)(lVar6 + 0x28) < uVar3)" ( (binary_expression "*(uint *)(lVar6 + 0x28) < uVar3" (pointer_expression "*(uint *)(lVar6 + 0x28)" * (cast_expression "(uint *)(lVar6 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) )))) < identifier) ))) )) )))) )) )) (compound_statement "{\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }" { (expression_statement "plVar1 = (long *)(lVar6 + 0x18);" (assignment_expression "plVar1 = (long *)(lVar6 + 0x18)" identifier = (cast_expression "(long *)(lVar6 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x18)" ( (binary_expression "lVar6 + 0x18" identifier + number_literal) )))) ;) (expression_statement "lVar8 = *plVar1;" (assignment_expression "lVar8 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (expression_statement "lVar6 = lVar10;" (assignment_expression "lVar6 = lVar10" identifier = identifier) ;) (if_statement "if (*plVar1 == 0) goto LAB_001f2203;" if (parenthesized_expression "(*plVar1 == 0)" ( (binary_expression "*plVar1 == 0" (pointer_expression "*plVar1" * identifier) == number_literal) )) (goto_statement "goto LAB_001f2203;" goto statement_identifier ;)) })) (expression_statement "lVar8 = *(long *)(lVar6 + 0x10);" (assignment_expression "lVar8 = *(long *)(lVar6 + 0x10)" identifier = (pointer_expression "*(long *)(lVar6 + 0x10)" * (cast_expression "(long *)(lVar6 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "lVar10 = lVar6;" (assignment_expression "lVar10 = lVar6" identifier = identifier) ;) }) while (parenthesized_expression "(*(long *)(lVar6 + 0x10) != 0)" ( (binary_expression "*(long *)(lVar6 + 0x10) != 0" (pointer_expression "*(long *)(lVar6 + 0x10)" * (cast_expression "(long *)(lVar6 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) )))) != number_literal) )) ;) (labeled_statement "LAB_001f2203:\n          lVar10 = lVar6;" statement_identifier : (expression_statement "lVar10 = lVar6;" (assignment_expression "lVar10 = lVar6" identifier = identifier) ;)) (if_statement "if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;" if (parenthesized_expression "(((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))" ( (binary_expression "((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28))))" (parenthesized_expression "((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20)))" ( (binary_expression "(lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))" (parenthesized_expression "(lVar2 == lVar6)" ( (binary_expression "lVar2 == lVar6" identifier == identifier) )) || (parenthesized_expression "(uVar5 < *(ulong *)(lVar6 + 0x20))" ( (binary_expression "uVar5 < *(ulong *)(lVar6 + 0x20)" identifier < (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ))) )) || (parenthesized_expression "((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28))))" ( (parenthesized_expression "(uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))" ( (binary_expression "uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28))" (binary_expression "uVar5 == *(ulong *)(lVar6 + 0x20)" identifier == (pointer_expression "*(ulong *)(lVar6 + 0x20)" * (cast_expression "(ulong *)(lVar6 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) && (parenthesized_expression "(uVar3 < *(uint *)(lVar6 + 0x28))" ( (binary_expression "uVar3 < *(uint *)(lVar6 + 0x28)" identifier < (pointer_expression "*(uint *)(lVar6 + 0x28)" * (cast_expression "(uint *)(lVar6 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x28)" ( (binary_expression "lVar6 + 0x28" identifier + number_literal) ))))) ))) )) ))) )) (goto_statement "goto LAB_001f2220;" goto statement_identifier ;)) (labeled_statement "LAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;" statement_identifier : (expression_statement "*(int *)(lVar6 + 0x30) = iVar9 + 1;" (assignment_expression "*(int *)(lVar6 + 0x30) = iVar9 + 1" (pointer_expression "*(int *)(lVar6 + 0x30)" * (cast_expression "(int *)(lVar6 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x30)" ( (binary_expression "lVar6 + 0x30" identifier + number_literal) )))) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;)) }))) (if_statement "if (iVar9 + 1 == param_2) goto LAB_001f2308;" if (parenthesized_expression "(iVar9 + 1 == param_2)" ( (binary_expression "iVar9 + 1 == param_2" (binary_expression "iVar9 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_001f2308;" goto statement_identifier ;)) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 2;" (assignment_expression "param_1 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (if_statement "if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;" if (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_001f2352;" goto statement_identifier ;)) (expression_statement "uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);" (assignment_expression "uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1)" identifier = (call_expression "FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1)" identifier (argument_list "(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1)" ( (pointer_expression "*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" * (cast_expression "(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) , (pointer_expression "*param_1" * identifier) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "uVar7 = 3;" (assignment_expression "uVar7 = 3" identifier = number_literal) ;) }))) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) )))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = BOOL) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) ))) )) )))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression 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) ))))) ))) )) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) , (pointer_expression * IDENT) )))) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined8 FUN_001f2140(undefined8 *param_1,int param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  uint uVar3;\n  long lVar4;\n  ulong uVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  bool bVar11;\n  undefined1 auVar12 [16];\n  \n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\nLAB_001f2352:\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }\n  lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);\n  if (lVar8 == 0) {\n                    \n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }\n  if (param_2 == 0) {\nLAB_001f2308:\n    uVar7 = 0;\n  }\n  else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }\n  return uVar7;\n}" (type_identifier "undefined8") (function_declarator "FUN_001f2140(undefined8 *param_1,int param_2)" (identifier "FUN_001f2140") (parameter_list "(undefined8 *param_1,int param_2)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  long *plVar1;\n  long lVar2;\n  uint uVar3;\n  long lVar4;\n  ulong uVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long lVar8;\n  int iVar9;\n  long lVar10;\n  bool bVar11;\n  undefined1 auVar12 [16];\n  \n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\nLAB_001f2352:\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }\n  lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);\n  if (lVar8 == 0) {\n                    \n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }\n  if (param_2 == 0) {\nLAB_001f2308:\n    uVar7 = 0;\n  }\n  else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }\n  return uVar7;\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "undefined1 auVar12 [16];" (type_identifier "undefined1") (array_declarator "auVar12 [16]" (identifier "auVar12") ([ "[") (number_literal "16") (] "]")) (; ";")) (if_statement "if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\nLAB_001f2352:\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_003be6b0 + 0x10" (identifier "PTR_DAT_003be6b0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001f2352:\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n  }" ({ "{") (labeled_statement "LAB_001f2352:\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");" (statement_identifier "LAB_001f2352") (: ":") (expression_statement "FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0016cdf0("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";"))) (} "}"))) (expression_statement "lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);" (assignment_expression "lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" (* "*") (cast_expression "(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" (( "(") (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_003be6b0 + 0x10" (identifier "PTR_DAT_003be6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x9058")) () ")"))))) (; ";")) (if_statement "if (lVar8 == 0) {\n                    \n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }" (if "if") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");\n  }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");" (call_expression "FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/plugin.cc",0x858,"update_section_order")" (( "(") (string_literal ""../../gold/plugin.cc"" (" """) (string_content "../../gold/plugin.cc") (" """)) (, ",") (number_literal "0x858") (, ",") (string_literal ""update_section_order"" (" """) (string_content "update_section_order") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 == 0) {\nLAB_001f2308:\n    uVar7 = 0;\n  }\n  else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001f2308:\n    uVar7 = 0;\n  }" ({ "{") (labeled_statement "LAB_001f2308:\n    uVar7 = 0;" (statement_identifier "LAB_001f2308") (: ":") (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }" (else "else") (compound_statement "{\n    if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }\n    uVar7 = 3;\n  }" ({ "{") (if_statement "if (param_1 != (undefined8 *)0x0) {\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }" (if "if") (parenthesized_expression "(param_1 != (undefined8 *)0x0)" (( "(") (binary_expression "param_1 != (undefined8 *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      lVar4 = *(long *)(lVar8 + 0xe0);\n      if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }\n      iVar9 = 0;\n      lVar2 = lVar4 + 0x3b8;\n      uVar5 = FUN_001efa60(lVar8,*param_1);\n      do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );\n    }" ({ "{") (expression_statement "lVar4 = *(long *)(lVar8 + 0xe0);" (assignment_expression "lVar4 = *(long *)(lVar8 + 0xe0)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar8 + 0xe0)" (* "*") (cast_expression "(long *)(lVar8 + 0xe0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0xe0)" (( "(") (binary_expression "lVar8 + 0xe0" (identifier "lVar8") (+ "+") (number_literal "0xe0")) () ")"))))) (; ";")) (if_statement "if (lVar4 == 0) {\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");\n      }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");" (call_expression "FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/plugin.cc",0x861,"update_section_order")" (( "(") (string_literal ""../../gold/plugin.cc"" (" """) (string_content "../../gold/plugin.cc") (" """)) (, ",") (number_literal "0x861") (, ",") (string_literal ""update_section_order"" (" """) (string_content "update_section_order") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar2 = lVar4 + 0x3b8;" (assignment_expression "lVar2 = lVar4 + 0x3b8" (identifier "lVar2") (= "=") (binary_expression "lVar4 + 0x3b8" (identifier "lVar4") (+ "+") (number_literal "0x3b8"))) (; ";")) (expression_statement "uVar5 = FUN_001efa60(lVar8,*param_1);" (assignment_expression "uVar5 = FUN_001efa60(lVar8,*param_1)" (identifier "uVar5") (= "=") (call_expression "FUN_001efa60(lVar8,*param_1)" (identifier "FUN_001efa60") (argument_list "(lVar8,*param_1)" (( "(") (identifier "lVar8") (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")))) (; ";")) (do_statement "do {\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      } while( true );" (do "do") (compound_statement "{\n        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }\n        uVar3 = *(uint *)(param_1 + 1);\n        lVar8 = *(long *)(lVar4 + 0x3c0);\n        lVar10 = lVar2;\n        if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }\n        if (iVar9 + 1 == param_2) goto LAB_001f2308;\n        iVar9 = iVar9 + 1;\n        param_1 = param_1 + 2;\n        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;\n        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);\n      }" ({ "{") (if_statement "if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {\n          return 2;\n        }" (if "if") (parenthesized_expression "((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0))" (( "(") (binary_expression "(uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)" (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(uVar5 + 0x3c) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(uVar5 + 0x3c) & 1) != 0" (parenthesized_expression "(*(byte *)(uVar5 + 0x3c) & 1)" (( "(") (binary_expression "*(byte *)(uVar5 + 0x3c) & 1" (pointer_expression "*(byte *)(uVar5 + 0x3c)" (* "*") (cast_expression "(byte *)(uVar5 + 0x3c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x3c)" (( "(") (binary_expression "uVar5 + 0x3c" (identifier "uVar5") (+ "+") (number_literal "0x3c")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          return 2;\n        }" ({ "{") (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(param_1 + 1);" (assignment_expression "uVar3 = *(uint *)(param_1 + 1)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 1)" (* "*") (cast_expression "(uint *)(param_1 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "lVar8 = *(long *)(lVar4 + 0x3c0);" (assignment_expression "lVar8 = *(long *)(lVar4 + 0x3c0)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(lVar4 + 0x3c0)" (* "*") (cast_expression "(long *)(lVar4 + 0x3c0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x3c0)" (( "(") (binary_expression "lVar4 + 0x3c0" (identifier "lVar4") (+ "+") (number_literal "0x3c0")) () ")"))))) (; ";")) (expression_statement "lVar10 = lVar2;" (assignment_expression "lVar10 = lVar2" (identifier "lVar10") (= "=") (identifier "lVar2")) (; ";")) (if_statement "if (*(long *)(lVar4 + 0x3c0) == 0) {\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }\n        else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }" (if "if") (parenthesized_expression "(*(long *)(lVar4 + 0x3c0) == 0)" (( "(") (binary_expression "*(long *)(lVar4 + 0x3c0) == 0" (pointer_expression "*(long *)(lVar4 + 0x3c0)" (* "*") (cast_expression "(long *)(lVar4 + 0x3c0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x3c0)" (( "(") (binary_expression "lVar4 + 0x3c0" (identifier "lVar4") (+ "+") (number_literal "0x3c0")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001f2220:\n          lVar6 = FUN_00275550(0x38);\n          *(uint *)(lVar6 + 0x28) = uVar3;\n          *(ulong *)(lVar6 + 0x20) = uVar5;\n          *(undefined4 *)(lVar6 + 0x30) = 0;\n          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);\n          lVar8 = auVar12._8_8_;\n          if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }\n          FUN_00276d20(lVar6);\n          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;\n        }" ({ "{") (labeled_statement "LAB_001f2220:\n          lVar6 = FUN_00275550(0x38);" (statement_identifier "LAB_001f2220") (: ":") (expression_statement "lVar6 = FUN_00275550(0x38);" (assignment_expression "lVar6 = FUN_00275550(0x38)" (identifier "lVar6") (= "=") (call_expression "FUN_00275550(0x38)" (identifier "FUN_00275550") (argument_list "(0x38)" (( "(") (number_literal "0x38") () ")")))) (; ";"))) (expression_statement "*(uint *)(lVar6 + 0x28) = uVar3;" (assignment_expression "*(uint *)(lVar6 + 0x28) = uVar3" (pointer_expression "*(uint *)(lVar6 + 0x28)" (* "*") (cast_expression "(uint *)(lVar6 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x28)" (( "(") (binary_expression "lVar6 + 0x28" (identifier "lVar6") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(ulong *)(lVar6 + 0x20) = uVar5;" (assignment_expression "*(ulong *)(lVar6 + 0x20) = uVar5" (pointer_expression "*(ulong *)(lVar6 + 0x20)" (* "*") (cast_expression "(ulong *)(lVar6 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(undefined4 *)(lVar6 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(lVar6 + 0x30) = 0" (pointer_expression "*(undefined4 *)(lVar6 + 0x30)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x30)" (( "(") (binary_expression "lVar6 + 0x30" (identifier "lVar6") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);" (assignment_expression "auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20)" (identifier "auVar12") (= "=") (call_expression "FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20)" (identifier "FUN_001f3af0") (argument_list "(lVar4 + 0x3b0,lVar10,lVar6 + 0x20)" (( "(") (binary_expression "lVar4 + 0x3b0" (identifier "lVar4") (+ "+") (number_literal "0x3b0")) (, ",") (identifier "lVar10") (, ",") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "lVar8 = auVar12._8_8_;" (assignment_expression "lVar8 = auVar12._8_8_" (identifier "lVar8") (= "=") (field_expression "auVar12._8_8_" (identifier "auVar12") (. ".") (field_identifier "_8_8_"))) (; ";")) (if_statement "if (lVar8 != 0) {\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }" (if "if") (parenthesized_expression "(lVar8 != 0)" (( "(") (binary_expression "lVar8 != 0" (identifier "lVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            bVar11 = true;\n            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }\n            FUN_00278220(bVar11,lVar6,lVar8,lVar2);\n            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;\n            goto LAB_001f228b;\n          }" ({ "{") (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" (identifier "bVar11") (= "=") (true "true")) (; ";")) (if_statement "if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }" (if "if") (parenthesized_expression "((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20)))" (( "(") (binary_expression "(((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&\n               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))" (parenthesized_expression "(((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20)))" (( "(") (binary_expression "((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&\n                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))" (parenthesized_expression "((lVar2 != lVar8) && (auVar12._0_8_ == 0))" (( "(") (binary_expression "(lVar2 != lVar8) && (auVar12._0_8_ == 0)" (parenthesized_expression "(lVar2 != lVar8)" (( "(") (binary_expression "lVar2 != lVar8" (identifier "lVar2") (!= "!=") (identifier "lVar8")) () ")")) (&& "&&") (parenthesized_expression "(auVar12._0_8_ == 0)" (( "(") (binary_expression "auVar12._0_8_ == 0" (field_expression "auVar12._0_8_" (identifier "auVar12") (. ".") (field_identifier "_0_8_")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))" (( "(") (binary_expression "*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20)" (pointer_expression "*(ulong *)(lVar8 + 0x20)" (* "*") (cast_expression "(ulong *)(lVar8 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x20)" (( "(") (binary_expression "lVar8 + 0x20" (identifier "lVar8") (+ "+") (number_literal "0x20")) () ")")))) (<= "<=") (pointer_expression "*(ulong *)(lVar6 + 0x20)" (* "*") (cast_expression "(ulong *)(lVar6 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")"))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))" (( "(") (comma_expression "bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20)" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (, ",") (binary_expression "*(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20)" (pointer_expression "*(ulong *)(lVar6 + 0x20)" (* "*") (cast_expression "(ulong *)(lVar6 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")")))) (== "==") (pointer_expression "*(ulong *)(lVar8 + 0x20)" (* "*") (cast_expression "(ulong *)(lVar8 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x20)" (( "(") (binary_expression "lVar8 + 0x20" (identifier "lVar8") (+ "+") (number_literal "0x20")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);\n            }" ({ "{") (expression_statement "bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);" (assignment_expression "bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28)" (identifier "bVar11") (= "=") (binary_expression "*(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28)" (pointer_expression "*(uint *)(lVar6 + 0x28)" (* "*") (cast_expression "(uint *)(lVar6 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x28)" (( "(") (binary_expression "lVar6 + 0x28" (identifier "lVar6") (+ "+") (number_literal "0x28")) () ")")))) (< "<") (pointer_expression "*(uint *)(lVar8 + 0x28)" (* "*") (cast_expression "(uint *)(lVar8 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x28)" (( "(") (binary_expression "lVar8 + 0x28" (identifier "lVar8") (+ "+") (number_literal "0x28")) () ")")))))) (; ";")) (} "}"))) (expression_statement "FUN_00278220(bVar11,lVar6,lVar8,lVar2);" (call_expression "FUN_00278220(bVar11,lVar6,lVar8,lVar2)" (identifier "FUN_00278220") (argument_list "(bVar11,lVar6,lVar8,lVar2)" (( "(") (identifier "bVar11") (, ",") (identifier "lVar6") (, ",") (identifier "lVar8") (, ",") (identifier "lVar2") () ")"))) (; ";")) (expression_statement "*(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;" (assignment_expression "*(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1" (pointer_expression "*(long *)(lVar4 + 0x3d8)" (* "*") (cast_expression "(long *)(lVar4 + 0x3d8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x3d8)" (( "(") (binary_expression "lVar4 + 0x3d8" (identifier "lVar4") (+ "+") (number_literal "0x3d8")) () ")")))) (= "=") (binary_expression "*(long *)(lVar4 + 0x3d8) + 1" (pointer_expression "*(long *)(lVar4 + 0x3d8)" (* "*") (cast_expression "(long *)(lVar4 + 0x3d8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x3d8)" (( "(") (binary_expression "lVar4 + 0x3d8" (identifier "lVar4") (+ "+") (number_literal "0x3d8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_001f228b;" (goto "goto") (statement_identifier "LAB_001f228b") (; ";")) (} "}"))) (expression_statement "FUN_00276d20(lVar6);" (call_expression "FUN_00276d20(lVar6)" (identifier "FUN_00276d20") (argument_list "(lVar6)" (( "(") (identifier "lVar6") () ")"))) (; ";")) (expression_statement "*(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;" (assignment_expression "*(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1" (pointer_expression "*(int *)(auVar12._0_8_ + 0x30)" (* "*") (cast_expression "(int *)(auVar12._0_8_ + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar12._0_8_ + 0x30)" (( "(") (binary_expression "auVar12._0_8_ + 0x30" (field_expression "auVar12._0_8_" (identifier "auVar12") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x30")) () ")")))) (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }" (else "else") (compound_statement "{\n          do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);\nLAB_001f2203:\n          lVar10 = lVar6;\n          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;\nLAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;\n        }" ({ "{") (do_statement "do {\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          } while (*(long *)(lVar6 + 0x10) != 0);" (do "do") (compound_statement "{\n            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }\n            lVar8 = *(long *)(lVar6 + 0x10);\n            lVar10 = lVar6;\n          }" ({ "{") (while_statement "while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }" (while "while") (parenthesized_expression "((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)))))" (( "(") (parenthesized_expression "(lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))" (( "(") (comma_expression "lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)))" (assignment_expression "lVar6 = lVar8" (identifier "lVar6") (= "=") (identifier "lVar8")) (, ",") (binary_expression "*(ulong *)(lVar6 + 0x20) < uVar5 ||\n                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)))" (binary_expression "*(ulong *)(lVar6 + 0x20) < uVar5" (pointer_expression "*(ulong *)(lVar6 + 0x20)" (* "*") (cast_expression "(ulong *)(lVar6 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")")))) (< "<") (identifier "uVar5")) (|| "||") (parenthesized_expression "((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)))" (( "(") (parenthesized_expression "(uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))" (( "(") (binary_expression "uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3)" (binary_expression "uVar5 == *(ulong *)(lVar6 + 0x20)" (identifier "uVar5") (== "==") (pointer_expression "*(ulong *)(lVar6 + 0x20)" (* "*") (cast_expression "(ulong *)(lVar6 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")"))))) (&& "&&") (parenthesized_expression "(*(uint *)(lVar6 + 0x28) < uVar3)" (( "(") (binary_expression "*(uint *)(lVar6 + 0x28) < uVar3" (pointer_expression "*(uint *)(lVar6 + 0x28)" (* "*") (cast_expression "(uint *)(lVar6 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x28)" (( "(") (binary_expression "lVar6 + 0x28" (identifier "lVar6") (+ "+") (number_literal "0x28")) () ")")))) (< "<") (identifier "uVar3")) () ")"))) () ")")) () ")")))) () ")")) () ")")) (compound_statement "{\n              plVar1 = (long *)(lVar6 + 0x18);\n              lVar8 = *plVar1;\n              lVar6 = lVar10;\n              if (*plVar1 == 0) goto LAB_001f2203;\n            }" ({ "{") (expression_statement "plVar1 = (long *)(lVar6 + 0x18);" (assignment_expression "plVar1 = (long *)(lVar6 + 0x18)" (identifier "plVar1") (= "=") (cast_expression "(long *)(lVar6 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x18)" (( "(") (binary_expression "lVar6 + 0x18" (identifier "lVar6") (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "lVar8 = *plVar1;" (assignment_expression "lVar8 = *plVar1" (identifier "lVar8") (= "=") (pointer_expression "*plVar1" (* "*") (identifier "plVar1"))) (; ";")) (expression_statement "lVar6 = lVar10;" (assignment_expression "lVar6 = lVar10" (identifier "lVar6") (= "=") (identifier "lVar10")) (; ";")) (if_statement "if (*plVar1 == 0) goto LAB_001f2203;" (if "if") (parenthesized_expression "(*plVar1 == 0)" (( "(") (binary_expression "*plVar1 == 0" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001f2203;" (goto "goto") (statement_identifier "LAB_001f2203") (; ";"))) (} "}"))) (expression_statement "lVar8 = *(long *)(lVar6 + 0x10);" (assignment_expression "lVar8 = *(long *)(lVar6 + 0x10)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(lVar6 + 0x10)" (* "*") (cast_expression "(long *)(lVar6 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x10)" (( "(") (binary_expression "lVar6 + 0x10" (identifier "lVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "lVar10 = lVar6;" (assignment_expression "lVar10 = lVar6" (identifier "lVar10") (= "=") (identifier "lVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(long *)(lVar6 + 0x10) != 0)" (( "(") (binary_expression "*(long *)(lVar6 + 0x10) != 0" (pointer_expression "*(long *)(lVar6 + 0x10)" (* "*") (cast_expression "(long *)(lVar6 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x10)" (( "(") (binary_expression "lVar6 + 0x10" (identifier "lVar6") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_001f2203:\n          lVar10 = lVar6;" (statement_identifier "LAB_001f2203") (: ":") (expression_statement "lVar10 = lVar6;" (assignment_expression "lVar10 = lVar6" (identifier "lVar10") (= "=") (identifier "lVar6")) (; ";"))) (if_statement "if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))\n          goto LAB_001f2220;" (if "if") (parenthesized_expression "(((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))" (( "(") (binary_expression "((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||\n             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28))))" (parenthesized_expression "((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20)))" (( "(") (binary_expression "(lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))" (parenthesized_expression "(lVar2 == lVar6)" (( "(") (binary_expression "lVar2 == lVar6" (identifier "lVar2") (== "==") (identifier "lVar6")) () ")")) (|| "||") (parenthesized_expression "(uVar5 < *(ulong *)(lVar6 + 0x20))" (( "(") (binary_expression "uVar5 < *(ulong *)(lVar6 + 0x20)" (identifier "uVar5") (< "<") (pointer_expression "*(ulong *)(lVar6 + 0x20)" (* "*") (cast_expression "(ulong *)(lVar6 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")"))))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28))))" (( "(") (parenthesized_expression "(uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))" (( "(") (binary_expression "uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28))" (binary_expression "uVar5 == *(ulong *)(lVar6 + 0x20)" (identifier "uVar5") (== "==") (pointer_expression "*(ulong *)(lVar6 + 0x20)" (* "*") (cast_expression "(ulong *)(lVar6 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")"))))) (&& "&&") (parenthesized_expression "(uVar3 < *(uint *)(lVar6 + 0x28))" (( "(") (binary_expression "uVar3 < *(uint *)(lVar6 + 0x28)" (identifier "uVar3") (< "<") (pointer_expression "*(uint *)(lVar6 + 0x28)" (* "*") (cast_expression "(uint *)(lVar6 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x28)" (( "(") (binary_expression "lVar6 + 0x28" (identifier "lVar6") (+ "+") (number_literal "0x28")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_001f2220;" (goto "goto") (statement_identifier "LAB_001f2220") (; ";"))) (labeled_statement "LAB_001f228b:\n          *(int *)(lVar6 + 0x30) = iVar9 + 1;" (statement_identifier "LAB_001f228b") (: ":") (expression_statement "*(int *)(lVar6 + 0x30) = iVar9 + 1;" (assignment_expression "*(int *)(lVar6 + 0x30) = iVar9 + 1" (pointer_expression "*(int *)(lVar6 + 0x30)" (* "*") (cast_expression "(int *)(lVar6 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x30)" (( "(") (binary_expression "lVar6 + 0x30" (identifier "lVar6") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";"))) (} "}")))) (if_statement "if (iVar9 + 1 == param_2) goto LAB_001f2308;" (if "if") (parenthesized_expression "(iVar9 + 1 == param_2)" (( "(") (binary_expression "iVar9 + 1 == param_2" (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1")) (== "==") (identifier "param_2")) () ")")) (goto_statement "goto LAB_001f2308;" (goto "goto") (statement_identifier "LAB_001f2308") (; ";"))) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1 = param_1 + 2;" (assignment_expression "param_1 = param_1 + 2" (identifier "param_1") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_003be6b0 + 0x10" (identifier "PTR_DAT_003be6b0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001f2352;" (goto "goto") (statement_identifier "LAB_001f2352") (; ";"))) (expression_statement "uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);" (assignment_expression "uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1)" (identifier "uVar5") (= "=") (call_expression "FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1)" (identifier "FUN_001efa60") (argument_list "(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1)" (( "(") (pointer_expression "*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" (* "*") (cast_expression "(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058)" (( "(") (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_003be6b0 + 0x10" (identifier "PTR_DAT_003be6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x9058")) () ")")))) (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "uVar7 = 3;" (assignment_expression "uVar7 = 3" (identifier "uVar7") (= "=") (number_literal "3")) (; ";")) (} "}")))) (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */

type_1 gold::function_1(type_2 *var_5,type_3 var_4)

{
  type_4 *pp_Var1;
  type_5 *var_17;
  size_t *psVar3;
  type_3 var_21;
  type_6 *var_3;
  type_7 *var_6;
  type_4 var_9;
  type_1 lVar7;
  type_8 *var_8;
  type_4 var_11;
  type_9 *var_16;
  int var_20;
  type_4 p_Var12;
  type_10 __position;
  bool bVar13;
  pair<std::type_9*,_std::type_9*> var_1;
  
  if (parameters->options_ == (type_11 *)0x0) {
LAB_001f2352:
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/parameters.h",0x5c,"options");
  }
  var_3 = parameters->options_->plugins_;
  if (var_3 == (type_6 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/plugin.cc",0x858,"update_section_order");
  }
  if (var_4 == 0) {
LAB_001f2308:
    lVar7 = LDPS_OK;
  }
  else {
    if (var_5 != (type_2 *)0x0) {
      var_6 = var_3->layout_;
      if (var_6 == (type_7 *)0x0) {
                    /* WARNING: Subroutine does not return */
        var_2("../../gold/plugin.cc",0x861,"update_section_order");
      }
      var_20 = 0;
      var_17 = &(var_6->section_order_map_)._M_t._M_impl.super__Rb_tree_header;
      var_8 = type_6::var_7(var_3,var_5->handle);
      do {
        if ((var_8 == (type_8 *)0x0) || ((var_8->field_0x3c & 1) != 0)) {
          return LDPS_BAD_HANDLE;
        }
        var_9 = (var_6->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent
        ;
        var_21 = var_5->shndx;
        p_Var12 = &var_17->_M_header;
        __position._M_node = &var_17->_M_header;
        if (var_9 == (type_4)0x0) {
LAB_001f2220:
          var_11 = (type_4)var_10(0x38);
          *(type_3 *)&var_11[1]._M_parent = var_21;
          *(type_8 **)(var_11 + 1) = var_8;
          *(type_12 *)&var_11[1]._M_left = 0;
          var_1 = std::
                   _Rb_tree<std::pair<gold::var_12*,var_13>,_std::pair<const_std::pair<gold::var_12*,var_13>,var_13>,_std::_Select1st<std::pair<const_std::pair<gold::var_12*,var_13>,var_13>var_14>,_std::less<std::pair<gold::var_12*,var_13>var_14>,_std::allocator<std::pair<const_std::pair<gold::var_12*,var_13>,var_13>var_14>var_14>
                   ::var_15
                             (&(var_6->section_order_map_)._M_t,__position,(type_13 *)(var_11 + 1)
                             );
          var_16 = var_1.second;
          if (var_16 != (type_9 *)0x0) {
            bVar13 = true;
            if ((((var_17 != (type_5 *)var_16) &&
                 (var_1.first == (type_9 *)0x0)) &&
                (*(type_14 *)(var_16 + 1) <= *(type_14 *)(var_11 + 1))) &&
               (bVar13 = false, *(type_14 *)(var_11 + 1) == *(type_14 *)(var_16 + 1))) {
              bVar13 = *(type_3 *)&var_11[1]._M_parent < *(type_3 *)&var_16[1]._M_parent;
            }
            std::var_18(bVar13,var_11,var_16,&var_17->_M_header);
            psVar3 = &(var_6->section_order_map_)._M_t._M_impl.super__Rb_tree_header._M_node_count;
            *psVar3 = *psVar3 + 1;
            goto LAB_001f228b;
          }
          var_19(var_11);
          *(int *)&var_1.first[1]._M_left = var_20 + 1;
        }
        else {
          do {
            while ((var_11 = var_9, *(type_8 **)(var_11 + 1) < var_8 ||
                   ((var_8 == *(type_8 **)(var_11 + 1) && (*(type_3 *)&var_11[1]._M_parent < var_21)))
                   )) {
              pp_Var1 = &var_11->_M_right;
              var_9 = *pp_Var1;
              var_11 = p_Var12;
              if (*pp_Var1 == (type_4)0x0) goto LAB_001f2203;
            }
            var_9 = var_11->_M_left;
            p_Var12 = var_11;
          } while (var_11->_M_left != (type_4)0x0);
LAB_001f2203:
          __position._M_node = var_11;
          if (((var_17 == (type_5 *)var_11) || (var_8 < *(type_8 **)(var_11 + 1))) ||
             ((var_8 == *(type_8 **)(var_11 + 1) && (var_21 < *(type_3 *)&var_11[1]._M_parent))))
          goto LAB_001f2220;
LAB_001f228b:
          *(int *)&var_11[1]._M_left = var_20 + 1;
        }
        if (var_20 + 1U == var_4) goto LAB_001f2308;
        var_20 = var_20 + 1;
        var_5 = var_5 + 1;
        if (parameters->options_ == (type_11 *)0x0) goto LAB_001f2352;
        var_8 = type_6::var_7(parameters->options_->plugins_,var_5->handle)
        ;
      } while( true );
    }
    lVar7 = LDPS_ERR;
  }
  return lVar7;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (true))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_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: (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 (comma_expression left: (assignment_expression left: (identifier) right: (false)) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (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: (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)))))))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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))))))))) 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)))))))))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (pointer_expression argument: (identifier))))))) condition: (parenthesized_expression (true))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (return_statement (identifier)))))

undefined8 MASKED(undefined8 *param_1,int param_2)

{
  long *plVar1;
  long lVar2;
  uint uVar3;
  long lVar4;
  ulong uVar5;
  long lVar6;
  undefined8 uVar7;
  long lVar8;
  int iVar9;
  long lVar10;
  bool bVar11;
  undefined1 auVar12 [16];
  
  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {
LAB_001f2352:
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");
  }
  lVar8 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058);
  if (lVar8 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/plugin.cc",0x858,"update_section_order");
  }
  if (param_2 == 0) {
LAB_001f2308:
    uVar7 = 0;
  }
  else {
    if (param_1 != (undefined8 *)0x0) {
      lVar4 = *(long *)(lVar8 + 0xe0);
      if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_0016cdf0("../../gold/plugin.cc",0x861,"update_section_order");
      }
      iVar9 = 0;
      lVar2 = lVar4 + 0x3b8;
      uVar5 = FUN_001efa60(lVar8,*param_1);
      do {
        if ((uVar5 == 0) || ((*(byte *)(uVar5 + 0x3c) & 1) != 0)) {
          return 2;
        }
        uVar3 = *(uint *)(param_1 + 1);
        lVar8 = *(long *)(lVar4 + 0x3c0);
        lVar10 = lVar2;
        if (*(long *)(lVar4 + 0x3c0) == 0) {
LAB_001f2220:
          lVar6 = FUN_00275550(0x38);
          *(uint *)(lVar6 + 0x28) = uVar3;
          *(ulong *)(lVar6 + 0x20) = uVar5;
          *(undefined4 *)(lVar6 + 0x30) = 0;
          auVar12 = FUN_001f3af0(lVar4 + 0x3b0,lVar10,lVar6 + 0x20);
          lVar8 = auVar12._8_8_;
          if (lVar8 != 0) {
            bVar11 = true;
            if ((((lVar2 != lVar8) && (auVar12._0_8_ == 0)) &&
                (*(ulong *)(lVar8 + 0x20) <= *(ulong *)(lVar6 + 0x20))) &&
               (bVar11 = false, *(ulong *)(lVar6 + 0x20) == *(ulong *)(lVar8 + 0x20))) {
              bVar11 = *(uint *)(lVar6 + 0x28) < *(uint *)(lVar8 + 0x28);
            }
            FUN_00278220(bVar11,lVar6,lVar8,lVar2);
            *(long *)(lVar4 + 0x3d8) = *(long *)(lVar4 + 0x3d8) + 1;
            goto LAB_001f228b;
          }
          FUN_00276d20(lVar6);
          *(int *)(auVar12._0_8_ + 0x30) = iVar9 + 1;
        }
        else {
          do {
            while ((lVar6 = lVar8, *(ulong *)(lVar6 + 0x20) < uVar5 ||
                   ((uVar5 == *(ulong *)(lVar6 + 0x20) && (*(uint *)(lVar6 + 0x28) < uVar3))))) {
              plVar1 = (long *)(lVar6 + 0x18);
              lVar8 = *plVar1;
              lVar6 = lVar10;
              if (*plVar1 == 0) goto LAB_001f2203;
            }
            lVar8 = *(long *)(lVar6 + 0x10);
            lVar10 = lVar6;
          } while (*(long *)(lVar6 + 0x10) != 0);
LAB_001f2203:
          lVar10 = lVar6;
          if (((lVar2 == lVar6) || (uVar5 < *(ulong *)(lVar6 + 0x20))) ||
             ((uVar5 == *(ulong *)(lVar6 + 0x20) && (uVar3 < *(uint *)(lVar6 + 0x28)))))
          goto LAB_001f2220;
LAB_001f228b:
          *(int *)(lVar6 + 0x30) = iVar9 + 1;
        }
        if (iVar9 + 1 == param_2) goto LAB_001f2308;
        iVar9 = iVar9 + 1;
        param_1 = param_1 + 2;
        if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) goto LAB_001f2352;
        uVar5 = FUN_001efa60(*(undefined8 *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x9058),*param_1);
      } while( true );
    }
    uVar7 = 3;
  }
  return uVar7;
}

