
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: void read_relocs(Sized_dwarf_line_info<64,_true> * this) */

void __thiscall
gold::Sized_dwarf_line_info<64,_true>::read_relocs(Sized_dwarf_line_info<64,_true> *this)

{
  _Rb_tree_header *p_Var1;
  _Base_ptr *pp_Var2;
  _Base_ptr p_Var3;
  uint uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  Sized_elf_reloc_mapper<64,_true> *pSVar7;
  int iVar8;
  _Rb_tree_color _Var9;
  _Base_ptr p_Var10;
  _Rb_tree_header *p_Var11;
  int iVar12;
  _func_int_varargs *p_Var13;
  undefined4 extraout_EDX;
  longlong lVar14;
  tuple<> *ptVar15;
  piecewise_construct_t *in_stack_ffffffa4;
  _Rb_tree_header *local_40;
  off_t *local_30;
  off_t value;
  off_t reloc_offset;
  
  p_Var1 = &(this->reloc_map_)._M_t._M_impl.super__Rb_tree_header;
  if (this->symtab_buffer_ == (uchar *)0x0) {
    return;
  }
LAB_00063595:
  pSVar7 = this->reloc_mapper_;
  p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3];
  if (p_Var13 != Sized_elf_reloc_mapper<64,_true>::do_next_offset) goto LAB_00063635;
LAB_000635a7:
  lVar14 = Track_relocs<64,_true>::next_offset(&pSVar7->track_relocs_);
  do {
    if (lVar14 == -1) {
      return;
    }
    ptVar15 = (tuple<> *)&value;
    reloc_offset = lVar14;
    iVar8 = (*(this->reloc_mapper_->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[5])
                      (this->reloc_mapper_);
    uVar6 = value._4_4_;
    uVar5 = (undefined4)value;
    _Var9 = (_Rb_tree_color)reloc_offset;
    iVar12 = reloc_offset._4_4_;
    if (iVar8 != 0) {
      p_Var3 = (this->reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
      p_Var10 = &p_Var1->_M_header;
      if (p_Var3 == (_Base_ptr)0x0) {
LAB_000636a2:
        local_30 = &reloc_offset;
        std::
        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>
        ::
        _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<long_long_int_const&>,_std::tuple<>_>
                  ((_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>
                    *)&local_30,(_Base_ptr)lVar14,
                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,
                   in_stack_ffffffa4);
        p_Var11 = local_40;
      }
      else {
        do {
          while (p_Var11 = (_Rb_tree_header *)p_Var3,
                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <
                              (_Rb_tree_color)reloc_offset),
                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,
                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=
                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0) {
            pp_Var2 = &(p_Var11->_M_header)._M_right;
            p_Var11 = (_Rb_tree_header *)p_Var10;
            p_Var3 = *pp_Var2;
            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;
          }
          p_Var10 = &p_Var11->_M_header;
          p_Var3 = (p_Var11->_M_header)._M_left;
        } while ((p_Var11->_M_header)._M_left != (_Base_ptr)0x0);
LAB_00063692:
        if ((p_Var1 == p_Var11) ||
           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),
           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),
           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=
           (int)(iVar12 - uVar4) < 0)) goto LAB_000636a2;
      }
      *(int *)((int)(p_Var11 + 1) + 4) = iVar8;
      *(undefined4 *)((int)(p_Var11 + 1) + 0xc) = uVar6;
      *(undefined4 *)((int)(p_Var11 + 1) + 8) = uVar5;
      _Var9 = (_Rb_tree_color)reloc_offset;
      iVar12 = reloc_offset._4_4_;
    }
    pSVar7 = this->reloc_mapper_;
    iVar12 = iVar12 + (uint)(~_S_black < _Var9);
    p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[4];
    if (p_Var13 != Sized_elf_reloc_mapper<64,_true>::do_advance) {
      (*p_Var13)(pSVar7,_Var9 + _S_black,iVar12);
      goto LAB_00063595;
    }
    Track_relocs<64,_true>::advance(&pSVar7->track_relocs_,CONCAT44(iVar12,_Var9 + _S_black));
    pSVar7 = this->reloc_mapper_;
    p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3];
    if (p_Var13 == Sized_elf_reloc_mapper<64,_true>::do_next_offset) goto LAB_000635a7;
LAB_00063635:
    iVar12 = (*p_Var13)(pSVar7);
    lVar14 = CONCAT44(extraout_EDX,iVar12);
  } while( true );
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_00063560(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  code *pcVar9;
  longlong lVar10;
  int local_40;
  undefined8 *local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined8 local_24;
  
  if (*(int *)(param_1 + 0x54) == 0) {
    return;
  }
LAB_00063595:
  piVar5 = *(int **)(param_1 + 0x4c);
  pcVar9 = *(code **)(*piVar5 + 0xc);
  if (pcVar9 != FUN_00059f80) goto LAB_00063635;
LAB_000635a7:
  lVar10 = FUN_00149090(piVar5 + 6);
  do {
    if (lVar10 == -1) {
      return;
    }
    local_24 = lVar10;
    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))
                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);
    uVar4 = local_28;
    uVar3 = local_2c;
    if (iVar6 != 0) {
      iVar7 = param_1 + 0x7c;
      iVar2 = *(int *)(param_1 + 0x80);
      if (*(int *)(param_1 + 0x80) == 0) {
LAB_000636a2:
        local_30 = &local_24;
        FUN_00059250(&local_30);
        iVar8 = local_40;
      }
      else {
        do {
          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),
                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,
                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=
                (int)(iVar2 - uVar1) < 0) {
            piVar5 = (int *)(iVar8 + 0xc);
            iVar8 = iVar7;
            iVar2 = *piVar5;
            if (*piVar5 == 0) goto LAB_00063692;
          }
          iVar7 = iVar8;
          iVar2 = *(int *)(iVar8 + 8);
        } while (*(int *)(iVar8 + 8) != 0);
LAB_00063692:
        if ((param_1 + 0x7c == iVar8) ||
           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),
           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),
           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=
           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;
      }
      *(int *)(iVar8 + 0x18) = iVar6;
      *(undefined4 *)(iVar8 + 0x20) = uVar4;
      *(undefined4 *)(iVar8 + 0x1c) = uVar3;
    }
    piVar5 = *(int **)(param_1 + 0x4c);
    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {
      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);
      goto LAB_00063595;
    }
    FUN_00149180(piVar5 + 6,local_24 + 1);
    piVar5 = *(int **)(param_1 + 0x4c);
    pcVar9 = *(code **)(*piVar5 + 0xc);
    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;
LAB_00063635:
    lVar10 = (*pcVar9)(piVar5);
  } while( true );
}


CALL 0x000559e6
ADD EAX,0x32ba9b
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x4c
MOV EBP,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[EAX + 0xffccaf80]
MOV dword ptr [ESP + 0xc],EAX
LEA EAX,[EBP + 0x7c]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EBP + 0x54]
TEST EAX,EAX
JZ 0x00063700
MOV EAX,dword ptr [EBP + 0x4c]
MOV EDX,dword ptr [EAX]
MOV EDX,dword ptr [EDX + 0xc]
CMP EDX,dword ptr [ESP + 0xc]
JNZ 0x00063635
SUB ESP,0xc
ADD EAX,0x18
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00149090
ADD ESP,0x10
MOV ECX,EDX
MOV dword ptr [ESP + 0x38],EAX
AND ECX,EAX
MOV dword ptr [ESP + 0x3c],EDX
CMP ECX,-0x1
JZ 0x00063700
MOV ECX,dword ptr [EBP + 0x4c]
LEA ESI,[ESP + 0x30]
MOV EBX,dword ptr [ECX]
PUSH ESI
PUSH EDX
PUSH EAX
PUSH ECX
CALL dword ptr [EBX + 0x14]
MOV EBX,EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00063648
MOV EAX,dword ptr [ESP + 0x38]
MOV EDX,dword ptr [ESP + 0x3c]
MOV ECX,dword ptr [EBP + 0x4c]
MOV EDI,dword ptr [ESP + 0x8]
ADD EAX,0x1
ADC EDX,0x0
MOV EBX,dword ptr [ECX]
LEA ESI,[EDI + 0xffccaf50]
MOV EBX,dword ptr [EBX + 0x10]
CMP EBX,ESI
JNZ 0x000636e8
SUB ESP,0x4
ADD ECX,0x18
MOV EBX,EDI
PUSH EDX
PUSH EAX
PUSH ECX
CALL 0x00149180
MOV EAX,dword ptr [EBP + 0x4c]
ADD ESP,0x10
MOV EDX,dword ptr [EAX]
MOV EDX,dword ptr [EDX + 0xc]
CMP EDX,dword ptr [ESP + 0xc]
JZ 0x000635a7
SUB ESP,0xc
PUSH EAX
CALL EDX
ADD ESP,0x10
JMP 0x000635ba
MOV EAX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x34]
MOV ESI,dword ptr [EBP + 0x80]
MOV dword ptr [ESP + 0x10],EAX
MOV dword ptr [ESP + 0x14],EDX
TEST ESI,ESI
JZ 0x00063710
MOV EAX,dword ptr [ESP + 0x38]
MOV EDX,dword ptr [ESP + 0x3c]
MOV ECX,dword ptr [ESP + 0x18]
JMP 0x00063681
MOV ECX,ESI
MOV ESI,dword ptr [ESI + 0x8]
TEST ESI,ESI
JZ 0x00063692
MOV EDI,dword ptr [ESI + 0x14]
CMP dword ptr [ESI + 0x10],EAX
SBB EDI,EDX
JGE 0x00063678
MOV ESI,dword ptr [ESI + 0xc]
TEST ESI,ESI
JNZ 0x00063681
CMP dword ptr [ESP + 0x18],ECX
JZ 0x000636a2
CMP EAX,dword ptr [ECX + 0x10]
MOV EDI,EDX
SBB EDI,dword ptr [ECX + 0x14]
JGE 0x000636cd
LEA EAX,[ESP + 0x38]
LEA EDX,[EBP + 0x78]
MOV dword ptr [ESP + 0x2c],EAX
LEA EAX,[ESP + 0x1c]
SUB ESP,0xc
LEA ESI,[ESP + 0x38]
PUSH ESI
CALL 0x00059250
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x48]
MOV EDX,dword ptr [ESP + 0x4c]
ADD ESP,0x10
MOV dword ptr [ECX + 0x18],EBX
MOV ESI,dword ptr [ESP + 0x14]
MOV EBX,dword ptr [ESP + 0x10]
MOV dword ptr [ECX + 0x20],ESI
MOV dword ptr [ECX + 0x1c],EBX
JMP 0x000635f0
SUB ESP,0x4
PUSH EDX
PUSH EAX
PUSH ECX
CALL EBX
ADD ESP,0x10
JMP 0x00063595
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,dword ptr [ESP + 0x18]
JMP 0x000636a2
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00063560(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  code *pcVar9;\n  longlong lVar10;\n  int local_40;\n  undefined8 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined8 local_24;\n  \n  if (*(int *)(param_1 + 0x54) == 0) {\n    return;\n  }\nLAB_00063595:\n  piVar5 = *(int **)(param_1 + 0x4c);\n  pcVar9 = *(code **)(*piVar5 + 0xc);\n  if (pcVar9 != FUN_00059f80) goto LAB_00063635;\nLAB_000635a7:\n  lVar10 = FUN_00149090(piVar5 + 6);\n  do {\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  } while( true );\n}\n\n" comment (function_definition "void FUN_00063560(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  code *pcVar9;\n  longlong lVar10;\n  int local_40;\n  undefined8 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined8 local_24;\n  \n  if (*(int *)(param_1 + 0x54) == 0) {\n    return;\n  }\nLAB_00063595:\n  piVar5 = *(int **)(param_1 + 0x4c);\n  pcVar9 = *(code **)(*piVar5 + 0xc);\n  if (pcVar9 != FUN_00059f80) goto LAB_00063635;\nLAB_000635a7:\n  lVar10 = FUN_00149090(piVar5 + 6);\n  do {\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  } while( true );\n}" primitive_type (function_declarator "FUN_00063560(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  code *pcVar9;\n  longlong lVar10;\n  int local_40;\n  undefined8 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined8 local_24;\n  \n  if (*(int *)(param_1 + 0x54) == 0) {\n    return;\n  }\nLAB_00063595:\n  piVar5 = *(int **)(param_1 + 0x4c);\n  pcVar9 = *(code **)(*piVar5 + 0xc);\n  if (pcVar9 != FUN_00059f80) goto LAB_00063635;\nLAB_000635a7:\n  lVar10 = FUN_00149090(piVar5 + 6);\n  do {\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  } while( true );\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (declaration "longlong lVar10;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined8 *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined8 local_24;" type_identifier identifier ;) (if_statement "if (*(int *)(param_1 + 0x54) == 0) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x54) == 0)" ( (binary_expression "*(int *)(param_1 + 0x54) == 0" (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_00063595:\n  piVar5 = *(int **)(param_1 + 0x4c);" statement_identifier : (expression_statement "piVar5 = *(int **)(param_1 + 0x4c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x4c)" identifier = (pointer_expression "*(int **)(param_1 + 0x4c)" * (cast_expression "(int **)(param_1 + 0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;)) (expression_statement "pcVar9 = *(code **)(*piVar5 + 0xc);" (assignment_expression "pcVar9 = *(code **)(*piVar5 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar5 + 0xc)" * (cast_expression "(code **)(*piVar5 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0xc)" ( (binary_expression "*piVar5 + 0xc" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar9 != FUN_00059f80) goto LAB_00063635;" if (parenthesized_expression "(pcVar9 != FUN_00059f80)" ( (binary_expression "pcVar9 != FUN_00059f80" identifier != identifier) )) (goto_statement "goto LAB_00063635;" goto statement_identifier ;)) (labeled_statement "LAB_000635a7:\n  lVar10 = FUN_00149090(piVar5 + 6);" statement_identifier : (expression_statement "lVar10 = FUN_00149090(piVar5 + 6);" (assignment_expression "lVar10 = FUN_00149090(piVar5 + 6)" identifier = (call_expression "FUN_00149090(piVar5 + 6)" identifier (argument_list "(piVar5 + 6)" ( (binary_expression "piVar5 + 6" identifier + number_literal) )))) ;)) (do_statement "do {\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  } while( true );" do (compound_statement "{\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  }" { (if_statement "if (lVar10 == -1) {\n      return;\n    }" if (parenthesized_expression "(lVar10 == -1)" ( (binary_expression "lVar10 == -1" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "local_24 = lVar10;" (assignment_expression "local_24 = lVar10" identifier = identifier) ;) (expression_statement "iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);" (assignment_expression "iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c)" identifier = (call_expression "(**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0x4c) + 0x14))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0x4c) + 0x14)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0x4c) + 0x14)" * (cast_expression "(code **)(**(int **)(param_1 + 0x4c) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0x4c) + 0x14)" ( (binary_expression "**(int **)(param_1 + 0x4c) + 0x14" (pointer_expression "**(int **)(param_1 + 0x4c)" * (pointer_expression "*(int **)(param_1 + 0x4c)" * (cast_expression "(int **)(param_1 + 0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0x4c),lVar10,&local_2c)" ( (pointer_expression "*(int **)(param_1 + 0x4c)" * (cast_expression "(int **)(param_1 + 0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) , identifier , (pointer_expression "&local_2c" & identifier) )))) ;) (expression_statement "uVar4 = local_28;" (assignment_expression "uVar4 = local_28" identifier = identifier) ;) (expression_statement "uVar3 = local_2c;" (assignment_expression "uVar3 = local_2c" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }" { (expression_statement "iVar7 = param_1 + 0x7c;" (assignment_expression "iVar7 = param_1 + 0x7c" identifier = (binary_expression "param_1 + 0x7c" identifier + number_literal)) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x80);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x80)" identifier = (pointer_expression "*(int *)(param_1 + 0x80)" * (cast_expression "(int *)(param_1 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x80) == 0)" ( (binary_expression "*(int *)(param_1 + 0x80) == 0" (pointer_expression "*(int *)(param_1 + 0x80)" * (cast_expression "(int *)(param_1 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }" { (labeled_statement "LAB_000636a2:\n        local_30 = &local_24;" statement_identifier : (expression_statement "local_30 = &local_24;" (assignment_expression "local_30 = &local_24" identifier = (pointer_expression "&local_24" & identifier)) ;)) (expression_statement "FUN_00059250(&local_30);" (call_expression "FUN_00059250(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) (expression_statement "iVar8 = local_40;" (assignment_expression "iVar8 = local_40" identifier = identifier) ;) }) (else_clause "else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }" else (compound_statement "{\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }" { (do_statement "do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);" do (compound_statement "{\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        }" { (while_statement "while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }" while (parenthesized_expression "(iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0)" ( (comma_expression "iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0" (assignment_expression "iVar8 = iVar2" identifier = identifier) , (comma_expression "uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0" (assignment_expression "uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24)" identifier = (call_expression "(uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(iVar8 + 0x10) < (uint)local_24)" ( (binary_expression "*(uint *)(iVar8 + 0x10) < (uint)local_24" (pointer_expression "*(uint *)(iVar8 + 0x10)" * (cast_expression "(uint *)(iVar8 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) < (cast_expression "(uint)local_24" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) , (comma_expression "iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0" (assignment_expression "iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_" identifier = (binary_expression "*(int *)(iVar8 + 0x14) - local_24._4_4_" (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) - (field_expression "local_24._4_4_" identifier . field_identifier))) , (binary_expression "(SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0" (parenthesized_expression "(SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1))" ( (binary_expression "SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)" (call_expression "SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_)" identifier (argument_list "(*(int *)(iVar8 + 0x14),local_24._4_4_)" ( (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) , (field_expression "local_24._4_4_" identifier . field_identifier) ))) != (call_expression "SBORROW4(iVar2,uVar1)" identifier (argument_list "(iVar2,uVar1)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar2 - uVar1) < 0" (cast_expression "(int)(iVar2 - uVar1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - uVar1)" ( (binary_expression "iVar2 - uVar1" identifier - identifier) ))) < number_literal))))) )) (compound_statement "{\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }" { (expression_statement "piVar5 = (int *)(iVar8 + 0xc);" (assignment_expression "piVar5 = (int *)(iVar8 + 0xc)" identifier = (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) ;) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" identifier = identifier) ;) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (if_statement "if (*piVar5 == 0) goto LAB_00063692;" if (parenthesized_expression "(*piVar5 == 0)" ( (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" * identifier) == number_literal) )) (goto_statement "goto LAB_00063692;" goto statement_identifier ;)) })) (expression_statement "iVar7 = iVar8;" (assignment_expression "iVar7 = iVar8" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)(iVar8 + 8);" (assignment_expression "iVar2 = *(int *)(iVar8 + 8)" identifier = (pointer_expression "*(int *)(iVar8 + 8)" * (cast_expression "(int *)(iVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(int *)(iVar8 + 8) != 0)" ( (binary_expression "*(int *)(iVar8 + 8) != 0" (pointer_expression "*(int *)(iVar8 + 8)" * (cast_expression "(int *)(iVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) )))) != number_literal) )) ;) (labeled_statement "LAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;" statement_identifier : (if_statement "if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;" if (parenthesized_expression "((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0))" ( (binary_expression "(param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)" (parenthesized_expression "(param_1 + 0x7c == iVar8)" ( (binary_expression "param_1 + 0x7c == iVar8" (binary_expression "param_1 + 0x7c" identifier + number_literal) == identifier) )) || (parenthesized_expression "(uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)" ( (comma_expression "uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0" (assignment_expression "uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10))" identifier = (call_expression "(uint)((uint)local_24 < *(uint *)(iVar8 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)local_24 < *(uint *)(iVar8 + 0x10))" ( (binary_expression "(uint)local_24 < *(uint *)(iVar8 + 0x10)" (cast_expression "(uint)local_24" ( (type_descriptor "uint" type_identifier) ) identifier) < (pointer_expression "*(uint *)(iVar8 + 0x10)" * (cast_expression "(uint *)(iVar8 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) )))) , (comma_expression "iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0" (assignment_expression "iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14)" identifier = (binary_expression "local_24._4_4_ - *(int *)(iVar8 + 0x14)" (field_expression "local_24._4_4_" identifier . field_identifier) - (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))))) , (binary_expression "(SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0" (parenthesized_expression "(SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1))" ( (binary_expression "SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)" (call_expression "SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14))" identifier (argument_list "(local_24._4_4_,*(int *)(iVar8 + 0x14))" ( (field_expression "local_24._4_4_" identifier . field_identifier) , (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) ))) != (call_expression "SBORROW4(iVar7,uVar1)" identifier (argument_list "(iVar7,uVar1)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar7 - uVar1) < 0" (cast_expression "(int)(iVar7 - uVar1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar1)" ( (binary_expression "iVar7 - uVar1" identifier - identifier) ))) < number_literal)))) ))) )) (goto_statement "goto LAB_000636a2;" goto statement_identifier ;))) }))) (expression_statement "*(int *)(iVar8 + 0x18) = iVar6;" (assignment_expression "*(int *)(iVar8 + 0x18) = iVar6" (pointer_expression "*(int *)(iVar8 + 0x18)" * (cast_expression "(int *)(iVar8 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x20) = uVar4;" (assignment_expression "*(undefined4 *)(iVar8 + 0x20) = uVar4" (pointer_expression "*(undefined4 *)(iVar8 + 0x20)" * (cast_expression "(undefined4 *)(iVar8 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x1c) = uVar3;" (assignment_expression "*(undefined4 *)(iVar8 + 0x1c) = uVar3" (pointer_expression "*(undefined4 *)(iVar8 + 0x1c)" * (cast_expression "(undefined4 *)(iVar8 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "piVar5 = *(int **)(param_1 + 0x4c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x4c)" identifier = (pointer_expression "*(int **)(param_1 + 0x4c)" * (cast_expression "(int **)(param_1 + 0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }" if (parenthesized_expression "(*(code **)(*piVar5 + 0x10) != FUN_00059f50)" ( (binary_expression "*(code **)(*piVar5 + 0x10) != FUN_00059f50" (pointer_expression "*(code **)(*piVar5 + 0x10)" * (cast_expression "(code **)(*piVar5 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x10)" ( (binary_expression "*piVar5 + 0x10" (pointer_expression "*piVar5" * identifier) + number_literal) )))) != identifier) )) (compound_statement "{\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }" { (expression_statement "(**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);" (call_expression "(**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1)" (parenthesized_expression "(**(code **)(*piVar5 + 0x10))" ( (pointer_expression "**(code **)(*piVar5 + 0x10)" * (pointer_expression "*(code **)(*piVar5 + 0x10)" * (cast_expression "(code **)(*piVar5 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x10)" ( (binary_expression "*piVar5 + 0x10" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,local_24 + 1)" ( identifier , (binary_expression "local_24 + 1" identifier + number_literal) ))) ;) (goto_statement "goto LAB_00063595;" goto statement_identifier ;) })) (expression_statement "FUN_00149180(piVar5 + 6,local_24 + 1);" (call_expression "FUN_00149180(piVar5 + 6,local_24 + 1)" identifier (argument_list "(piVar5 + 6,local_24 + 1)" ( (binary_expression "piVar5 + 6" identifier + number_literal) , (binary_expression "local_24 + 1" identifier + number_literal) ))) ;) (expression_statement "piVar5 = *(int **)(param_1 + 0x4c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x4c)" identifier = (pointer_expression "*(int **)(param_1 + 0x4c)" * (cast_expression "(int **)(param_1 + 0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "pcVar9 = *(code **)(*piVar5 + 0xc);" (assignment_expression "pcVar9 = *(code **)(*piVar5 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar5 + 0xc)" * (cast_expression "(code **)(*piVar5 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0xc)" ( (binary_expression "*piVar5 + 0xc" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar9 == FUN_00059f80) goto LAB_000635a7;" if (parenthesized_expression "(pcVar9 == FUN_00059f80)" ( (binary_expression "pcVar9 == FUN_00059f80" identifier == identifier) )) (goto_statement "goto LAB_000635a7;" goto statement_identifier ;)) (labeled_statement "LAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);" statement_identifier : (expression_statement "lVar10 = (*pcVar9)(piVar5);" (assignment_expression "lVar10 = (*pcVar9)(piVar5)" identifier = (call_expression "(*pcVar9)(piVar5)" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "(piVar5)" ( identifier )))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* DWARF original prototype: void read_relocs(Sized_dwarf_line_info<64,_true> * this) */\n\nvoid __thiscall\ngold::Sized_dwarf_line_info<64,_true>::read_relocs(Sized_dwarf_line_info<64,_true> *this)\n\n{\n  _Rb_tree_header *p_Var1;\n  _Base_ptr *pp_Var2;\n  _Base_ptr p_Var3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  Sized_elf_reloc_mapper<64,_true> *pSVar7;\n  int iVar8;\n  _Rb_tree_color _Var9;\n  _Base_ptr p_Var10;\n  _Rb_tree_header *p_Var11;\n  int iVar12;\n  _func_int_varargs *p_Var13;\n  undefined4 extraout_EDX;\n  longlong lVar14;\n  tuple<> *ptVar15;\n  piecewise_construct_t *in_stack_ffffffa4;\n  _Rb_tree_header *local_40;\n  off_t *local_30;\n  off_t value;\n  off_t reloc_offset;\n  \n  p_Var1 = &(this->reloc_map_)._M_t._M_impl.super__Rb_tree_header;\n  if (this->symtab_buffer_ == (uchar *)0x0) {\n    return;\n  }\nLAB_00063595:\n  pSVar7 = this->reloc_mapper_;\n  p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3];\n  if (p_Var13 != Sized_elf_reloc_mapper<64,_true>::do_next_offset) goto LAB_00063635;\nLAB_000635a7:\n  lVar14 = Track_relocs<64,_true>::next_offset(&pSVar7->track_relocs_);\n  do {\n    if (lVar14 == -1) {\n      return;\n    }\n    ptVar15 = (tuple<> *)&value;\n    reloc_offset = lVar14;\n    iVar8 = (*(this->reloc_mapper_->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[5])\n                      (this->reloc_mapper_);\n    uVar6 = value._4_4_;\n    uVar5 = (undefined4)value;\n    _Var9 = (_Rb_tree_color)reloc_offset;\n    iVar12 = reloc_offset._4_4_;\n    if (iVar8 != 0) {\n      p_Var3 = (this->reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      p_Var10 = &p_Var1->_M_header;\n      if (p_Var3 == (_Base_ptr)0x0) {\nLAB_000636a2:\n        local_30 = &reloc_offset;\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n        ::\n        _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<long_long_int_const&>,_std::tuple<>_>\n                  ((_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4);\n        p_Var11 = local_40;\n      }\n      else {\n        do {\n          while (p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0) {\n            pp_Var2 = &(p_Var11->_M_header)._M_right;\n            p_Var11 = (_Rb_tree_header *)p_Var10;\n            p_Var3 = *pp_Var2;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;\n          }\n          p_Var10 = &p_Var11->_M_header;\n          p_Var3 = (p_Var11->_M_header)._M_left;\n        } while ((p_Var11->_M_header)._M_left != (_Base_ptr)0x0);\nLAB_00063692:\n        if ((p_Var1 == p_Var11) ||\n           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0)) goto LAB_000636a2;\n      }\n      *(int *)((int)(p_Var11 + 1) + 4) = iVar8;\n      *(undefined4 *)((int)(p_Var11 + 1) + 0xc) = uVar6;\n      *(undefined4 *)((int)(p_Var11 + 1) + 8) = uVar5;\n      _Var9 = (_Rb_tree_color)reloc_offset;\n      iVar12 = reloc_offset._4_4_;\n    }\n    pSVar7 = this->reloc_mapper_;\n    iVar12 = iVar12 + (uint)(~_S_black < _Var9);\n    p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[4];\n    if (p_Var13 != Sized_elf_reloc_mapper<64,_true>::do_advance) {\n      (*p_Var13)(pSVar7,_Var9 + _S_black,iVar12);\n      goto LAB_00063595;\n    }\n    Track_relocs<64,_true>::advance(&pSVar7->track_relocs_,CONCAT44(iVar12,_Var9 + _S_black));\n    pSVar7 = this->reloc_mapper_;\n    p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3];\n    if (p_Var13 == Sized_elf_reloc_mapper<64,_true>::do_next_offset) goto LAB_000635a7;\nLAB_00063635:\n    iVar12 = (*p_Var13)(pSVar7);\n    lVar14 = CONCAT44(extraout_EDX,iVar12);\n  } while( true );\n}\n\n" comment comment (declaration "void __thiscall\ngold::Sized_dwarf_line_info<64,_true>::read_relocs(Sized_dwarf_line_info<64,_true> *this)\n\n{\n  _Rb_tree_header *p_Var1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::read_relocs(Sized_dwarf_line_info<64,_true> *this)\n\n{\n  _Rb_tree_header" identifier > : : (function_declarator "read_relocs(Sized_dwarf_line_info<64,_true> *this)" identifier (parameter_list "(Sized_dwarf_line_info<64,_true> *this)" ( (parameter_declaration "Sized_dwarf_line_info" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) ))) { identifier) (pointer_declarator "*p_Var1" * identifier) ;) (declaration "_Base_ptr *pp_Var2;" type_identifier (pointer_declarator "*pp_Var2" * identifier) ;) (declaration "_Base_ptr p_Var3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (expression_statement "Sized_elf_reloc_mapper<64,_true> *pSVar7;" (update_expression "Sized_elf_reloc_mapper<64,_true> *pSVar7" (binary_expression "Sized_elf_reloc_mapper<64,_true> *pSVar7" (binary_expression "Sized_elf_reloc_mapper<64" identifier < number_literal) (ERROR ",_true" , identifier) > (pointer_expression "*pSVar7" * identifier)) --) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "_Rb_tree_color _Var9;" type_identifier identifier ;) (declaration "_Base_ptr p_Var10;" type_identifier identifier ;) (declaration "_Rb_tree_header *p_Var11;" type_identifier (pointer_declarator "*p_Var11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "_func_int_varargs *p_Var13;" type_identifier (pointer_declarator "*p_Var13" * identifier) ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "longlong lVar14;" type_identifier identifier ;) (expression_statement "tuple<> *ptVar15;" (update_expression "tuple<> *ptVar15" (binary_expression "tuple<> *ptVar15" identifier < (ERROR ">" >) (pointer_expression "*ptVar15" * identifier)) --) ;) (declaration "piecewise_construct_t *in_stack_ffffffa4;" type_identifier (pointer_declarator "*in_stack_ffffffa4" * identifier) ;) (declaration "_Rb_tree_header *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "off_t *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "off_t value;" type_identifier identifier ;) (declaration "off_t reloc_offset;" type_identifier identifier ;) (expression_statement "p_Var1 = &(this->reloc_map_)._M_t._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var1 = &(this->reloc_map_)._M_t._M_impl.super__Rb_tree_header" identifier = (pointer_expression "&(this->reloc_map_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->reloc_map_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->reloc_map_)._M_t._M_impl" (field_expression "(this->reloc_map_)._M_t" (parenthesized_expression "(this->reloc_map_)" ( (field_expression "this->reloc_map_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (if_statement "if (this->symtab_buffer_ == (uchar *)0x0) {\n    return;\n  }" if (parenthesized_expression "(this->symtab_buffer_ == (uchar *)0x0)" ( (binary_expression "this->symtab_buffer_ == (uchar *)0x0" (field_expression "this->symtab_buffer_" identifier -> field_identifier) == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_00063595:\n  pSVar7 = this->reloc_mapper_;" statement_identifier : (expression_statement "pSVar7 = this->reloc_mapper_;" (assignment_expression "pSVar7 = this->reloc_mapper_" identifier = (field_expression "this->reloc_mapper_" identifier -> field_identifier)) ;)) (expression_statement "p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3];" (assignment_expression "p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3]" identifier = (subscript_expression "(pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3]" (field_expression "(pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper" (parenthesized_expression "(pSVar7->super_Elf_reloc_mapper)" ( (field_expression "pSVar7->super_Elf_reloc_mapper" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var13 != Sized_elf_reloc_mapper<64,_true>::do_next_offset) goto LAB_00063635;" if (parenthesized_expression "(p_Var13 != Sized_elf_reloc_mapper<64,_true>::do_next_offset)" ( (comma_expression "p_Var13 != Sized_elf_reloc_mapper<64,_true>::do_next_offset" (binary_expression "p_Var13 != Sized_elf_reloc_mapper<64" identifier != (binary_expression "Sized_elf_reloc_mapper<64" identifier < number_literal)) , (binary_expression "_true>::do_next_offset" identifier > (ERROR "::" : :) identifier)) )) (goto_statement "goto LAB_00063635;" goto statement_identifier ;)) (labeled_statement "LAB_000635a7:\n  lVar14 = Track_relocs<64,_true>::next_offset(&pSVar7->track_relocs_);" statement_identifier : (expression_statement "lVar14 = Track_relocs<64,_true>::next_offset(&pSVar7->track_relocs_);" (comma_expression "lVar14 = Track_relocs<64,_true>::next_offset(&pSVar7->track_relocs_)" (assignment_expression "lVar14 = Track_relocs<64" identifier = (binary_expression "Track_relocs<64" identifier < number_literal)) , (binary_expression "_true>::next_offset(&pSVar7->track_relocs_)" identifier > (ERROR "::" : :) (call_expression "next_offset(&pSVar7->track_relocs_)" identifier (argument_list "(&pSVar7->track_relocs_)" ( (pointer_expression "&pSVar7->track_relocs_" & (field_expression "pSVar7->track_relocs_" identifier -> field_identifier)) ))))) ;)) (do_statement "do {\n    if (lVar14 == -1) {\n      return;\n    }\n    ptVar15 = (tuple<> *)&value;\n    reloc_offset = lVar14;\n    iVar8 = (*(this->reloc_mapper_->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[5])\n                      (this->reloc_mapper_);\n    uVar6 = value._4_4_;\n    uVar5 = (undefined4)value;\n    _Var9 = (_Rb_tree_color)reloc_offset;\n    iVar12 = reloc_offset._4_4_;\n    if (iVar8 != 0) {\n      p_Var3 = (this->reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      p_Var10 = &p_Var1->_M_header;\n      if (p_Var3 == (_Base_ptr)0x0) {\nLAB_000636a2:\n        local_30 = &reloc_offset;\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n        ::\n        _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<long_long_int_const&>,_std::tuple<>_>\n                  ((_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4);\n        p_Var11 = local_40;\n      }\n      else {\n        do {\n          while (p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0) {\n            pp_Var2 = &(p_Var11->_M_header)._M_right;\n            p_Var11 = (_Rb_tree_header *)p_Var10;\n            p_Var3 = *pp_Var2;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;\n          }\n          p_Var10 = &p_Var11->_M_header;\n          p_Var3 = (p_Var11->_M_header)._M_left;\n        } while ((p_Var11->_M_header)._M_left != (_Base_ptr)0x0);\nLAB_00063692:\n        if ((p_Var1 == p_Var11) ||\n           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0)) goto LAB_000636a2;\n      }\n      *(int *)((int)(p_Var11 + 1) + 4) = iVar8;\n      *(undefined4 *)((int)(p_Var11 + 1) + 0xc) = uVar6;\n      *(undefined4 *)((int)(p_Var11 + 1) + 8) = uVar5;\n      _Var9 = (_Rb_tree_color)reloc_offset;\n      iVar12 = reloc_offset._4_4_;\n    }\n    pSVar7 = this->reloc_mapper_;\n    iVar12 = iVar12 + (uint)(~_S_black < _Var9);\n    p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[4];\n    if (p_Var13 != Sized_elf_reloc_mapper<64,_true>::do_advance) {\n      (*p_Var13)(pSVar7,_Var9 + _S_black,iVar12);\n      goto LAB_00063595;\n    }\n    Track_relocs<64,_true>::advance(&pSVar7->track_relocs_,CONCAT44(iVar12,_Var9 + _S_black));\n    pSVar7 = this->reloc_mapper_;\n    p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3];\n    if (p_Var13 == Sized_elf_reloc_mapper<64,_true>::do_next_offset) goto LAB_000635a7;\nLAB_00063635:\n    iVar12 = (*p_Var13)(pSVar7);\n    lVar14 = CONCAT44(extraout_EDX,iVar12);\n  } while( true );" do (compound_statement "{\n    if (lVar14 == -1) {\n      return;\n    }\n    ptVar15 = (tuple<> *)&value;\n    reloc_offset = lVar14;\n    iVar8 = (*(this->reloc_mapper_->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[5])\n                      (this->reloc_mapper_);\n    uVar6 = value._4_4_;\n    uVar5 = (undefined4)value;\n    _Var9 = (_Rb_tree_color)reloc_offset;\n    iVar12 = reloc_offset._4_4_;\n    if (iVar8 != 0) {\n      p_Var3 = (this->reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      p_Var10 = &p_Var1->_M_header;\n      if (p_Var3 == (_Base_ptr)0x0) {\nLAB_000636a2:\n        local_30 = &reloc_offset;\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n        ::\n        _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<long_long_int_const&>,_std::tuple<>_>\n                  ((_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4);\n        p_Var11 = local_40;\n      }\n      else {\n        do {\n          while (p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0) {\n            pp_Var2 = &(p_Var11->_M_header)._M_right;\n            p_Var11 = (_Rb_tree_header *)p_Var10;\n            p_Var3 = *pp_Var2;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;\n          }\n          p_Var10 = &p_Var11->_M_header;\n          p_Var3 = (p_Var11->_M_header)._M_left;\n        } while ((p_Var11->_M_header)._M_left != (_Base_ptr)0x0);\nLAB_00063692:\n        if ((p_Var1 == p_Var11) ||\n           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0)) goto LAB_000636a2;\n      }\n      *(int *)((int)(p_Var11 + 1) + 4) = iVar8;\n      *(undefined4 *)((int)(p_Var11 + 1) + 0xc) = uVar6;\n      *(undefined4 *)((int)(p_Var11 + 1) + 8) = uVar5;\n      _Var9 = (_Rb_tree_color)reloc_offset;\n      iVar12 = reloc_offset._4_4_;\n    }\n    pSVar7 = this->reloc_mapper_;\n    iVar12 = iVar12 + (uint)(~_S_black < _Var9);\n    p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[4];\n    if (p_Var13 != Sized_elf_reloc_mapper<64,_true>::do_advance) {\n      (*p_Var13)(pSVar7,_Var9 + _S_black,iVar12);\n      goto LAB_00063595;\n    }\n    Track_relocs<64,_true>::advance(&pSVar7->track_relocs_,CONCAT44(iVar12,_Var9 + _S_black));\n    pSVar7 = this->reloc_mapper_;\n    p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3];\n    if (p_Var13 == Sized_elf_reloc_mapper<64,_true>::do_next_offset) goto LAB_000635a7;\nLAB_00063635:\n    iVar12 = (*p_Var13)(pSVar7);\n    lVar14 = CONCAT44(extraout_EDX,iVar12);\n  }" { (if_statement "if (lVar14 == -1) {\n      return;\n    }" if (parenthesized_expression "(lVar14 == -1)" ( (binary_expression "lVar14 == -1" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "ptVar15 = (tuple<> *)&value;" (assignment_expression "ptVar15 = (tuple<> *)&value" identifier = (binary_expression "(tuple<> *)&value" (parenthesized_expression "(tuple<> *)" ( (binary_expression "tuple<> *" identifier < (ERROR ">" >) (pointer_expression "*" * identifier)) )) & identifier)) ;) (expression_statement "reloc_offset = lVar14;" (assignment_expression "reloc_offset = lVar14" identifier = identifier) ;) (expression_statement "iVar8 = (*(this->reloc_mapper_->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[5])\n                      (this->reloc_mapper_);" (assignment_expression "iVar8 = (*(this->reloc_mapper_->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[5])\n                      (this->reloc_mapper_)" identifier = (call_expression "(*(this->reloc_mapper_->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[5])\n                      (this->reloc_mapper_)" (parenthesized_expression "(*(this->reloc_mapper_->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[5])" ( (pointer_expression "*(this->reloc_mapper_->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[5]" * (subscript_expression "(this->reloc_mapper_->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[5]" (field_expression "(this->reloc_mapper_->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper" (parenthesized_expression "(this->reloc_mapper_->super_Elf_reloc_mapper)" ( (field_expression "this->reloc_mapper_->super_Elf_reloc_mapper" (field_expression "this->reloc_mapper_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(this->reloc_mapper_)" ( (field_expression "this->reloc_mapper_" identifier -> field_identifier) )))) ;) (expression_statement "uVar6 = value._4_4_;" (assignment_expression "uVar6 = value._4_4_" identifier = (field_expression "value._4_4_" identifier . field_identifier)) ;) (expression_statement "uVar5 = (undefined4)value;" (assignment_expression "uVar5 = (undefined4)value" identifier = (cast_expression "(undefined4)value" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "_Var9 = (_Rb_tree_color)reloc_offset;" (assignment_expression "_Var9 = (_Rb_tree_color)reloc_offset" identifier = (cast_expression "(_Rb_tree_color)reloc_offset" ( (type_descriptor "_Rb_tree_color" type_identifier) ) identifier)) ;) (expression_statement "iVar12 = reloc_offset._4_4_;" (assignment_expression "iVar12 = reloc_offset._4_4_" identifier = (field_expression "reloc_offset._4_4_" identifier . field_identifier)) ;) (if_statement "if (iVar8 != 0) {\n      p_Var3 = (this->reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      p_Var10 = &p_Var1->_M_header;\n      if (p_Var3 == (_Base_ptr)0x0) {\nLAB_000636a2:\n        local_30 = &reloc_offset;\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n        ::\n        _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<long_long_int_const&>,_std::tuple<>_>\n                  ((_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4);\n        p_Var11 = local_40;\n      }\n      else {\n        do {\n          while (p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0) {\n            pp_Var2 = &(p_Var11->_M_header)._M_right;\n            p_Var11 = (_Rb_tree_header *)p_Var10;\n            p_Var3 = *pp_Var2;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;\n          }\n          p_Var10 = &p_Var11->_M_header;\n          p_Var3 = (p_Var11->_M_header)._M_left;\n        } while ((p_Var11->_M_header)._M_left != (_Base_ptr)0x0);\nLAB_00063692:\n        if ((p_Var1 == p_Var11) ||\n           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0)) goto LAB_000636a2;\n      }\n      *(int *)((int)(p_Var11 + 1) + 4) = iVar8;\n      *(undefined4 *)((int)(p_Var11 + 1) + 0xc) = uVar6;\n      *(undefined4 *)((int)(p_Var11 + 1) + 8) = uVar5;\n      _Var9 = (_Rb_tree_color)reloc_offset;\n      iVar12 = reloc_offset._4_4_;\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      p_Var3 = (this->reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      p_Var10 = &p_Var1->_M_header;\n      if (p_Var3 == (_Base_ptr)0x0) {\nLAB_000636a2:\n        local_30 = &reloc_offset;\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n        ::\n        _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<long_long_int_const&>,_std::tuple<>_>\n                  ((_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4);\n        p_Var11 = local_40;\n      }\n      else {\n        do {\n          while (p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0) {\n            pp_Var2 = &(p_Var11->_M_header)._M_right;\n            p_Var11 = (_Rb_tree_header *)p_Var10;\n            p_Var3 = *pp_Var2;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;\n          }\n          p_Var10 = &p_Var11->_M_header;\n          p_Var3 = (p_Var11->_M_header)._M_left;\n        } while ((p_Var11->_M_header)._M_left != (_Base_ptr)0x0);\nLAB_00063692:\n        if ((p_Var1 == p_Var11) ||\n           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0)) goto LAB_000636a2;\n      }\n      *(int *)((int)(p_Var11 + 1) + 4) = iVar8;\n      *(undefined4 *)((int)(p_Var11 + 1) + 0xc) = uVar6;\n      *(undefined4 *)((int)(p_Var11 + 1) + 8) = uVar5;\n      _Var9 = (_Rb_tree_color)reloc_offset;\n      iVar12 = reloc_offset._4_4_;\n    }" { (expression_statement "p_Var3 = (this->reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var3 = (this->reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(this->reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" (field_expression "(this->reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->reloc_map_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->reloc_map_)._M_t._M_impl" (field_expression "(this->reloc_map_)._M_t" (parenthesized_expression "(this->reloc_map_)" ( (field_expression "this->reloc_map_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "p_Var10 = &p_Var1->_M_header;" (assignment_expression "p_Var10 = &p_Var1->_M_header" identifier = (pointer_expression "&p_Var1->_M_header" & (field_expression "p_Var1->_M_header" identifier -> field_identifier))) ;) (if_statement "if (p_Var3 == (_Base_ptr)0x0) {\nLAB_000636a2:\n        local_30 = &reloc_offset;\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n        ::\n        _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<long_long_int_const&>,_std::tuple<>_>\n                  ((_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4);\n        p_Var11 = local_40;\n      }\n      else {\n        do {\n          while (p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0) {\n            pp_Var2 = &(p_Var11->_M_header)._M_right;\n            p_Var11 = (_Rb_tree_header *)p_Var10;\n            p_Var3 = *pp_Var2;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;\n          }\n          p_Var10 = &p_Var11->_M_header;\n          p_Var3 = (p_Var11->_M_header)._M_left;\n        } while ((p_Var11->_M_header)._M_left != (_Base_ptr)0x0);\nLAB_00063692:\n        if ((p_Var1 == p_Var11) ||\n           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0)) goto LAB_000636a2;\n      }" if (parenthesized_expression "(p_Var3 == (_Base_ptr)0x0)" ( (binary_expression "p_Var3 == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_000636a2:\n        local_30 = &reloc_offset;\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n        ::\n        _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<long_long_int_const&>,_std::tuple<>_>\n                  ((_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4);\n        p_Var11 = local_40;\n      }" { (labeled_statement "LAB_000636a2:\n        local_30 = &reloc_offset;" statement_identifier : (expression_statement "local_30 = &reloc_offset;" (assignment_expression "local_30 = &reloc_offset" identifier = (pointer_expression "&reloc_offset" & identifier)) ;)) (ERROR "std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n        ::\n        _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<long_long_int_const&>,_std::" (comma_expression "std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std" identifier (ERROR "::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>" : : (comma_expression "_Rb_tree<long_long_int,_std" (binary_expression "_Rb_tree<long_long_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_long_int_const,_std" (binary_expression "pair<long_long_int_const" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int,_long_long_int>_>,_std" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "_long_long_int>_>,_std" (binary_expression "_long_long_int>_" identifier > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<long_long_int_const,_std" (binary_expression "pair<long_long_int_const" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int,_long_long_int>_>_>,_std" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "_long_long_int>_>_>,_std" (binary_expression "_long_long_int>_>_" (binary_expression "_long_long_int>_" identifier > identifier) > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "less<long_long_int" identifier < identifier) >) , identifier) : : identifier < identifier : : (comma_expression "pair<long_long_int_const,_std" (binary_expression "pair<long_long_int_const" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int,_long_long_int>_>_>_>\n        ::\n        _M_emplace_hint_unique<const_std" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "_long_long_int>_>_>_>\n        ::\n        _M_emplace_hint_unique<const_std" (binary_expression "_long_long_int>_>_>_>\n        ::\n        _M_emplace_hint_unique" (binary_expression "_long_long_int>_>_>_" (binary_expression "_long_long_int>_>_" (binary_expression "_long_long_int>_" identifier > identifier) > identifier) > identifier) > (ERROR "::" : :) identifier) < identifier)) : : (binary_expression "piecewise_construct_t&,_std" identifier & (ERROR "," ,) identifier) : : (comma_expression "tuple<long_long_int_const&>,_std" (binary_expression "tuple<long_long_int_const" identifier < identifier) (ERROR "&>" & >) , identifier) : :) (expression_statement "tuple<>_>\n                  ((_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4);" (binary_expression "tuple<>_>\n                  ((_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4)" (binary_expression "tuple<>_" identifier < (ERROR ">" >) identifier) > (parenthesized_expression "((_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4)" ( (parenthesized_expression "(_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4)" ( (ERROR "_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::" (comma_expression "_Rb_tree<long_long_int,_std" (binary_expression "_Rb_tree<long_long_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_long_int_const,_std" (binary_expression "pair<long_long_int_const" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int,_long_long_int>_>,_std" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "_long_long_int>_>,_std" (binary_expression "_long_long_int>_" identifier > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<long_long_int_const,_std" (binary_expression "pair<long_long_int_const" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int,_long_long_int>_>_>,_std" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "_long_long_int>_>_>,_std" (binary_expression "_long_long_int>_>_" (binary_expression "_long_long_int>_" identifier > identifier) > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "less<long_long_int>,_std" (binary_expression "less<long_long_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_long_int_const,_std" (binary_expression "pair<long_long_int_const" identifier < identifier) , identifier) : :) (comma_expression "pair<unsigned_int,_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4" (binary_expression "pair<unsigned_int" identifier < identifier) , (comma_expression "_long_long_int>_>_>_>\n                    *)&local_30,(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4" (binary_expression "_long_long_int>_>_>_>\n                    *)&local_30" (binary_expression "_long_long_int>_>_>_" (binary_expression "_long_long_int>_>_" (binary_expression "_long_long_int>_" identifier > identifier) > identifier) > identifier) > (pointer_expression "*)&local_30" * (ERROR ")" )) (pointer_expression "&local_30" & identifier))) , (comma_expression "(_Base_ptr)lVar14,\n                   (tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4" (cast_expression "(_Base_ptr)lVar14" ( (type_descriptor "_Base_ptr" type_identifier) ) identifier) , (comma_expression "(tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20),ptVar15,\n                   in_stack_ffffffa4" (call_expression "(tuple<long_long_int_const&> *)((ulonglong)lVar14 >> 0x20)" (parenthesized_expression "(tuple<long_long_int_const&> *)" ( (binary_expression "tuple<long_long_int_const&> *" (binary_expression "tuple<long_long_int_const" identifier < identifier) (ERROR "&" &) > (pointer_expression "*" * identifier)) )) (argument_list "((ulonglong)lVar14 >> 0x20)" ( (binary_expression "(ulonglong)lVar14 >> 0x20" (cast_expression "(ulonglong)lVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , (comma_expression "ptVar15,\n                   in_stack_ffffffa4" identifier , identifier))))) )) ))) ;) (expression_statement "p_Var11 = local_40;" (assignment_expression "p_Var11 = local_40" identifier = identifier) ;) }) (else_clause "else {\n        do {\n          while (p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0) {\n            pp_Var2 = &(p_Var11->_M_header)._M_right;\n            p_Var11 = (_Rb_tree_header *)p_Var10;\n            p_Var3 = *pp_Var2;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;\n          }\n          p_Var10 = &p_Var11->_M_header;\n          p_Var3 = (p_Var11->_M_header)._M_left;\n        } while ((p_Var11->_M_header)._M_left != (_Base_ptr)0x0);\nLAB_00063692:\n        if ((p_Var1 == p_Var11) ||\n           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0)) goto LAB_000636a2;\n      }" else (compound_statement "{\n        do {\n          while (p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0) {\n            pp_Var2 = &(p_Var11->_M_header)._M_right;\n            p_Var11 = (_Rb_tree_header *)p_Var10;\n            p_Var3 = *pp_Var2;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;\n          }\n          p_Var10 = &p_Var11->_M_header;\n          p_Var3 = (p_Var11->_M_header)._M_left;\n        } while ((p_Var11->_M_header)._M_left != (_Base_ptr)0x0);\nLAB_00063692:\n        if ((p_Var1 == p_Var11) ||\n           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0)) goto LAB_000636a2;\n      }" { (do_statement "do {\n          while (p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0) {\n            pp_Var2 = &(p_Var11->_M_header)._M_right;\n            p_Var11 = (_Rb_tree_header *)p_Var10;\n            p_Var3 = *pp_Var2;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;\n          }\n          p_Var10 = &p_Var11->_M_header;\n          p_Var3 = (p_Var11->_M_header)._M_left;\n        } while ((p_Var11->_M_header)._M_left != (_Base_ptr)0x0);" do (compound_statement "{\n          while (p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0) {\n            pp_Var2 = &(p_Var11->_M_header)._M_right;\n            p_Var11 = (_Rb_tree_header *)p_Var10;\n            p_Var3 = *pp_Var2;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;\n          }\n          p_Var10 = &p_Var11->_M_header;\n          p_Var3 = (p_Var11->_M_header)._M_left;\n        }" { (while_statement "while (p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0) {\n            pp_Var2 = &(p_Var11->_M_header)._M_right;\n            p_Var11 = (_Rb_tree_header *)p_Var10;\n            p_Var3 = *pp_Var2;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;\n          }" while (parenthesized_expression "(p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0)" ( (comma_expression "p_Var11 = (_Rb_tree_header *)p_Var3,\n                uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0" (assignment_expression "p_Var11 = (_Rb_tree_header *)p_Var3" identifier = (cast_expression "(_Rb_tree_header *)p_Var3" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (comma_expression "uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset),\n                iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0" (assignment_expression "uVar4 = (uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset)" identifier = (call_expression "(uint)(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset)" ( (binary_expression "((_Base_ptr)((int)p_Var11 + 0x10))->_M_color <\n                              (_Rb_tree_color)reloc_offset" (field_expression "((_Base_ptr)((int)p_Var11 + 0x10))->_M_color" (parenthesized_expression "((_Base_ptr)((int)p_Var11 + 0x10))" ( (call_expression "(_Base_ptr)((int)p_Var11 + 0x10)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "((int)p_Var11 + 0x10)" ( (binary_expression "(int)p_Var11 + 0x10" (cast_expression "(int)p_Var11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) < (cast_expression "(_Rb_tree_color)reloc_offset" ( (type_descriptor "_Rb_tree_color" type_identifier) ) identifier)) )))) , (comma_expression "iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_,\n                (SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0" (assignment_expression "iVar12 = (int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_" identifier = (binary_expression "(int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent - reloc_offset._4_4_" (cast_expression "(int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent" (parenthesized_expression "((_Base_ptr)((int)p_Var11 + 0x10))" ( (call_expression "(_Base_ptr)((int)p_Var11 + 0x10)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "((int)p_Var11 + 0x10)" ( (binary_expression "(int)p_Var11 + 0x10" (cast_expression "(int)p_Var11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier)) - (field_expression "reloc_offset._4_4_" identifier . field_identifier))) , (binary_expression "(SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)) != (int)(iVar12 - uVar4) < 0" (parenthesized_expression "(SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4))" ( (binary_expression "SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_) !=\n                SBORROW4(iVar12,uVar4)" (call_expression "SBORROW4((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_)" identifier (argument_list "((int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent,reloc_offset._4_4_)" ( (cast_expression "(int)((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "((_Base_ptr)((int)p_Var11 + 0x10))->_M_parent" (parenthesized_expression "((_Base_ptr)((int)p_Var11 + 0x10))" ( (call_expression "(_Base_ptr)((int)p_Var11 + 0x10)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "((int)p_Var11 + 0x10)" ( (binary_expression "(int)p_Var11 + 0x10" (cast_expression "(int)p_Var11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier)) , (field_expression "reloc_offset._4_4_" identifier . field_identifier) ))) != (call_expression "SBORROW4(iVar12,uVar4)" identifier (argument_list "(iVar12,uVar4)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar12 - uVar4) < 0" (cast_expression "(int)(iVar12 - uVar4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar12 - uVar4)" ( (binary_expression "iVar12 - uVar4" identifier - identifier) ))) < number_literal))))) )) (compound_statement "{\n            pp_Var2 = &(p_Var11->_M_header)._M_right;\n            p_Var11 = (_Rb_tree_header *)p_Var10;\n            p_Var3 = *pp_Var2;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;\n          }" { (expression_statement "pp_Var2 = &(p_Var11->_M_header)._M_right;" (assignment_expression "pp_Var2 = &(p_Var11->_M_header)._M_right" identifier = (pointer_expression "&(p_Var11->_M_header)._M_right" & (field_expression "(p_Var11->_M_header)._M_right" (parenthesized_expression "(p_Var11->_M_header)" ( (field_expression "p_Var11->_M_header" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "p_Var11 = (_Rb_tree_header *)p_Var10;" (assignment_expression "p_Var11 = (_Rb_tree_header *)p_Var10" identifier = (cast_expression "(_Rb_tree_header *)p_Var10" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "p_Var3 = *pp_Var2;" (assignment_expression "p_Var3 = *pp_Var2" identifier = (pointer_expression "*pp_Var2" * identifier)) ;) (if_statement "if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00063692;" if (parenthesized_expression "(*pp_Var2 == (_Base_ptr)0x0)" ( (binary_expression "*pp_Var2 == (_Base_ptr)0x0" (pointer_expression "*pp_Var2" * identifier) == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00063692;" goto statement_identifier ;)) })) (expression_statement "p_Var10 = &p_Var11->_M_header;" (assignment_expression "p_Var10 = &p_Var11->_M_header" identifier = (pointer_expression "&p_Var11->_M_header" & (field_expression "p_Var11->_M_header" identifier -> field_identifier))) ;) (expression_statement "p_Var3 = (p_Var11->_M_header)._M_left;" (assignment_expression "p_Var3 = (p_Var11->_M_header)._M_left" identifier = (field_expression "(p_Var11->_M_header)._M_left" (parenthesized_expression "(p_Var11->_M_header)" ( (field_expression "p_Var11->_M_header" identifier -> field_identifier) )) . field_identifier)) ;) }) while (parenthesized_expression "((p_Var11->_M_header)._M_left != (_Base_ptr)0x0)" ( (binary_expression "(p_Var11->_M_header)._M_left != (_Base_ptr)0x0" (field_expression "(p_Var11->_M_header)._M_left" (parenthesized_expression "(p_Var11->_M_header)" ( (field_expression "p_Var11->_M_header" identifier -> field_identifier) )) . field_identifier) != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (labeled_statement "LAB_00063692:\n        if ((p_Var1 == p_Var11) ||\n           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0)) goto LAB_000636a2;" statement_identifier : (if_statement "if ((p_Var1 == p_Var11) ||\n           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0)) goto LAB_000636a2;" if (parenthesized_expression "((p_Var1 == p_Var11) ||\n           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0))" ( (binary_expression "(p_Var1 == p_Var11) ||\n           (uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0)" (parenthesized_expression "(p_Var1 == p_Var11)" ( (binary_expression "p_Var1 == p_Var11" identifier == identifier) )) || (parenthesized_expression "(uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0)" ( (comma_expression "uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count),\n           iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0" (assignment_expression "uVar4 = (uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count)" identifier = (call_expression "(uint)((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((_Rb_tree_color)reloc_offset < p_Var11->_M_node_count)" ( (binary_expression "(_Rb_tree_color)reloc_offset < p_Var11->_M_node_count" (cast_expression "(_Rb_tree_color)reloc_offset" ( (type_descriptor "_Rb_tree_color" type_identifier) ) identifier) < (field_expression "p_Var11->_M_node_count" identifier -> field_identifier)) )))) , (comma_expression "iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1),\n           (SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0" (assignment_expression "iVar12 = reloc_offset._4_4_ - *(int *)(p_Var11 + 1)" identifier = (binary_expression "reloc_offset._4_4_ - *(int *)(p_Var11 + 1)" (field_expression "reloc_offset._4_4_" identifier . field_identifier) - (pointer_expression "*(int *)(p_Var11 + 1)" * (cast_expression "(int *)(p_Var11 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var11 + 1)" ( (binary_expression "p_Var11 + 1" identifier + number_literal) )))))) , (binary_expression "(SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)) !=\n           (int)(iVar12 - uVar4) < 0" (parenthesized_expression "(SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4))" ( (binary_expression "SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1)) != SBORROW4(iVar12,uVar4)" (call_expression "SBORROW4(reloc_offset._4_4_,*(int *)(p_Var11 + 1))" identifier (argument_list "(reloc_offset._4_4_,*(int *)(p_Var11 + 1))" ( (field_expression "reloc_offset._4_4_" identifier . field_identifier) , (pointer_expression "*(int *)(p_Var11 + 1)" * (cast_expression "(int *)(p_Var11 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var11 + 1)" ( (binary_expression "p_Var11 + 1" identifier + number_literal) )))) ))) != (call_expression "SBORROW4(iVar12,uVar4)" identifier (argument_list "(iVar12,uVar4)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar12 - uVar4) < 0" (cast_expression "(int)(iVar12 - uVar4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar12 - uVar4)" ( (binary_expression "iVar12 - uVar4" identifier - identifier) ))) < number_literal)))) ))) )) (goto_statement "goto LAB_000636a2;" goto statement_identifier ;))) }))) (expression_statement "*(int *)((int)(p_Var11 + 1) + 4) = iVar8;" (assignment_expression "*(int *)((int)(p_Var11 + 1) + 4) = iVar8" (pointer_expression "*(int *)((int)(p_Var11 + 1) + 4)" * (cast_expression "(int *)((int)(p_Var11 + 1) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(p_Var11 + 1) + 4)" ( (binary_expression "(int)(p_Var11 + 1) + 4" (cast_expression "(int)(p_Var11 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_Var11 + 1)" ( (binary_expression "p_Var11 + 1" identifier + number_literal) ))) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)(p_Var11 + 1) + 0xc) = uVar6;" (assignment_expression "*(undefined4 *)((int)(p_Var11 + 1) + 0xc) = uVar6" (pointer_expression "*(undefined4 *)((int)(p_Var11 + 1) + 0xc)" * (cast_expression "(undefined4 *)((int)(p_Var11 + 1) + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(p_Var11 + 1) + 0xc)" ( (binary_expression "(int)(p_Var11 + 1) + 0xc" (cast_expression "(int)(p_Var11 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_Var11 + 1)" ( (binary_expression "p_Var11 + 1" identifier + number_literal) ))) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)(p_Var11 + 1) + 8) = uVar5;" (assignment_expression "*(undefined4 *)((int)(p_Var11 + 1) + 8) = uVar5" (pointer_expression "*(undefined4 *)((int)(p_Var11 + 1) + 8)" * (cast_expression "(undefined4 *)((int)(p_Var11 + 1) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(p_Var11 + 1) + 8)" ( (binary_expression "(int)(p_Var11 + 1) + 8" (cast_expression "(int)(p_Var11 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_Var11 + 1)" ( (binary_expression "p_Var11 + 1" identifier + number_literal) ))) + number_literal) )))) = identifier) ;) (expression_statement "_Var9 = (_Rb_tree_color)reloc_offset;" (assignment_expression "_Var9 = (_Rb_tree_color)reloc_offset" identifier = (cast_expression "(_Rb_tree_color)reloc_offset" ( (type_descriptor "_Rb_tree_color" type_identifier) ) identifier)) ;) (expression_statement "iVar12 = reloc_offset._4_4_;" (assignment_expression "iVar12 = reloc_offset._4_4_" identifier = (field_expression "reloc_offset._4_4_" identifier . field_identifier)) ;) })) (expression_statement "pSVar7 = this->reloc_mapper_;" (assignment_expression "pSVar7 = this->reloc_mapper_" identifier = (field_expression "this->reloc_mapper_" identifier -> field_identifier)) ;) (expression_statement "iVar12 = iVar12 + (uint)(~_S_black < _Var9);" (assignment_expression "iVar12 = iVar12 + (uint)(~_S_black < _Var9)" identifier = (binary_expression "iVar12 + (uint)(~_S_black < _Var9)" identifier + (call_expression "(uint)(~_S_black < _Var9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(~_S_black < _Var9)" ( (binary_expression "~_S_black < _Var9" (unary_expression "~_S_black" ~ identifier) < identifier) ))))) ;) (expression_statement "p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[4];" (assignment_expression "p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[4]" identifier = (subscript_expression "(pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[4]" (field_expression "(pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper" (parenthesized_expression "(pSVar7->super_Elf_reloc_mapper)" ( (field_expression "pSVar7->super_Elf_reloc_mapper" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var13 != Sized_elf_reloc_mapper<64,_true>::do_advance) {\n      (*p_Var13)(pSVar7,_Var9 + _S_black,iVar12);\n      goto LAB_00063595;\n    }" if (parenthesized_expression "(p_Var13 != Sized_elf_reloc_mapper<64,_true>::do_advance)" ( (comma_expression "p_Var13 != Sized_elf_reloc_mapper<64,_true>::do_advance" (binary_expression "p_Var13 != Sized_elf_reloc_mapper<64" identifier != (binary_expression "Sized_elf_reloc_mapper<64" identifier < number_literal)) , (binary_expression "_true>::do_advance" identifier > (ERROR "::" : :) identifier)) )) (compound_statement "{\n      (*p_Var13)(pSVar7,_Var9 + _S_black,iVar12);\n      goto LAB_00063595;\n    }" { (expression_statement "(*p_Var13)(pSVar7,_Var9 + _S_black,iVar12);" (call_expression "(*p_Var13)(pSVar7,_Var9 + _S_black,iVar12)" (parenthesized_expression "(*p_Var13)" ( (pointer_expression "*p_Var13" * identifier) )) (argument_list "(pSVar7,_Var9 + _S_black,iVar12)" ( identifier , (binary_expression "_Var9 + _S_black" identifier + identifier) , identifier ))) ;) (goto_statement "goto LAB_00063595;" goto statement_identifier ;) })) (expression_statement "Track_relocs<64,_true>::advance(&pSVar7->track_relocs_,CONCAT44(iVar12,_Var9 + _S_black));" (comma_expression "Track_relocs<64,_true>::advance(&pSVar7->track_relocs_,CONCAT44(iVar12,_Var9 + _S_black))" (binary_expression "Track_relocs<64" identifier < number_literal) , (binary_expression "_true>::advance(&pSVar7->track_relocs_,CONCAT44(iVar12,_Var9 + _S_black))" identifier > (ERROR "::" : :) (call_expression "advance(&pSVar7->track_relocs_,CONCAT44(iVar12,_Var9 + _S_black))" identifier (argument_list "(&pSVar7->track_relocs_,CONCAT44(iVar12,_Var9 + _S_black))" ( (pointer_expression "&pSVar7->track_relocs_" & (field_expression "pSVar7->track_relocs_" identifier -> field_identifier)) , (call_expression "CONCAT44(iVar12,_Var9 + _S_black)" identifier (argument_list "(iVar12,_Var9 + _S_black)" ( identifier , (binary_expression "_Var9 + _S_black" identifier + identifier) ))) ))))) ;) (expression_statement "pSVar7 = this->reloc_mapper_;" (assignment_expression "pSVar7 = this->reloc_mapper_" identifier = (field_expression "this->reloc_mapper_" identifier -> field_identifier)) ;) (expression_statement "p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3];" (assignment_expression "p_Var13 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3]" identifier = (subscript_expression "(pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3]" (field_expression "(pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper" (parenthesized_expression "(pSVar7->super_Elf_reloc_mapper)" ( (field_expression "pSVar7->super_Elf_reloc_mapper" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var13 == Sized_elf_reloc_mapper<64,_true>::do_next_offset) goto LAB_000635a7;" if (parenthesized_expression "(p_Var13 == Sized_elf_reloc_mapper<64,_true>::do_next_offset)" ( (comma_expression "p_Var13 == Sized_elf_reloc_mapper<64,_true>::do_next_offset" (binary_expression "p_Var13 == Sized_elf_reloc_mapper<64" identifier == (binary_expression "Sized_elf_reloc_mapper<64" identifier < number_literal)) , (binary_expression "_true>::do_next_offset" identifier > (ERROR "::" : :) identifier)) )) (goto_statement "goto LAB_000635a7;" goto statement_identifier ;)) (labeled_statement "LAB_00063635:\n    iVar12 = (*p_Var13)(pSVar7);" statement_identifier : (expression_statement "iVar12 = (*p_Var13)(pSVar7);" (assignment_expression "iVar12 = (*p_Var13)(pSVar7)" identifier = (call_expression "(*p_Var13)(pSVar7)" (parenthesized_expression "(*p_Var13)" ( (pointer_expression "*p_Var13" * identifier) )) (argument_list "(pSVar7)" ( identifier )))) ;)) (expression_statement "lVar14 = CONCAT44(extraout_EDX,iVar12);" (assignment_expression "lVar14 = CONCAT44(extraout_EDX,iVar12)" identifier = (call_expression "CONCAT44(extraout_EDX,iVar12)" identifier (argument_list "(extraout_EDX,iVar12)" ( identifier , identifier )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (ERROR "}" }))
(translation_unit "void FUN_00063560(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  code *pcVar9;\n  longlong lVar10;\n  int local_40;\n  undefined8 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined8 local_24;\n  \n  if (*(int *)(param_1 + 0x54) == 0) {\n    return;\n  }\nLAB_00063595:\n  piVar5 = *(int **)(param_1 + 0x4c);\n  pcVar9 = *(code **)(*piVar5 + 0xc);\n  if (pcVar9 != FUN_00059f80) goto LAB_00063635;\nLAB_000635a7:\n  lVar10 = FUN_00149090(piVar5 + 6);\n  do {\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  } while( true );\n}\n\n" (function_definition "void FUN_00063560(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  code *pcVar9;\n  longlong lVar10;\n  int local_40;\n  undefined8 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined8 local_24;\n  \n  if (*(int *)(param_1 + 0x54) == 0) {\n    return;\n  }\nLAB_00063595:\n  piVar5 = *(int **)(param_1 + 0x4c);\n  pcVar9 = *(code **)(*piVar5 + 0xc);\n  if (pcVar9 != FUN_00059f80) goto LAB_00063635;\nLAB_000635a7:\n  lVar10 = FUN_00149090(piVar5 + 6);\n  do {\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  } while( true );\n}" primitive_type (function_declarator "FUN_00063560(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  code *pcVar9;\n  longlong lVar10;\n  int local_40;\n  undefined8 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined8 local_24;\n  \n  if (*(int *)(param_1 + 0x54) == 0) {\n    return;\n  }\nLAB_00063595:\n  piVar5 = *(int **)(param_1 + 0x4c);\n  pcVar9 = *(code **)(*piVar5 + 0xc);\n  if (pcVar9 != FUN_00059f80) goto LAB_00063635;\nLAB_000635a7:\n  lVar10 = FUN_00149090(piVar5 + 6);\n  do {\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  } while( true );\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (declaration "longlong lVar10;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined8 *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined8 local_24;" type_identifier identifier ;) (if_statement "if (*(int *)(param_1 + 0x54) == 0) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x54) == 0)" ( (binary_expression "*(int *)(param_1 + 0x54) == 0" (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_00063595:\n  piVar5 = *(int **)(param_1 + 0x4c);" statement_identifier : (expression_statement "piVar5 = *(int **)(param_1 + 0x4c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x4c)" identifier = (pointer_expression "*(int **)(param_1 + 0x4c)" * (cast_expression "(int **)(param_1 + 0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;)) (expression_statement "pcVar9 = *(code **)(*piVar5 + 0xc);" (assignment_expression "pcVar9 = *(code **)(*piVar5 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar5 + 0xc)" * (cast_expression "(code **)(*piVar5 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0xc)" ( (binary_expression "*piVar5 + 0xc" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar9 != FUN_00059f80) goto LAB_00063635;" if (parenthesized_expression "(pcVar9 != FUN_00059f80)" ( (binary_expression "pcVar9 != FUN_00059f80" identifier != identifier) )) (goto_statement "goto LAB_00063635;" goto statement_identifier ;)) (labeled_statement "LAB_000635a7:\n  lVar10 = FUN_00149090(piVar5 + 6);" statement_identifier : (expression_statement "lVar10 = FUN_00149090(piVar5 + 6);" (assignment_expression "lVar10 = FUN_00149090(piVar5 + 6)" identifier = (call_expression "FUN_00149090(piVar5 + 6)" identifier (argument_list "(piVar5 + 6)" ( (binary_expression "piVar5 + 6" identifier + number_literal) )))) ;)) (do_statement "do {\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  } while( true );" do (compound_statement "{\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  }" { (if_statement "if (lVar10 == -1) {\n      return;\n    }" if (parenthesized_expression "(lVar10 == -1)" ( (binary_expression "lVar10 == -1" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "local_24 = lVar10;" (assignment_expression "local_24 = lVar10" identifier = identifier) ;) (expression_statement "iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);" (assignment_expression "iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c)" identifier = (call_expression "(**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0x4c) + 0x14))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0x4c) + 0x14)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0x4c) + 0x14)" * (cast_expression "(code **)(**(int **)(param_1 + 0x4c) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0x4c) + 0x14)" ( (binary_expression "**(int **)(param_1 + 0x4c) + 0x14" (pointer_expression "**(int **)(param_1 + 0x4c)" * (pointer_expression "*(int **)(param_1 + 0x4c)" * (cast_expression "(int **)(param_1 + 0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0x4c),lVar10,&local_2c)" ( (pointer_expression "*(int **)(param_1 + 0x4c)" * (cast_expression "(int **)(param_1 + 0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) , identifier , (pointer_expression "&local_2c" & identifier) )))) ;) (expression_statement "uVar4 = local_28;" (assignment_expression "uVar4 = local_28" identifier = identifier) ;) (expression_statement "uVar3 = local_2c;" (assignment_expression "uVar3 = local_2c" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }" { (expression_statement "iVar7 = param_1 + 0x7c;" (assignment_expression "iVar7 = param_1 + 0x7c" identifier = (binary_expression "param_1 + 0x7c" identifier + number_literal)) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x80);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x80)" identifier = (pointer_expression "*(int *)(param_1 + 0x80)" * (cast_expression "(int *)(param_1 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x80) == 0)" ( (binary_expression "*(int *)(param_1 + 0x80) == 0" (pointer_expression "*(int *)(param_1 + 0x80)" * (cast_expression "(int *)(param_1 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }" { (labeled_statement "LAB_000636a2:\n        local_30 = &local_24;" statement_identifier : (expression_statement "local_30 = &local_24;" (assignment_expression "local_30 = &local_24" identifier = (pointer_expression "&local_24" & identifier)) ;)) (expression_statement "FUN_00059250(&local_30);" (call_expression "FUN_00059250(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) (expression_statement "iVar8 = local_40;" (assignment_expression "iVar8 = local_40" identifier = identifier) ;) }) (else_clause "else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }" else (compound_statement "{\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }" { (do_statement "do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);" do (compound_statement "{\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        }" { (while_statement "while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }" while (parenthesized_expression "(iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0)" ( (comma_expression "iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0" (assignment_expression "iVar8 = iVar2" identifier = identifier) , (comma_expression "uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0" (assignment_expression "uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24)" identifier = (call_expression "(uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(iVar8 + 0x10) < (uint)local_24)" ( (binary_expression "*(uint *)(iVar8 + 0x10) < (uint)local_24" (pointer_expression "*(uint *)(iVar8 + 0x10)" * (cast_expression "(uint *)(iVar8 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) < (cast_expression "(uint)local_24" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) , (comma_expression "iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0" (assignment_expression "iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_" identifier = (binary_expression "*(int *)(iVar8 + 0x14) - local_24._4_4_" (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) - (field_expression "local_24._4_4_" identifier . field_identifier))) , (binary_expression "(SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0" (parenthesized_expression "(SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1))" ( (binary_expression "SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)" (call_expression "SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_)" identifier (argument_list "(*(int *)(iVar8 + 0x14),local_24._4_4_)" ( (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) , (field_expression "local_24._4_4_" identifier . field_identifier) ))) != (call_expression "SBORROW4(iVar2,uVar1)" identifier (argument_list "(iVar2,uVar1)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar2 - uVar1) < 0" (cast_expression "(int)(iVar2 - uVar1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - uVar1)" ( (binary_expression "iVar2 - uVar1" identifier - identifier) ))) < number_literal))))) )) (compound_statement "{\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }" { (expression_statement "piVar5 = (int *)(iVar8 + 0xc);" (assignment_expression "piVar5 = (int *)(iVar8 + 0xc)" identifier = (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) ;) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" identifier = identifier) ;) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (if_statement "if (*piVar5 == 0) goto LAB_00063692;" if (parenthesized_expression "(*piVar5 == 0)" ( (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" * identifier) == number_literal) )) (goto_statement "goto LAB_00063692;" goto statement_identifier ;)) })) (expression_statement "iVar7 = iVar8;" (assignment_expression "iVar7 = iVar8" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)(iVar8 + 8);" (assignment_expression "iVar2 = *(int *)(iVar8 + 8)" identifier = (pointer_expression "*(int *)(iVar8 + 8)" * (cast_expression "(int *)(iVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(int *)(iVar8 + 8) != 0)" ( (binary_expression "*(int *)(iVar8 + 8) != 0" (pointer_expression "*(int *)(iVar8 + 8)" * (cast_expression "(int *)(iVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) )))) != number_literal) )) ;) (labeled_statement "LAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;" statement_identifier : (if_statement "if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;" if (parenthesized_expression "((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0))" ( (binary_expression "(param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)" (parenthesized_expression "(param_1 + 0x7c == iVar8)" ( (binary_expression "param_1 + 0x7c == iVar8" (binary_expression "param_1 + 0x7c" identifier + number_literal) == identifier) )) || (parenthesized_expression "(uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)" ( (comma_expression "uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0" (assignment_expression "uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10))" identifier = (call_expression "(uint)((uint)local_24 < *(uint *)(iVar8 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)local_24 < *(uint *)(iVar8 + 0x10))" ( (binary_expression "(uint)local_24 < *(uint *)(iVar8 + 0x10)" (cast_expression "(uint)local_24" ( (type_descriptor "uint" type_identifier) ) identifier) < (pointer_expression "*(uint *)(iVar8 + 0x10)" * (cast_expression "(uint *)(iVar8 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) )))) , (comma_expression "iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0" (assignment_expression "iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14)" identifier = (binary_expression "local_24._4_4_ - *(int *)(iVar8 + 0x14)" (field_expression "local_24._4_4_" identifier . field_identifier) - (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))))) , (binary_expression "(SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0" (parenthesized_expression "(SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1))" ( (binary_expression "SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)" (call_expression "SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14))" identifier (argument_list "(local_24._4_4_,*(int *)(iVar8 + 0x14))" ( (field_expression "local_24._4_4_" identifier . field_identifier) , (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) ))) != (call_expression "SBORROW4(iVar7,uVar1)" identifier (argument_list "(iVar7,uVar1)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar7 - uVar1) < 0" (cast_expression "(int)(iVar7 - uVar1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar1)" ( (binary_expression "iVar7 - uVar1" identifier - identifier) ))) < number_literal)))) ))) )) (goto_statement "goto LAB_000636a2;" goto statement_identifier ;))) }))) (expression_statement "*(int *)(iVar8 + 0x18) = iVar6;" (assignment_expression "*(int *)(iVar8 + 0x18) = iVar6" (pointer_expression "*(int *)(iVar8 + 0x18)" * (cast_expression "(int *)(iVar8 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x20) = uVar4;" (assignment_expression "*(undefined4 *)(iVar8 + 0x20) = uVar4" (pointer_expression "*(undefined4 *)(iVar8 + 0x20)" * (cast_expression "(undefined4 *)(iVar8 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x1c) = uVar3;" (assignment_expression "*(undefined4 *)(iVar8 + 0x1c) = uVar3" (pointer_expression "*(undefined4 *)(iVar8 + 0x1c)" * (cast_expression "(undefined4 *)(iVar8 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "piVar5 = *(int **)(param_1 + 0x4c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x4c)" identifier = (pointer_expression "*(int **)(param_1 + 0x4c)" * (cast_expression "(int **)(param_1 + 0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }" if (parenthesized_expression "(*(code **)(*piVar5 + 0x10) != FUN_00059f50)" ( (binary_expression "*(code **)(*piVar5 + 0x10) != FUN_00059f50" (pointer_expression "*(code **)(*piVar5 + 0x10)" * (cast_expression "(code **)(*piVar5 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x10)" ( (binary_expression "*piVar5 + 0x10" (pointer_expression "*piVar5" * identifier) + number_literal) )))) != identifier) )) (compound_statement "{\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }" { (expression_statement "(**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);" (call_expression "(**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1)" (parenthesized_expression "(**(code **)(*piVar5 + 0x10))" ( (pointer_expression "**(code **)(*piVar5 + 0x10)" * (pointer_expression "*(code **)(*piVar5 + 0x10)" * (cast_expression "(code **)(*piVar5 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x10)" ( (binary_expression "*piVar5 + 0x10" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,local_24 + 1)" ( identifier , (binary_expression "local_24 + 1" identifier + number_literal) ))) ;) (goto_statement "goto LAB_00063595;" goto statement_identifier ;) })) (expression_statement "FUN_00149180(piVar5 + 6,local_24 + 1);" (call_expression "FUN_00149180(piVar5 + 6,local_24 + 1)" identifier (argument_list "(piVar5 + 6,local_24 + 1)" ( (binary_expression "piVar5 + 6" identifier + number_literal) , (binary_expression "local_24 + 1" identifier + number_literal) ))) ;) (expression_statement "piVar5 = *(int **)(param_1 + 0x4c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x4c)" identifier = (pointer_expression "*(int **)(param_1 + 0x4c)" * (cast_expression "(int **)(param_1 + 0x4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "pcVar9 = *(code **)(*piVar5 + 0xc);" (assignment_expression "pcVar9 = *(code **)(*piVar5 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar5 + 0xc)" * (cast_expression "(code **)(*piVar5 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0xc)" ( (binary_expression "*piVar5 + 0xc" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar9 == FUN_00059f80) goto LAB_000635a7;" if (parenthesized_expression "(pcVar9 == FUN_00059f80)" ( (binary_expression "pcVar9 == FUN_00059f80" identifier == identifier) )) (goto_statement "goto LAB_000635a7;" goto statement_identifier ;)) (labeled_statement "LAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);" statement_identifier : (expression_statement "lVar10 = (*pcVar9)(piVar5);" (assignment_expression "lVar10 = (*pcVar9)(piVar5)" identifier = (call_expression "(*pcVar9)(piVar5)" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "(piVar5)" ( identifier )))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (return_statement return ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;)) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;)) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) , (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (field_expression IDENT . field_identifier))) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (field_expression IDENT . field_identifier) ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) , (comma_expression (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT)))) ))) )) (goto_statement goto statement_identifier ;))) }))) (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) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;)) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_00063560(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  code *pcVar9;\n  longlong lVar10;\n  int local_40;\n  undefined8 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined8 local_24;\n  \n  if (*(int *)(param_1 + 0x54) == 0) {\n    return;\n  }\nLAB_00063595:\n  piVar5 = *(int **)(param_1 + 0x4c);\n  pcVar9 = *(code **)(*piVar5 + 0xc);\n  if (pcVar9 != FUN_00059f80) goto LAB_00063635;\nLAB_000635a7:\n  lVar10 = FUN_00149090(piVar5 + 6);\n  do {\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_00063560(int param_1)" (identifier "FUN_00063560") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  code *pcVar9;\n  longlong lVar10;\n  int local_40;\n  undefined8 *local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined8 local_24;\n  \n  if (*(int *)(param_1 + 0x54) == 0) {\n    return;\n  }\nLAB_00063595:\n  piVar5 = *(int **)(param_1 + 0x4c);\n  pcVar9 = *(code **)(*piVar5 + 0xc);\n  if (pcVar9 != FUN_00059f80) goto LAB_00063635;\nLAB_000635a7:\n  lVar10 = FUN_00149090(piVar5 + 6);\n  do {\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  } while( true );\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "code *pcVar9;" (type_identifier "code") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "longlong lVar10;" (type_identifier "longlong") (identifier "lVar10") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "undefined8 *local_30;" (type_identifier "undefined8") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined8 local_24;" (type_identifier "undefined8") (identifier "local_24") (; ";")) (if_statement "if (*(int *)(param_1 + 0x54) == 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x54) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x54) == 0" (pointer_expression "*(int *)(param_1 + 0x54)" (* "*") (cast_expression "(int *)(param_1 + 0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "LAB_00063595:\n  piVar5 = *(int **)(param_1 + 0x4c);" (statement_identifier "LAB_00063595") (: ":") (expression_statement "piVar5 = *(int **)(param_1 + 0x4c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x4c)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(param_1 + 0x4c)" (* "*") (cast_expression "(int **)(param_1 + 0x4c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";"))) (expression_statement "pcVar9 = *(code **)(*piVar5 + 0xc);" (assignment_expression "pcVar9 = *(code **)(*piVar5 + 0xc)" (identifier "pcVar9") (= "=") (pointer_expression "*(code **)(*piVar5 + 0xc)" (* "*") (cast_expression "(code **)(*piVar5 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 0xc)" (( "(") (binary_expression "*piVar5 + 0xc" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pcVar9 != FUN_00059f80) goto LAB_00063635;" (if "if") (parenthesized_expression "(pcVar9 != FUN_00059f80)" (( "(") (binary_expression "pcVar9 != FUN_00059f80" (identifier "pcVar9") (!= "!=") (identifier "FUN_00059f80")) () ")")) (goto_statement "goto LAB_00063635;" (goto "goto") (statement_identifier "LAB_00063635") (; ";"))) (labeled_statement "LAB_000635a7:\n  lVar10 = FUN_00149090(piVar5 + 6);" (statement_identifier "LAB_000635a7") (: ":") (expression_statement "lVar10 = FUN_00149090(piVar5 + 6);" (assignment_expression "lVar10 = FUN_00149090(piVar5 + 6)" (identifier "lVar10") (= "=") (call_expression "FUN_00149090(piVar5 + 6)" (identifier "FUN_00149090") (argument_list "(piVar5 + 6)" (( "(") (binary_expression "piVar5 + 6" (identifier "piVar5") (+ "+") (number_literal "6")) () ")")))) (; ";"))) (do_statement "do {\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  } while( true );" (do "do") (compound_statement "{\n    if (lVar10 == -1) {\n      return;\n    }\n    local_24 = lVar10;\n    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);\n    uVar4 = local_28;\n    uVar3 = local_2c;\n    if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }\n    piVar5 = *(int **)(param_1 + 0x4c);\n    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }\n    FUN_00149180(piVar5 + 6,local_24 + 1);\n    piVar5 = *(int **)(param_1 + 0x4c);\n    pcVar9 = *(code **)(*piVar5 + 0xc);\n    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;\nLAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);\n  }" ({ "{") (if_statement "if (lVar10 == -1) {\n      return;\n    }" (if "if") (parenthesized_expression "(lVar10 == -1)" (( "(") (binary_expression "lVar10 == -1" (identifier "lVar10") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_24 = lVar10;" (assignment_expression "local_24 = lVar10" (identifier "local_24") (= "=") (identifier "lVar10")) (; ";")) (expression_statement "iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);" (assignment_expression "iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(**(int **)(param_1 + 0x4c) + 0x14))\n                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0x4c) + 0x14))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 0x4c) + 0x14)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 0x4c) + 0x14)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 0x4c) + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 0x4c) + 0x14)" (( "(") (binary_expression "**(int **)(param_1 + 0x4c) + 0x14" (pointer_expression "**(int **)(param_1 + 0x4c)" (* "*") (pointer_expression "*(int **)(param_1 + 0x4c)" (* "*") (cast_expression "(int **)(param_1 + 0x4c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 0x4c),lVar10,&local_2c)" (( "(") (pointer_expression "*(int **)(param_1 + 0x4c)" (* "*") (cast_expression "(int **)(param_1 + 0x4c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (, ",") (identifier "lVar10") (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) () ")")))) (; ";")) (expression_statement "uVar4 = local_28;" (assignment_expression "uVar4 = local_28" (identifier "uVar4") (= "=") (identifier "local_28")) (; ";")) (expression_statement "uVar3 = local_2c;" (assignment_expression "uVar3 = local_2c" (identifier "uVar3") (= "=") (identifier "local_2c")) (; ";")) (if_statement "if (iVar6 != 0) {\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar7 = param_1 + 0x7c;\n      iVar2 = *(int *)(param_1 + 0x80);\n      if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }\n      *(int *)(iVar8 + 0x18) = iVar6;\n      *(undefined4 *)(iVar8 + 0x20) = uVar4;\n      *(undefined4 *)(iVar8 + 0x1c) = uVar3;\n    }" ({ "{") (expression_statement "iVar7 = param_1 + 0x7c;" (assignment_expression "iVar7 = param_1 + 0x7c" (identifier "iVar7") (= "=") (binary_expression "param_1 + 0x7c" (identifier "param_1") (+ "+") (number_literal "0x7c"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x80);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x80)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x80)" (* "*") (cast_expression "(int *)(param_1 + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x80) == 0) {\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }\n      else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x80) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x80) == 0" (pointer_expression "*(int *)(param_1 + 0x80)" (* "*") (cast_expression "(int *)(param_1 + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000636a2:\n        local_30 = &local_24;\n        FUN_00059250(&local_30);\n        iVar8 = local_40;\n      }" ({ "{") (labeled_statement "LAB_000636a2:\n        local_30 = &local_24;" (statement_identifier "LAB_000636a2") (: ":") (expression_statement "local_30 = &local_24;" (assignment_expression "local_30 = &local_24" (identifier "local_30") (= "=") (pointer_expression "&local_24" (& "&") (identifier "local_24"))) (; ";"))) (expression_statement "FUN_00059250(&local_30);" (call_expression "FUN_00059250(&local_30)" (identifier "FUN_00059250") (argument_list "(&local_30)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))) (; ";")) (expression_statement "iVar8 = local_40;" (assignment_expression "iVar8 = local_40" (identifier "iVar8") (= "=") (identifier "local_40")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }" (else "else") (compound_statement "{\n        do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);\nLAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;\n      }" ({ "{") (do_statement "do {\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        } while (*(int *)(iVar8 + 8) != 0);" (do "do") (compound_statement "{\n          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }\n          iVar7 = iVar8;\n          iVar2 = *(int *)(iVar8 + 8);\n        }" ({ "{") (while_statement "while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0) {\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }" (while "while") (parenthesized_expression "(iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0)" (( "(") (comma_expression "iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0" (assignment_expression "iVar8 = iVar2" (identifier "iVar8") (= "=") (identifier "iVar2")) (, ",") (comma_expression "uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),\n                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0" (assignment_expression "uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24)" (identifier "uVar1") (= "=") (call_expression "(uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(iVar8 + 0x10) < (uint)local_24)" (( "(") (binary_expression "*(uint *)(iVar8 + 0x10) < (uint)local_24" (pointer_expression "*(uint *)(iVar8 + 0x10)" (* "*") (cast_expression "(uint *)(iVar8 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")")))) (< "<") (cast_expression "(uint)local_24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_24"))) () ")")))) (, ",") (comma_expression "iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,\n                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0" (assignment_expression "iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_" (identifier "iVar2") (= "=") (binary_expression "*(int *)(iVar8 + 0x14) - local_24._4_4_" (pointer_expression "*(int *)(iVar8 + 0x14)" (* "*") (cast_expression "(int *)(iVar8 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))) (- "-") (field_expression "local_24._4_4_" (identifier "local_24") (. ".") (field_identifier "_4_4_")))) (, ",") (binary_expression "(SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=\n                (int)(iVar2 - uVar1) < 0" (parenthesized_expression "(SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1))" (( "(") (binary_expression "SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)" (call_expression "SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_)" (identifier "SBORROW4") (argument_list "(*(int *)(iVar8 + 0x14),local_24._4_4_)" (( "(") (pointer_expression "*(int *)(iVar8 + 0x14)" (* "*") (cast_expression "(int *)(iVar8 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (field_expression "local_24._4_4_" (identifier "local_24") (. ".") (field_identifier "_4_4_")) () ")"))) (!= "!=") (call_expression "SBORROW4(iVar2,uVar1)" (identifier "SBORROW4") (argument_list "(iVar2,uVar1)" (( "(") (identifier "iVar2") (, ",") (identifier "uVar1") () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar2 - uVar1) < 0" (cast_expression "(int)(iVar2 - uVar1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar2 - uVar1)" (( "(") (binary_expression "iVar2 - uVar1" (identifier "iVar2") (- "-") (identifier "uVar1")) () ")"))) (< "<") (number_literal "0")))))) () ")")) (compound_statement "{\n            piVar5 = (int *)(iVar8 + 0xc);\n            iVar8 = iVar7;\n            iVar2 = *piVar5;\n            if (*piVar5 == 0) goto LAB_00063692;\n          }" ({ "{") (expression_statement "piVar5 = (int *)(iVar8 + 0xc);" (assignment_expression "piVar5 = (int *)(iVar8 + 0xc)" (identifier "piVar5") (= "=") (cast_expression "(int *)(iVar8 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xc)" (( "(") (binary_expression "iVar8 + 0xc" (identifier "iVar8") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" (identifier "iVar8") (= "=") (identifier "iVar7")) (; ";")) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" (identifier "iVar2") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (if_statement "if (*piVar5 == 0) goto LAB_00063692;" (if "if") (parenthesized_expression "(*piVar5 == 0)" (( "(") (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00063692;" (goto "goto") (statement_identifier "LAB_00063692") (; ";"))) (} "}"))) (expression_statement "iVar7 = iVar8;" (assignment_expression "iVar7 = iVar8" (identifier "iVar7") (= "=") (identifier "iVar8")) (; ";")) (expression_statement "iVar2 = *(int *)(iVar8 + 8);" (assignment_expression "iVar2 = *(int *)(iVar8 + 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar8 + 8)" (* "*") (cast_expression "(int *)(iVar8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 8)" (( "(") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(int *)(iVar8 + 8) != 0)" (( "(") (binary_expression "*(int *)(iVar8 + 8) != 0" (pointer_expression "*(int *)(iVar8 + 8)" (* "*") (cast_expression "(int *)(iVar8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 8)" (( "(") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_00063692:\n        if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;" (statement_identifier "LAB_00063692") (: ":") (if_statement "if ((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;" (if "if") (parenthesized_expression "((param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0))" (( "(") (binary_expression "(param_1 + 0x7c == iVar8) ||\n           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)" (parenthesized_expression "(param_1 + 0x7c == iVar8)" (( "(") (binary_expression "param_1 + 0x7c == iVar8" (binary_expression "param_1 + 0x7c" (identifier "param_1") (+ "+") (number_literal "0x7c")) (== "==") (identifier "iVar8")) () ")")) (|| "||") (parenthesized_expression "(uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0)" (( "(") (comma_expression "uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),\n           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0" (assignment_expression "uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10))" (identifier "uVar1") (= "=") (call_expression "(uint)((uint)local_24 < *(uint *)(iVar8 + 0x10))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)local_24 < *(uint *)(iVar8 + 0x10))" (( "(") (binary_expression "(uint)local_24 < *(uint *)(iVar8 + 0x10)" (cast_expression "(uint)local_24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_24")) (< "<") (pointer_expression "*(uint *)(iVar8 + 0x10)" (* "*") (cast_expression "(uint *)(iVar8 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (, ",") (comma_expression "iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),\n           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0" (assignment_expression "iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14)" (identifier "iVar7") (= "=") (binary_expression "local_24._4_4_ - *(int *)(iVar8 + 0x14)" (field_expression "local_24._4_4_" (identifier "local_24") (. ".") (field_identifier "_4_4_")) (- "-") (pointer_expression "*(int *)(iVar8 + 0x14)" (* "*") (cast_expression "(int *)(iVar8 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))))) (, ",") (binary_expression "(SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=\n           (int)(iVar7 - uVar1) < 0" (parenthesized_expression "(SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1))" (( "(") (binary_expression "SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)" (call_expression "SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14))" (identifier "SBORROW4") (argument_list "(local_24._4_4_,*(int *)(iVar8 + 0x14))" (( "(") (field_expression "local_24._4_4_" (identifier "local_24") (. ".") (field_identifier "_4_4_")) (, ",") (pointer_expression "*(int *)(iVar8 + 0x14)" (* "*") (cast_expression "(int *)(iVar8 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))) () ")"))) (!= "!=") (call_expression "SBORROW4(iVar7,uVar1)" (identifier "SBORROW4") (argument_list "(iVar7,uVar1)" (( "(") (identifier "iVar7") (, ",") (identifier "uVar1") () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar7 - uVar1) < 0" (cast_expression "(int)(iVar7 - uVar1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar7 - uVar1)" (( "(") (binary_expression "iVar7 - uVar1" (identifier "iVar7") (- "-") (identifier "uVar1")) () ")"))) (< "<") (number_literal "0"))))) () ")"))) () ")")) (goto_statement "goto LAB_000636a2;" (goto "goto") (statement_identifier "LAB_000636a2") (; ";")))) (} "}")))) (expression_statement "*(int *)(iVar8 + 0x18) = iVar6;" (assignment_expression "*(int *)(iVar8 + 0x18) = iVar6" (pointer_expression "*(int *)(iVar8 + 0x18)" (* "*") (cast_expression "(int *)(iVar8 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x18)" (( "(") (binary_expression "iVar8 + 0x18" (identifier "iVar8") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x20) = uVar4;" (assignment_expression "*(undefined4 *)(iVar8 + 0x20) = uVar4" (pointer_expression "*(undefined4 *)(iVar8 + 0x20)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x20)" (( "(") (binary_expression "iVar8 + 0x20" (identifier "iVar8") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x1c) = uVar3;" (assignment_expression "*(undefined4 *)(iVar8 + 0x1c) = uVar3" (pointer_expression "*(undefined4 *)(iVar8 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x1c)" (( "(") (binary_expression "iVar8 + 0x1c" (identifier "iVar8") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (expression_statement "piVar5 = *(int **)(param_1 + 0x4c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x4c)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(param_1 + 0x4c)" (* "*") (cast_expression "(int **)(param_1 + 0x4c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (if_statement "if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }" (if "if") (parenthesized_expression "(*(code **)(*piVar5 + 0x10) != FUN_00059f50)" (( "(") (binary_expression "*(code **)(*piVar5 + 0x10) != FUN_00059f50" (pointer_expression "*(code **)(*piVar5 + 0x10)" (* "*") (cast_expression "(code **)(*piVar5 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 0x10)" (( "(") (binary_expression "*piVar5 + 0x10" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (identifier "FUN_00059f50")) () ")")) (compound_statement "{\n      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);\n      goto LAB_00063595;\n    }" ({ "{") (expression_statement "(**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);" (call_expression "(**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1)" (parenthesized_expression "(**(code **)(*piVar5 + 0x10))" (( "(") (pointer_expression "**(code **)(*piVar5 + 0x10)" (* "*") (pointer_expression "*(code **)(*piVar5 + 0x10)" (* "*") (cast_expression "(code **)(*piVar5 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 0x10)" (( "(") (binary_expression "*piVar5 + 0x10" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(piVar5,local_24 + 1)" (( "(") (identifier "piVar5") (, ",") (binary_expression "local_24 + 1" (identifier "local_24") (+ "+") (number_literal "1")) () ")"))) (; ";")) (goto_statement "goto LAB_00063595;" (goto "goto") (statement_identifier "LAB_00063595") (; ";")) (} "}"))) (expression_statement "FUN_00149180(piVar5 + 6,local_24 + 1);" (call_expression "FUN_00149180(piVar5 + 6,local_24 + 1)" (identifier "FUN_00149180") (argument_list "(piVar5 + 6,local_24 + 1)" (( "(") (binary_expression "piVar5 + 6" (identifier "piVar5") (+ "+") (number_literal "6")) (, ",") (binary_expression "local_24 + 1" (identifier "local_24") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "piVar5 = *(int **)(param_1 + 0x4c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x4c)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(param_1 + 0x4c)" (* "*") (cast_expression "(int **)(param_1 + 0x4c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (expression_statement "pcVar9 = *(code **)(*piVar5 + 0xc);" (assignment_expression "pcVar9 = *(code **)(*piVar5 + 0xc)" (identifier "pcVar9") (= "=") (pointer_expression "*(code **)(*piVar5 + 0xc)" (* "*") (cast_expression "(code **)(*piVar5 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 0xc)" (( "(") (binary_expression "*piVar5 + 0xc" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pcVar9 == FUN_00059f80) goto LAB_000635a7;" (if "if") (parenthesized_expression "(pcVar9 == FUN_00059f80)" (( "(") (binary_expression "pcVar9 == FUN_00059f80" (identifier "pcVar9") (== "==") (identifier "FUN_00059f80")) () ")")) (goto_statement "goto LAB_000635a7;" (goto "goto") (statement_identifier "LAB_000635a7") (; ";"))) (labeled_statement "LAB_00063635:\n    lVar10 = (*pcVar9)(piVar5);" (statement_identifier "LAB_00063635") (: ":") (expression_statement "lVar10 = (*pcVar9)(piVar5);" (assignment_expression "lVar10 = (*pcVar9)(piVar5)" (identifier "lVar10") (= "=") (call_expression "(*pcVar9)(piVar5)" (parenthesized_expression "(*pcVar9)" (( "(") (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) () ")")) (argument_list "(piVar5)" (( "(") (identifier "piVar5") () ")")))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: void read_relocs(Sized_dwarf_line_info<64,_true> * this) */

void __thiscall
gold::Sized_dwarf_line_info<64,var_4>::read_relocs(Sized_dwarf_line_info<64,var_4> *this)

{
  type_5 *var_20;
  type_1 *pp_Var2;
  type_1 var_11;
  type_2 var_19;
  type_3 uVar5;
  type_3 uVar6;
  var_1<64,var_4> *pSVar7;
  int var_10;
  type_4 var_22;
  type_1 p_Var10;
  type_5 *var_21;
  int var_18;
  type_6 *var_3;
  type_3 extraout_EDX;
  type_7 var_8;
  var_2<> *ptVar15;
  type_8 *in_stack_ffffffa4;
  type_5 *local_40;
  type_9 *local_30;
  type_9 var_9;
  type_9 reloc_offset;
  
  var_20 = &(this->reloc_map_)._M_t._M_impl.super__Rb_tree_header;
  if (this->symtab_buffer_ == (type_10 *)0x0) {
    return;
  }
LAB_00063595:
  pSVar7 = this->reloc_mapper_;
  var_3 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3];
  if (var_3 != var_1<64,var_4>::var_5) goto LAB_00063635;
LAB_000635a7:
  var_8 = var_6<64,var_4>::var_7(&pSVar7->track_relocs_);
  do {
    if (var_8 == -1) {
      return;
    }
    ptVar15 = (var_2<> *)&var_9;
    reloc_offset = var_8;
    var_10 = (*(this->reloc_mapper_->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[5])
                      (this->reloc_mapper_);
    uVar6 = var_9._4_4_;
    uVar5 = (type_3)var_9;
    var_22 = (type_4)reloc_offset;
    var_18 = reloc_offset._4_4_;
    if (var_10 != 0) {
      var_11 = (this->reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
      p_Var10 = &var_20->_M_header;
      if (var_11 == (type_1)0x0) {
LAB_000636a2:
        local_30 = &reloc_offset;
        std::
        _Rb_tree<long_long_int,_std::var_13<var_16,_std::var_13<var_14,var_15>var_12>,_std::_Select1st<std::var_13<var_16,_std::var_13<var_14,var_15>var_12>var_12>,_std::less<long_long_int>,_std::allocator<std::var_13<var_16,_std::var_13<var_14,var_15>var_12>var_12>var_12>
        ::
        _M_emplace_hint_unique<const_std::type_8&,_std::var_2<var_16&>,_std::var_2<>var_12>
                  ((_Rb_tree<long_long_int,_std::var_13<var_16,_std::var_13<var_14,var_15>var_12>,_std::_Select1st<std::var_13<var_16,_std::var_13<var_14,var_15>var_12>var_12>,_std::less<long_long_int>,_std::allocator<std::var_13<var_16,_std::var_13<var_14,var_15>var_12>var_12>var_12>
                    *)&local_30,(type_1)var_8,
                   (var_2<var_16&> *)((type_11)var_8 >> 0x20),ptVar15,
                   in_stack_ffffffa4);
        var_21 = local_40;
      }
      else {
        do {
          while (var_21 = (type_5 *)var_11,
                var_19 = (type_2)(((type_1)((int)var_21 + 0x10))->_M_color <
                              (type_4)reloc_offset),
                var_18 = (int)((type_1)((int)var_21 + 0x10))->_M_parent - reloc_offset._4_4_,
                (var_17((int)((type_1)((int)var_21 + 0x10))->_M_parent,reloc_offset._4_4_) !=
                var_17(var_18,var_19)) != (int)(var_18 - var_19) < 0) {
            pp_Var2 = &(var_21->_M_header)._M_right;
            var_21 = (type_5 *)p_Var10;
            var_11 = *pp_Var2;
            if (*pp_Var2 == (type_1)0x0) goto LAB_00063692;
          }
          p_Var10 = &var_21->_M_header;
          var_11 = (var_21->_M_header)._M_left;
        } while ((var_21->_M_header)._M_left != (type_1)0x0);
LAB_00063692:
        if ((var_20 == var_21) ||
           (var_19 = (type_2)((type_4)reloc_offset < var_21->_M_node_count),
           var_18 = reloc_offset._4_4_ - *(int *)(var_21 + 1),
           (var_17(reloc_offset._4_4_,*(int *)(var_21 + 1)) != var_17(var_18,var_19)) !=
           (int)(var_18 - var_19) < 0)) goto LAB_000636a2;
      }
      *(int *)((int)(var_21 + 1) + 4) = var_10;
      *(type_3 *)((int)(var_21 + 1) + 0xc) = uVar6;
      *(type_3 *)((int)(var_21 + 1) + 8) = uVar5;
      var_22 = (type_4)reloc_offset;
      var_18 = reloc_offset._4_4_;
    }
    pSVar7 = this->reloc_mapper_;
    var_18 = var_18 + (type_2)(~var_24 < var_22);
    var_3 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[4];
    if (var_3 != var_1<64,var_4>::var_23) {
      (*var_3)(pSVar7,var_22 + var_24,var_18);
      goto LAB_00063595;
    }
    var_6<64,var_4>::var_25(&pSVar7->track_relocs_,var_26(var_18,var_22 + var_24));
    pSVar7 = this->reloc_mapper_;
    var_3 = (pSVar7->super_Elf_reloc_mapper)._vptr_Elf_reloc_mapper[3];
    if (var_3 == var_1<64,var_4>::var_5) goto LAB_000635a7;
LAB_00063635:
    var_18 = (*var_3)(pSVar7);
    var_8 = var_26(extraout_EDX,var_18);
  } while( true );
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  code *pcVar9;
  longlong lVar10;
  int local_40;
  undefined8 *local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined8 local_24;
  
  if (*(int *)(param_1 + 0x54) == 0) {
    return;
  }
LAB_00063595:
  piVar5 = *(int **)(param_1 + 0x4c);
  pcVar9 = *(code **)(*piVar5 + 0xc);
  if (pcVar9 != FUN_00059f80) goto LAB_00063635;
LAB_000635a7:
  lVar10 = FUN_00149090(piVar5 + 6);
  do {
    if (lVar10 == -1) {
      return;
    }
    local_24 = lVar10;
    iVar6 = (**(code **)(**(int **)(param_1 + 0x4c) + 0x14))
                      (*(int **)(param_1 + 0x4c),lVar10,&local_2c);
    uVar4 = local_28;
    uVar3 = local_2c;
    if (iVar6 != 0) {
      iVar7 = param_1 + 0x7c;
      iVar2 = *(int *)(param_1 + 0x80);
      if (*(int *)(param_1 + 0x80) == 0) {
LAB_000636a2:
        local_30 = &local_24;
        FUN_00059250(&local_30);
        iVar8 = local_40;
      }
      else {
        do {
          while (iVar8 = iVar2, uVar1 = (uint)(*(uint *)(iVar8 + 0x10) < (uint)local_24),
                iVar2 = *(int *)(iVar8 + 0x14) - local_24._4_4_,
                (SBORROW4(*(int *)(iVar8 + 0x14),local_24._4_4_) != SBORROW4(iVar2,uVar1)) !=
                (int)(iVar2 - uVar1) < 0) {
            piVar5 = (int *)(iVar8 + 0xc);
            iVar8 = iVar7;
            iVar2 = *piVar5;
            if (*piVar5 == 0) goto LAB_00063692;
          }
          iVar7 = iVar8;
          iVar2 = *(int *)(iVar8 + 8);
        } while (*(int *)(iVar8 + 8) != 0);
LAB_00063692:
        if ((param_1 + 0x7c == iVar8) ||
           (uVar1 = (uint)((uint)local_24 < *(uint *)(iVar8 + 0x10)),
           iVar7 = local_24._4_4_ - *(int *)(iVar8 + 0x14),
           (SBORROW4(local_24._4_4_,*(int *)(iVar8 + 0x14)) != SBORROW4(iVar7,uVar1)) !=
           (int)(iVar7 - uVar1) < 0)) goto LAB_000636a2;
      }
      *(int *)(iVar8 + 0x18) = iVar6;
      *(undefined4 *)(iVar8 + 0x20) = uVar4;
      *(undefined4 *)(iVar8 + 0x1c) = uVar3;
    }
    piVar5 = *(int **)(param_1 + 0x4c);
    if (*(code **)(*piVar5 + 0x10) != FUN_00059f50) {
      (**(code **)(*piVar5 + 0x10))(piVar5,local_24 + 1);
      goto LAB_00063595;
    }
    FUN_00149180(piVar5 + 6,local_24 + 1);
    piVar5 = *(int **)(param_1 + 0x4c);
    pcVar9 = *(code **)(*piVar5 + 0xc);
    if (pcVar9 == FUN_00059f80) goto LAB_000635a7;
LAB_00063635:
    lVar10 = (*pcVar9)(piVar5);
  } while( true );
}

