
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* DWARF original prototype: bool get_output_offset(Object_merge_map * this, uint shndx,
   section_offset_type input_offset, section_offset_type * output_offset) */

bool __thiscall
gold::Object_merge_map::get_output_offset
          (Object_merge_map *this,uint shndx,section_offset_type input_offset,
          section_offset_type *output_offset)

{
  uint uVar1;
  int iVar2;
  pointer ppVar3;
  section_offset_type sVar4;
  int iVar5;
  pointer ppVar6;
  section_size_type sVar7;
  section_offset_type sVar8;
  section_size_type sVar9;
  Input_merge_map *pIVar10;
  pointer pIVar11;
  pointer pIVar12;
  pointer pIVar13;
  
  if (shndx == 0xffffffff) {
    get_input_merge_map(this,0xffffffff);
LAB_0028cd98:
    (*(code *)PTR_do_gold_unreachable_004323c4)
              (PTR_s__0043226c + 0x31a0,0xa1,PTR_s__0043226c + 0x35a8);
    return false;
  }
  ppVar6 = (this->section_merge_maps_).
           super__Vector_base<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>,_std::allocator<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>_>_>
           ._M_impl._M_start;
  ppVar3 = (this->section_merge_maps_).
           super__Vector_base<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>,_std::allocator<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>_>_>
           ._M_impl._M_finish;
  if (ppVar3 != ppVar6) {
    uVar1 = ppVar6->first;
    while (shndx != uVar1) {
      ppVar6 = ppVar6 + 1;
      if (ppVar3 == ppVar6) {
        return false;
      }
      uVar1 = ppVar6->first;
    }
    pIVar10 = ppVar6->second;
    if (pIVar10 != (Input_merge_map *)0x0) {
      pIVar13 = (pIVar10->entries).
                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>
                ._M_impl._M_finish;
      pIVar11 = (pIVar10->entries).
                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>
                ._M_impl._M_start;
      iVar2 = ((int)pIVar13 - (int)pIVar11 >> 2) * -0x55555555;
      pIVar12 = pIVar11;
      if (pIVar10->sorted == false) {
        if (pIVar11 != pIVar13) {
          std::
          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>
                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);
          if ((int)pIVar13 - (int)pIVar11 < 0xc1) {
            std::
            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>
                      (pIVar11,pIVar13,0);
          }
          else {
            pIVar12 = pIVar11 + 0x10;
            std::
            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>
                      (pIVar11,pIVar12,0);
            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {
              iVar5 = pIVar12->input_offset;
              iVar2 = pIVar12[-1].input_offset;
              sVar9 = pIVar12->length;
              sVar8 = pIVar12->output_offset;
              pIVar11 = pIVar12;
              while (iVar5 < iVar2) {
                iVar2 = pIVar11[-2].input_offset;
                sVar7 = pIVar11[-1].length;
                sVar4 = pIVar11[-1].output_offset;
                pIVar11->input_offset = pIVar11[-1].input_offset;
                pIVar11->length = sVar7;
                pIVar11->output_offset = sVar4;
                pIVar11 = pIVar11 + -1;
              }
              pIVar11->input_offset = iVar5;
              pIVar11->length = sVar9;
              pIVar11->output_offset = sVar8;
            }
          }
          pIVar11 = (pIVar10->entries).
                    super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>
                    ._M_impl._M_start;
          iVar2 = ((int)(pIVar10->entries).
                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>
                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;
        }
        pIVar10->sorted = true;
        pIVar12 = pIVar11;
      }
      for (; 0 < iVar2; iVar2 = (iVar2 - iVar5) + -1) {
        while( true ) {
          iVar5 = iVar2 >> 1;
          if (pIVar11[iVar5].input_offset <= input_offset) break;
          iVar2 = iVar5;
          if (iVar5 == 0) goto LAB_0028cbe4;
        }
        pIVar11 = pIVar11 + iVar5 + 1;
      }
LAB_0028cbe4:
      if (pIVar11 != pIVar12) {
        if (input_offset < pIVar11[-1].input_offset) goto LAB_0028cd98;
        if (input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length) {
          iVar2 = pIVar11[-1].output_offset;
          *output_offset = iVar2;
          if (iVar2 == -1) {
            return true;
          }
          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;
          return true;
        }
      }
    }
  }
  return false;
}



/* gold::Object_merge_map::get_output_offset(unsigned int, int, int*) */

undefined4 __thiscall
gold::Object_merge_map::get_output_offset
          (Object_merge_map *this,uint param_1,int param_2,int *param_3)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  uint *puVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  int *piVar9;
  int *piVar10;
  
  if (param_1 == 0xffffffff) {
    FUN_0028bb10();
LAB_0028cd98:
    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)
                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);
    return uVar3;
  }
  puVar5 = *(uint **)this;
  if (*(uint **)(this + 4) != puVar5) {
    uVar1 = *puVar5;
    while (param_1 != uVar1) {
      puVar5 = puVar5 + 2;
      if (*(uint **)(this + 4) == puVar5) {
        return 0;
      }
      uVar1 = *puVar5;
    }
    uVar1 = puVar5[1];
    if (uVar1 != 0) {
      piVar10 = *(int **)(uVar1 + 8);
      piVar8 = *(int **)(uVar1 + 4);
      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;
      piVar9 = piVar8;
      if (*(char *)(uVar1 + 0x10) == '\0') {
        if (piVar8 != piVar10) {
          std::
          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>
                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);
          if ((int)piVar10 - (int)piVar8 < 0xc1) {
            std::
            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>
                      (piVar8,piVar10,0);
          }
          else {
            piVar9 = piVar8 + 0x30;
            std::
            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>
                      (piVar8,piVar9,0);
            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {
              iVar4 = *piVar9;
              iVar2 = piVar9[-3];
              iVar7 = piVar9[1];
              iVar6 = piVar9[2];
              piVar8 = piVar9;
              while (iVar4 < iVar2) {
                iVar2 = piVar8[-6];
                *piVar8 = piVar8[-3];
                piVar8[1] = piVar8[-2];
                piVar8[2] = piVar8[-1];
                piVar8 = piVar8 + -3;
              }
              *piVar8 = iVar4;
              piVar8[1] = iVar7;
              piVar8[2] = iVar6;
            }
          }
          piVar8 = *(int **)(uVar1 + 4);
          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;
        }
        *(undefined1 *)(uVar1 + 0x10) = 1;
        piVar9 = piVar8;
      }
      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {
        while( true ) {
          iVar4 = iVar2 >> 1;
          if (piVar8[iVar4 * 3] <= param_2) break;
          iVar2 = iVar4;
          if (iVar4 == 0) goto LAB_0028cbe4;
        }
        piVar8 = piVar8 + iVar4 * 3 + 3;
      }
LAB_0028cbe4:
      if (piVar8 != piVar9) {
        if (param_2 < piVar8[-3]) goto LAB_0028cd98;
        if (param_2 - piVar8[-3] < piVar8[-2]) {
          iVar2 = piVar8[-1];
          *param_3 = iVar2;
          if (iVar2 == -1) {
            return 1;
          }
          *param_3 = (param_2 - piVar8[-3]) + iVar2;
          return 1;
        }
      }
    }
  }
  return 0;
}


lui gp,0x1b
addiu gp,gp,-0x28fc
addu gp,gp,t9
addiu sp,sp,-0x38
li v0,-0x1
sw gp,0x10(sp)
sw ra,0x34(sp)
sw s5,0x30(sp)
sw s4,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
beq a1,v0,0x0028cd88
_sw s0,0x1c(sp)
or s0,a2,zero
lw a2,0x0(a0)
lw a0,0x4(a0)
beq a0,a2,0x0028cb44
_nop
lw v0,0x0(a2)
beq a1,v0,0x0028cb6c
_or s1,a3,zero
b 0x0028cb3c
_addiu v0,a2,0x8
addiu v0,v0,0x8
lw v1,-0x8(v0)
beq a1,v1,0x0028cb6c
_nop
bne a0,v0,0x0028cb2c
_or a2,v0,zero
lw ra,0x34(sp)
or v0,zero,zero
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x38
lw s3,0x4(a2)
beq s3,zero,0x0028cb44
_lui v1,0xaaaa
lw s5,0x8(s3)
lw s4,0x4(s3)
ori v1,v1,0xaaab
lbu a0,0x10(s3)
subu s2,s5,s4
sra v0,s2,0x2
mul v0,v0,v1
beq a0,zero,0x0028cc50
_or v1,v0,zero
b 0x0028cbb0
_or a2,s4,zero
subu v1,v1,a1
addiu a2,v0,0xc
addiu v1,v1,-0x1
blez v1,0x0028cbe4
_nop
sra a1,v1,0x1
sll v0,a1,0x1
addu v0,v0,a1
sll v0,v0,0x2
addu v0,a2,v0
lw a0,0x0(v0)
slt a0,s0,a0
beq a0,zero,0x0028cba4
_nop
bne a1,zero,0x0028cbb8
_or v1,a1,zero
beq a2,s4,0x0028cb48
_lw ra,0x34(sp)
lw v0,-0xc(a2)
slt v1,s0,v0
bne v1,zero,0x0028cd98
_subu v0,s0,v0
lw v1,-0x8(a2)
slt v0,v0,v1
beq v0,zero,0x0028cb48
_li v0,-0x1
lw v1,-0x4(a2)
beq v1,v0,0x0028cd3c
_sw v1,0x0(s1)
lw a0,-0xc(a2)
li v0,0x1
lw ra,0x34(sp)
lw s5,0x30(sp)
subu s0,s0,a0
lw s4,0x2c(sp)
lw s3,0x28(sp)
addu s0,s0,v1
lw s2,0x24(sp)
sw s0,0x0(s1)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x38
beq s4,s5,0x0028cd30
_lw t9,-0x4654(gp)
li v1,0x1f
clz v0,v0
or a3,zero,zero
subu v0,v1,v0
sll a3,a3,0x18
sll a2,v0,0x1
or a1,s5,zero
or a0,s4,zero
bal 0x002913a0
_slti s2,s2,0xc1
lw gp,0x10(sp)
bne s2,zero,0x0028cd64
_or a2,zero,zero
addiu s2,s4,0xc0
lw t9,-0x4650(gp)
sll a2,a2,0x18
or a1,s2,zero
bal 0x0028eba4
_or a0,s4,zero
or a1,s2,zero
beq s2,s5,0x0028cd14
_lw gp,0x10(sp)
lw t1,0x0(a1)
addiu v0,a1,-0xc
lw v1,-0xc(a1)
lw t3,0x4(a1)
slt v1,t1,v1
bne v1,zero,0x0028ccd8
_lw t2,0x8(a1)
b 0x0028cd80
_or v0,a1,zero
or v0,t0,zero
lw v1,-0xc(v0)
addiu t0,v0,-0xc
lw a3,0x0(v0)
lw a2,0x4(v0)
lw a0,0x8(v0)
slt v1,t1,v1
sw a3,0xc(v0)
sw a2,0x10(v0)
bne v1,zero,0x0028ccd4
_sw a0,0x14(v0)
addiu a1,a1,0xc
sw t1,0x0(v0)
sw t3,0x4(v0)
bne s5,a1,0x0028ccb0
_sw t2,0x8(v0)
lw s4,0x4(s3)
lui v0,0xaaaa
lw v1,0x8(s3)
ori v0,v0,0xaaab
subu v1,v1,s4
sra v1,v1,0x2
mul v1,v1,v0
li v0,0x1
b 0x0028cb9c
_sb v0,0x10(s3)
lw ra,0x34(sp)
li v0,0x1
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x38
lw t9,-0x4650(gp)
sll a2,a2,0x18
or a1,s5,zero
bal 0x0028eba4
_or a0,s4,zero
b 0x0028cd14
_lw gp,0x10(sp)
b 0x0028cd04
_addiu a1,a1,0xc
lw t9,-0x4680(gp)
addiu t9,t9,-0x44f0
bal 0x0028bb10
_nop
lw a2,-0x7f64(gp)
li a1,0xa1
lw a0,-0x7f64(gp)
lw t9,-0x7e0c(gp)
addiu a2,a2,0x35a8
jalr t9
_addiu a0,a0,0x31a0
(translation_unit "/* gold::Object_merge_map::get_output_offset(unsigned int, int, int*) */\n\nundefined4 __thiscall\ngold::Object_merge_map::get_output_offset\n          (Object_merge_map *this,uint param_1,int param_2,int *param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  \n  if (param_1 == 0xffffffff) {\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }\n  puVar5 = *(uint **)this;\n  if (*(uint **)(this + 4) != puVar5) {\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }\n  return 0;\n}\n\n" comment (function_definition "undefined4 __thiscall\ngold::Object_merge_map::get_output_offset\n          (Object_merge_map *this,uint param_1,int param_2,int *param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  \n  if (param_1 == 0xffffffff) {\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }\n  puVar5 = *(uint **)this;\n  if (*(uint **)(this + 4) != puVar5) {\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }\n  return 0;\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Object_merge_map::" identifier : : identifier : :) (function_declarator "get_output_offset\n          (Object_merge_map *this,uint param_1,int param_2,int *param_3)" identifier (parameter_list "(Object_merge_map *this,uint param_1,int param_2,int *param_3)" ( (parameter_declaration "Object_merge_map *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  \n  if (param_1 == 0xffffffff) {\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }\n  puVar5 = *(uint **)this;\n  if (*(uint **)(this + 4) != puVar5) {\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (if_statement "if (param_1 == 0xffffffff) {\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }" if (parenthesized_expression "(param_1 == 0xffffffff)" ( (binary_expression "param_1 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }" { (expression_statement "FUN_0028bb10();" (call_expression "FUN_0028bb10()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);" statement_identifier : (expression_statement "uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);" (assignment_expression "uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8)" identifier = (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8)" ( (binary_expression "PTR_DAT_0043226c + 0x31a0" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0043226c + 0x35a8" identifier + number_literal) )))) ;)) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "puVar5 = *(uint **)this;" (assignment_expression "puVar5 = *(uint **)this" identifier = (pointer_expression "*(uint **)this" * (cast_expression "(uint **)this" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (*(uint **)(this + 4) != puVar5) {\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(*(uint **)(this + 4) != puVar5)" ( (binary_expression "*(uint **)(this + 4) != puVar5" (pointer_expression "*(uint **)(this + 4)" * (cast_expression "(uint **)(this + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }" { (expression_statement "uVar1 = *puVar5;" (assignment_expression "uVar1 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (while_statement "while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }" while (parenthesized_expression "(param_1 != uVar1)" ( (binary_expression "param_1 != uVar1" identifier != identifier) )) (compound_statement "{\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }" { (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (if_statement "if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }" if (parenthesized_expression "(*(uint **)(this + 4) == puVar5)" ( (binary_expression "*(uint **)(this + 4) == puVar5" (pointer_expression "*(uint **)(this + 4)" * (cast_expression "(uint **)(this + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar1 = *puVar5;" (assignment_expression "uVar1 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) })) (expression_statement "uVar1 = puVar5[1];" (assignment_expression "uVar1 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (if_statement "if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }" { (expression_statement "piVar10 = *(int **)(uVar1 + 8);" (assignment_expression "piVar10 = *(int **)(uVar1 + 8)" identifier = (pointer_expression "*(int **)(uVar1 + 8)" * (cast_expression "(int **)(uVar1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar1 + 8)" ( (binary_expression "uVar1 + 8" identifier + number_literal) ))))) ;) (expression_statement "piVar8 = *(int **)(uVar1 + 4);" (assignment_expression "piVar8 = *(int **)(uVar1 + 4)" identifier = (pointer_expression "*(int **)(uVar1 + 4)" * (cast_expression "(int **)(uVar1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar1 + 4)" ( (binary_expression "uVar1 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;" (assignment_expression "iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555" identifier = (binary_expression "((int)piVar10 - (int)piVar8 >> 2) * -0x55555555" (parenthesized_expression "((int)piVar10 - (int)piVar8 >> 2)" ( (binary_expression "(int)piVar10 - (int)piVar8 >> 2" (binary_expression "(int)piVar10 - (int)piVar8" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" identifier = identifier) ;) (if_statement "if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }" if (parenthesized_expression "(*(char *)(uVar1 + 0x10) == '\0')" ( (binary_expression "*(char *)(uVar1 + 0x10) == '\0'" (pointer_expression "*(char *)(uVar1 + 0x10)" * (cast_expression "(char *)(uVar1 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + 0x10)" ( (binary_expression "uVar1 + 0x10" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }" { (if_statement "if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }" if (parenthesized_expression "(piVar8 != piVar10)" ( (binary_expression "piVar8 != piVar10" identifier != identifier) )) (compound_statement "{\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }" { (labeled_statement "std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" statement_identifier (ERROR "::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold:" : : (binary_expression "__introsort_loop<__normal_iterator<gold" (binary_expression "__introsort_loop<__normal_iterator" identifier < identifier) < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry*,std" identifier (ERROR "::Input_merge_entry*" : : identifier *) , identifier) : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" statement_identifier (ERROR "::Input_merge_entry,std::allocator<gold:" : : (comma_expression "Input_merge_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" statement_identifier (ERROR "::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold:" : : (comma_expression "Input_merge_entry>>>,int,__ops" identifier (ERROR ">>>" >> >) , (comma_expression "int,__ops" identifier , identifier)) : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" (binary_expression "Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0)" identifier >> (parenthesized_expression "(piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0)" ( (comma_expression "piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0" identifier , (comma_expression "piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0" identifier , (comma_expression "(0x1f - LZCOUNT(iVar2)) * 2,0" (binary_expression "(0x1f - LZCOUNT(iVar2)) * 2" (parenthesized_expression "(0x1f - LZCOUNT(iVar2))" ( (binary_expression "0x1f - LZCOUNT(iVar2)" number_literal - (call_expression "LZCOUNT(iVar2)" identifier (argument_list "(iVar2)" ( identifier )))) )) * number_literal) , number_literal))) ))) ;))))) (if_statement "if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }" if (parenthesized_expression "((int)piVar10 - (int)piVar8 < 0xc1)" ( (binary_expression "(int)piVar10 - (int)piVar8 < 0xc1" (binary_expression "(int)piVar10 - (int)piVar8" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }" { (labeled_statement "std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);" statement_identifier (ERROR "::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold:" : : (binary_expression "__insertion_sort<__normal_iterator<gold" (binary_expression "__insertion_sort<__normal_iterator" identifier < identifier) < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry*,std" identifier (ERROR "::Input_merge_entry*" : : identifier *) , identifier) : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);" statement_identifier (ERROR "::Input_merge_entry,std::allocator<gold:" : : (comma_expression "Input_merge_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);" statement_identifier (ERROR "::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold:" : : (binary_expression "Input_merge_entry>>>,__ops" identifier >> (ERROR ">," > ,) identifier) : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_compare>>\n                      (piVar8,piVar10,0);" (binary_expression "Input_merge_compare>>\n                      (piVar8,piVar10,0)" identifier >> (parenthesized_expression "(piVar8,piVar10,0)" ( (comma_expression "piVar8,piVar10,0" identifier , (comma_expression "piVar10,0" identifier , number_literal)) ))) ;))))) }) (else_clause "else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }" else (compound_statement "{\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }" { (expression_statement "piVar9 = piVar8 + 0x30;" (assignment_expression "piVar9 = piVar8 + 0x30" identifier = (binary_expression "piVar8 + 0x30" identifier + number_literal)) ;) (labeled_statement "std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);" statement_identifier (ERROR "::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold:" : : (binary_expression "__insertion_sort<__normal_iterator<gold" (binary_expression "__insertion_sort<__normal_iterator" identifier < identifier) < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry*,std" identifier (ERROR "::Input_merge_entry*" : : identifier *) , identifier) : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);" statement_identifier (ERROR "::Input_merge_entry,std::allocator<gold:" : : (comma_expression "Input_merge_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);" statement_identifier (ERROR "::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold:" : : (binary_expression "Input_merge_entry>>>,__ops" identifier >> (ERROR ">," > ,) identifier) : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_compare>>\n                      (piVar8,piVar9,0);" (binary_expression "Input_merge_compare>>\n                      (piVar8,piVar9,0)" identifier >> (parenthesized_expression "(piVar8,piVar9,0)" ( (comma_expression "piVar8,piVar9,0" identifier , (comma_expression "piVar9,0" identifier , number_literal)) ))) ;))))) (for_statement "for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }" for ( ; (binary_expression "piVar9 != piVar10" identifier != identifier) ; (assignment_expression "piVar9 = piVar9 + 3" identifier = (binary_expression "piVar9 + 3" identifier + number_literal)) ) (compound_statement "{\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }" { (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iVar2 = piVar9[-3];" (assignment_expression "iVar2 = piVar9[-3]" identifier = (subscript_expression "piVar9[-3]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = piVar9[1];" (assignment_expression "iVar7 = piVar9[1]" identifier = (subscript_expression "piVar9[1]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = piVar9[2];" (assignment_expression "iVar6 = piVar9[2]" identifier = (subscript_expression "piVar9[2]" identifier [ number_literal ])) ;) (expression_statement "piVar8 = piVar9;" (assignment_expression "piVar8 = piVar9" identifier = identifier) ;) (while_statement "while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }" while (parenthesized_expression "(iVar4 < iVar2)" ( (binary_expression "iVar4 < iVar2" identifier < identifier) )) (compound_statement "{\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }" { (expression_statement "iVar2 = piVar8[-6];" (assignment_expression "iVar2 = piVar8[-6]" identifier = (subscript_expression "piVar8[-6]" identifier [ number_literal ])) ;) (expression_statement "*piVar8 = piVar8[-3];" (assignment_expression "*piVar8 = piVar8[-3]" (pointer_expression "*piVar8" * identifier) = (subscript_expression "piVar8[-3]" identifier [ number_literal ])) ;) (expression_statement "piVar8[1] = piVar8[-2];" (assignment_expression "piVar8[1] = piVar8[-2]" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = (subscript_expression "piVar8[-2]" identifier [ number_literal ])) ;) (expression_statement "piVar8[2] = piVar8[-1];" (assignment_expression "piVar8[2] = piVar8[-1]" (subscript_expression "piVar8[2]" identifier [ number_literal ]) = (subscript_expression "piVar8[-1]" identifier [ number_literal ])) ;) (expression_statement "piVar8 = piVar8 + -3;" (assignment_expression "piVar8 = piVar8 + -3" identifier = (binary_expression "piVar8 + -3" identifier + number_literal)) ;) })) (expression_statement "*piVar8 = iVar4;" (assignment_expression "*piVar8 = iVar4" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "piVar8[1] = iVar7;" (assignment_expression "piVar8[1] = iVar7" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar8[2] = iVar6;" (assignment_expression "piVar8[2] = iVar6" (subscript_expression "piVar8[2]" identifier [ number_literal ]) = identifier) ;) })) }))) (expression_statement "piVar8 = *(int **)(uVar1 + 4);" (assignment_expression "piVar8 = *(int **)(uVar1 + 4)" identifier = (pointer_expression "*(int **)(uVar1 + 4)" * (cast_expression "(int **)(uVar1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar1 + 4)" ( (binary_expression "uVar1 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;" (assignment_expression "iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555" identifier = (binary_expression "(*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(uVar1 + 8) - (int)piVar8 >> 2)" ( (binary_expression "*(int *)(uVar1 + 8) - (int)piVar8 >> 2" (binary_expression "*(int *)(uVar1 + 8) - (int)piVar8" (pointer_expression "*(int *)(uVar1 + 8)" * (cast_expression "(int *)(uVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + 8)" ( (binary_expression "uVar1 + 8" identifier + number_literal) )))) - (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) })) (expression_statement "*(undefined1 *)(uVar1 + 0x10) = 1;" (assignment_expression "*(undefined1 *)(uVar1 + 0x10) = 1" (pointer_expression "*(undefined1 *)(uVar1 + 0x10)" * (cast_expression "(undefined1 *)(uVar1 + 0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + 0x10)" ( (binary_expression "uVar1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" identifier = identifier) ;) })) (for_statement "for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }" for ( ; (binary_expression "0 < iVar2" number_literal < identifier) ; (assignment_expression "iVar2 = (iVar2 - iVar4) + -1" identifier = (binary_expression "(iVar2 - iVar4) + -1" (parenthesized_expression "(iVar2 - iVar4)" ( (binary_expression "iVar2 - iVar4" identifier - identifier) )) + number_literal)) ) (compound_statement "{\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }" { (while_statement "while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }" { (expression_statement "iVar4 = iVar2 >> 1;" (assignment_expression "iVar4 = iVar2 >> 1" identifier = (binary_expression "iVar2 >> 1" identifier >> number_literal)) ;) (if_statement "if (piVar8[iVar4 * 3] <= param_2) break;" if (parenthesized_expression "(piVar8[iVar4 * 3] <= param_2)" ( (binary_expression "piVar8[iVar4 * 3] <= param_2" (subscript_expression "piVar8[iVar4 * 3]" identifier [ (binary_expression "iVar4 * 3" identifier * number_literal) ]) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) (if_statement "if (iVar4 == 0) goto LAB_0028cbe4;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0028cbe4;" goto statement_identifier ;)) })) (expression_statement "piVar8 = piVar8 + iVar4 * 3 + 3;" (assignment_expression "piVar8 = piVar8 + iVar4 * 3 + 3" identifier = (binary_expression "piVar8 + iVar4 * 3 + 3" (binary_expression "piVar8 + iVar4 * 3" identifier + (binary_expression "iVar4 * 3" identifier * number_literal)) + number_literal)) ;) })) (labeled_statement "LAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }" statement_identifier : (if_statement "if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }" if (parenthesized_expression "(piVar8 != piVar9)" ( (binary_expression "piVar8 != piVar9" identifier != identifier) )) (compound_statement "{\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }" { (if_statement "if (param_2 < piVar8[-3]) goto LAB_0028cd98;" if (parenthesized_expression "(param_2 < piVar8[-3])" ( (binary_expression "param_2 < piVar8[-3]" identifier < (subscript_expression "piVar8[-3]" identifier [ number_literal ])) )) (goto_statement "goto LAB_0028cd98;" goto statement_identifier ;)) (if_statement "if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }" if (parenthesized_expression "(param_2 - piVar8[-3] < piVar8[-2])" ( (binary_expression "param_2 - piVar8[-3] < piVar8[-2]" (binary_expression "param_2 - piVar8[-3]" identifier - (subscript_expression "piVar8[-3]" identifier [ number_literal ])) < (subscript_expression "piVar8[-2]" identifier [ number_literal ])) )) (compound_statement "{\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }" { (expression_statement "iVar2 = piVar8[-1];" (assignment_expression "iVar2 = piVar8[-1]" identifier = (subscript_expression "piVar8[-1]" identifier [ number_literal ])) ;) (expression_statement "*param_3 = iVar2;" (assignment_expression "*param_3 = iVar2" (pointer_expression "*param_3" * identifier) = identifier) ;) (if_statement "if (iVar2 == -1) {\n            return 1;\n          }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n            return 1;\n          }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "*param_3 = (param_2 - piVar8[-3]) + iVar2;" (assignment_expression "*param_3 = (param_2 - piVar8[-3]) + iVar2" (pointer_expression "*param_3" * identifier) = (binary_expression "(param_2 - piVar8[-3]) + iVar2" (parenthesized_expression "(param_2 - piVar8[-3])" ( (binary_expression "param_2 - piVar8[-3]" identifier - (subscript_expression "piVar8[-3]" identifier [ number_literal ])) )) + identifier)) ;) (return_statement "return 1;" return number_literal ;) })) }))) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* DWARF original prototype: bool get_output_offset(Object_merge_map * this, uint shndx,\n   section_offset_type input_offset, section_offset_type * output_offset) */\n\nbool __thiscall\ngold::Object_merge_map::get_output_offset\n          (Object_merge_map *this,uint shndx,section_offset_type input_offset,\n          section_offset_type *output_offset)\n\n{\n  uint uVar1;\n  int iVar2;\n  pointer ppVar3;\n  section_offset_type sVar4;\n  int iVar5;\n  pointer ppVar6;\n  section_size_type sVar7;\n  section_offset_type sVar8;\n  section_size_type sVar9;\n  Input_merge_map *pIVar10;\n  pointer pIVar11;\n  pointer pIVar12;\n  pointer pIVar13;\n  \n  if (shndx == 0xffffffff) {\n    get_input_merge_map(this,0xffffffff);\nLAB_0028cd98:\n    (*(code *)PTR_do_gold_unreachable_004323c4)\n              (PTR_s__0043226c + 0x31a0,0xa1,PTR_s__0043226c + 0x35a8);\n    return false;\n  }\n  ppVar6 = (this->section_merge_maps_).\n           super__Vector_base<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>,_std::allocator<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>_>_>\n           ._M_impl._M_start;\n  ppVar3 = (this->section_merge_maps_).\n           super__Vector_base<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>,_std::allocator<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>_>_>\n           ._M_impl._M_finish;\n  if (ppVar3 != ppVar6) {\n    uVar1 = ppVar6->first;\n    while (shndx != uVar1) {\n      ppVar6 = ppVar6 + 1;\n      if (ppVar3 == ppVar6) {\n        return false;\n      }\n      uVar1 = ppVar6->first;\n    }\n    pIVar10 = ppVar6->second;\n    if (pIVar10 != (Input_merge_map *)0x0) {\n      pIVar13 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_finish;\n      pIVar11 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_start;\n      iVar2 = ((int)pIVar13 - (int)pIVar11 >> 2) * -0x55555555;\n      pIVar12 = pIVar11;\n      if (pIVar10->sorted == false) {\n        if (pIVar11 != pIVar13) {\n          std::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)pIVar13 - (int)pIVar11 < 0xc1) {\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }\n          else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }\n          pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;\n          iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;\n        }\n        pIVar10->sorted = true;\n        pIVar12 = pIVar11;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar5) + -1) {\n        while( true ) {\n          iVar5 = iVar2 >> 1;\n          if (pIVar11[iVar5].input_offset <= input_offset) break;\n          iVar2 = iVar5;\n          if (iVar5 == 0) goto LAB_0028cbe4;\n        }\n        pIVar11 = pIVar11 + iVar5 + 1;\n      }\nLAB_0028cbe4:\n      if (pIVar11 != pIVar12) {\n        if (input_offset < pIVar11[-1].input_offset) goto LAB_0028cd98;\n        if (input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length) {\n          iVar2 = pIVar11[-1].output_offset;\n          *output_offset = iVar2;\n          if (iVar2 == -1) {\n            return true;\n          }\n          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;\n          return true;\n        }\n      }\n    }\n  }\n  return false;\n}\n\n" comment comment comment (function_definition "bool __thiscall\ngold::Object_merge_map::get_output_offset\n          (Object_merge_map *this,uint shndx,section_offset_type input_offset,\n          section_offset_type *output_offset)\n\n{\n  uint uVar1;\n  int iVar2;\n  pointer ppVar3;\n  section_offset_type sVar4;\n  int iVar5;\n  pointer ppVar6;\n  section_size_type sVar7;\n  section_offset_type sVar8;\n  section_size_type sVar9;\n  Input_merge_map *pIVar10;\n  pointer pIVar11;\n  pointer pIVar12;\n  pointer pIVar13;\n  \n  if (shndx == 0xffffffff) {\n    get_input_merge_map(this,0xffffffff);\nLAB_0028cd98:\n    (*(code *)PTR_do_gold_unreachable_004323c4)\n              (PTR_s__0043226c + 0x31a0,0xa1,PTR_s__0043226c + 0x35a8);\n    return false;\n  }\n  ppVar6 = (this->section_merge_maps_).\n           super__Vector_base<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>,_std::allocator<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>_>_>\n           ._M_impl._M_start;\n  ppVar3 = (this->section_merge_maps_).\n           super__Vector_base<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>,_std::allocator<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>_>_>\n           ._M_impl._M_finish;\n  if (ppVar3 != ppVar6) {\n    uVar1 = ppVar6->first;\n    while (shndx != uVar1) {\n      ppVar6 = ppVar6 + 1;\n      if (ppVar3 == ppVar6) {\n        return false;\n      }\n      uVar1 = ppVar6->first;\n    }\n    pIVar10 = ppVar6->second;\n    if (pIVar10 != (Input_merge_map *)0x0) {\n      pIVar13 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_finish;\n      pIVar11 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_start;\n      iVar2 = ((int)pIVar13 - (int)pIVar11 >> 2) * -0x55555555;\n      pIVar12 = pIVar11;\n      if (pIVar10->sorted == false) {\n        if (pIVar11 != pIVar13) {\n          std::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)pIVar13 - (int)pIVar11 < 0xc1) {\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }\n          else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }\n          pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;\n          iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;\n        }\n        pIVar10->sorted = true;\n        pIVar12 = pIVar11;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar5) + -1) {\n        while( true ) {\n          iVar5 = iVar2 >> 1;\n          if (pIVar11[iVar5].input_offset <= input_offset) break;\n          iVar2 = iVar5;\n          if (iVar5 == 0) goto LAB_0028cbe4;\n        }\n        pIVar11 = pIVar11 + iVar5 + 1;\n      }\nLAB_0028cbe4:\n      if (pIVar11 != pIVar12) {\n        if (input_offset < pIVar11[-1].input_offset) goto LAB_0028cd98;\n        if (input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length) {\n          iVar2 = pIVar11[-1].output_offset;\n          *output_offset = iVar2;\n          if (iVar2 == -1) {\n            return true;\n          }\n          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;\n          return true;\n        }\n      }\n    }\n  }\n  return false;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Object_merge_map::" identifier : : identifier : :) (function_declarator "get_output_offset\n          (Object_merge_map *this,uint shndx,section_offset_type input_offset,\n          section_offset_type *output_offset)" identifier (parameter_list "(Object_merge_map *this,uint shndx,section_offset_type input_offset,\n          section_offset_type *output_offset)" ( (parameter_declaration "Object_merge_map *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) , (parameter_declaration "section_offset_type input_offset" type_identifier identifier) , (parameter_declaration "section_offset_type *output_offset" type_identifier (pointer_declarator "*output_offset" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  pointer ppVar3;\n  section_offset_type sVar4;\n  int iVar5;\n  pointer ppVar6;\n  section_size_type sVar7;\n  section_offset_type sVar8;\n  section_size_type sVar9;\n  Input_merge_map *pIVar10;\n  pointer pIVar11;\n  pointer pIVar12;\n  pointer pIVar13;\n  \n  if (shndx == 0xffffffff) {\n    get_input_merge_map(this,0xffffffff);\nLAB_0028cd98:\n    (*(code *)PTR_do_gold_unreachable_004323c4)\n              (PTR_s__0043226c + 0x31a0,0xa1,PTR_s__0043226c + 0x35a8);\n    return false;\n  }\n  ppVar6 = (this->section_merge_maps_).\n           super__Vector_base<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>,_std::allocator<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>_>_>\n           ._M_impl._M_start;\n  ppVar3 = (this->section_merge_maps_).\n           super__Vector_base<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>,_std::allocator<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>_>_>\n           ._M_impl._M_finish;\n  if (ppVar3 != ppVar6) {\n    uVar1 = ppVar6->first;\n    while (shndx != uVar1) {\n      ppVar6 = ppVar6 + 1;\n      if (ppVar3 == ppVar6) {\n        return false;\n      }\n      uVar1 = ppVar6->first;\n    }\n    pIVar10 = ppVar6->second;\n    if (pIVar10 != (Input_merge_map *)0x0) {\n      pIVar13 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_finish;\n      pIVar11 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_start;\n      iVar2 = ((int)pIVar13 - (int)pIVar11 >> 2) * -0x55555555;\n      pIVar12 = pIVar11;\n      if (pIVar10->sorted == false) {\n        if (pIVar11 != pIVar13) {\n          std::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)pIVar13 - (int)pIVar11 < 0xc1) {\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }\n          else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }\n          pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;\n          iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;\n        }\n        pIVar10->sorted = true;\n        pIVar12 = pIVar11;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar5) + -1) {\n        while( true ) {\n          iVar5 = iVar2 >> 1;\n          if (pIVar11[iVar5].input_offset <= input_offset) break;\n          iVar2 = iVar5;\n          if (iVar5 == 0) goto LAB_0028cbe4;\n        }\n        pIVar11 = pIVar11 + iVar5 + 1;\n      }\nLAB_0028cbe4:\n      if (pIVar11 != pIVar12) {\n        if (input_offset < pIVar11[-1].input_offset) goto LAB_0028cd98;\n        if (input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length) {\n          iVar2 = pIVar11[-1].output_offset;\n          *output_offset = iVar2;\n          if (iVar2 == -1) {\n            return true;\n          }\n          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;\n          return true;\n        }\n      }\n    }\n  }\n  return false;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "pointer ppVar3;" type_identifier identifier ;) (declaration "section_offset_type sVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "pointer ppVar6;" type_identifier identifier ;) (declaration "section_size_type sVar7;" type_identifier identifier ;) (declaration "section_offset_type sVar8;" type_identifier identifier ;) (declaration "section_size_type sVar9;" type_identifier identifier ;) (declaration "Input_merge_map *pIVar10;" type_identifier (pointer_declarator "*pIVar10" * identifier) ;) (declaration "pointer pIVar11;" type_identifier identifier ;) (declaration "pointer pIVar12;" type_identifier identifier ;) (declaration "pointer pIVar13;" type_identifier identifier ;) (if_statement "if (shndx == 0xffffffff) {\n    get_input_merge_map(this,0xffffffff);\nLAB_0028cd98:\n    (*(code *)PTR_do_gold_unreachable_004323c4)\n              (PTR_s__0043226c + 0x31a0,0xa1,PTR_s__0043226c + 0x35a8);\n    return false;\n  }" if (parenthesized_expression "(shndx == 0xffffffff)" ( (binary_expression "shndx == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    get_input_merge_map(this,0xffffffff);\nLAB_0028cd98:\n    (*(code *)PTR_do_gold_unreachable_004323c4)\n              (PTR_s__0043226c + 0x31a0,0xa1,PTR_s__0043226c + 0x35a8);\n    return false;\n  }" { (expression_statement "get_input_merge_map(this,0xffffffff);" (call_expression "get_input_merge_map(this,0xffffffff)" identifier (argument_list "(this,0xffffffff)" ( identifier , number_literal ))) ;) (labeled_statement "LAB_0028cd98:\n    (*(code *)PTR_do_gold_unreachable_004323c4)\n              (PTR_s__0043226c + 0x31a0,0xa1,PTR_s__0043226c + 0x35a8);" statement_identifier : (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)\n              (PTR_s__0043226c + 0x31a0,0xa1,PTR_s__0043226c + 0x35a8);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n              (PTR_s__0043226c + 0x31a0,0xa1,PTR_s__0043226c + 0x35a8)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__0043226c + 0x31a0,0xa1,PTR_s__0043226c + 0x35a8)" ( (binary_expression "PTR_s__0043226c + 0x31a0" identifier + number_literal) , number_literal , (binary_expression "PTR_s__0043226c + 0x35a8" identifier + number_literal) ))) ;)) (return_statement "return false;" return false ;) })) (ERROR "ppVar6 = (this->section_merge_maps_).\n           super__Vector_base<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>,_std::allocator<std::pair<unsigned_int,_gold::" (comma_expression "ppVar6 = (this->section_merge_maps_).\n           super__Vector_base<std::pair<unsigned_int,_gold" (binary_expression "ppVar6 = (this->section_merge_maps_).\n           super__Vector_base<std::pair<unsigned_int" (assignment_expression "ppVar6 = (this->section_merge_maps_).\n           super__Vector_base<std" identifier = (binary_expression "(this->section_merge_maps_).\n           super__Vector_base<std" (field_expression "(this->section_merge_maps_).\n           super__Vector_base" (parenthesized_expression "(this->section_merge_maps_)" ( (field_expression "this->section_merge_maps_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) , identifier) : : identifier : : identifier * > , identifier : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int,_gold" (binary_expression "pair<unsigned_int" identifier < identifier) , identifier) : :) (expression_statement "Object_merge_map::Input_merge_map*>_>_>\n           ._M_impl._M_start;" (field_expression "Object_merge_map::Input_merge_map*>_>_>\n           ._M_impl._M_start" (field_expression "Object_merge_map::Input_merge_map*>_>_>\n           ._M_impl" (binary_expression "Object_merge_map::Input_merge_map*>_>_" (binary_expression "Object_merge_map::Input_merge_map*>_" identifier (ERROR "::Input_merge_map*" : : identifier *) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (ERROR "ppVar3 = (this->section_merge_maps_).\n           super__Vector_base<std::pair<unsigned_int,_gold::Object_merge_map::Input_merge_map*>,_std::allocator<std::pair<unsigned_int,_gold::" (comma_expression "ppVar3 = (this->section_merge_maps_).\n           super__Vector_base<std::pair<unsigned_int,_gold" (binary_expression "ppVar3 = (this->section_merge_maps_).\n           super__Vector_base<std::pair<unsigned_int" (assignment_expression "ppVar3 = (this->section_merge_maps_).\n           super__Vector_base<std" identifier = (binary_expression "(this->section_merge_maps_).\n           super__Vector_base<std" (field_expression "(this->section_merge_maps_).\n           super__Vector_base" (parenthesized_expression "(this->section_merge_maps_)" ( (field_expression "this->section_merge_maps_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) , identifier) : : identifier : : identifier * > , identifier : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int,_gold" (binary_expression "pair<unsigned_int" identifier < identifier) , identifier) : :) (expression_statement "Object_merge_map::Input_merge_map*>_>_>\n           ._M_impl._M_finish;" (field_expression "Object_merge_map::Input_merge_map*>_>_>\n           ._M_impl._M_finish" (field_expression "Object_merge_map::Input_merge_map*>_>_>\n           ._M_impl" (binary_expression "Object_merge_map::Input_merge_map*>_>_" (binary_expression "Object_merge_map::Input_merge_map*>_" identifier (ERROR "::Input_merge_map*" : : identifier *) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (ppVar3 != ppVar6) {\n    uVar1 = ppVar6->first;\n    while (shndx != uVar1) {\n      ppVar6 = ppVar6 + 1;\n      if (ppVar3 == ppVar6) {\n        return false;\n      }\n      uVar1 = ppVar6->first;\n    }\n    pIVar10 = ppVar6->second;\n    if (pIVar10 != (Input_merge_map *)0x0) {\n      pIVar13 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_finish;\n      pIVar11 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_start;\n      iVar2 = ((int)pIVar13 - (int)pIVar11 >> 2) * -0x55555555;\n      pIVar12 = pIVar11;\n      if (pIVar10->sorted == false) {\n        if (pIVar11 != pIVar13) {\n          std::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)pIVar13 - (int)pIVar11 < 0xc1) {\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }\n          else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }\n          pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;\n          iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;\n        }\n        pIVar10->sorted = true;\n        pIVar12 = pIVar11;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar5) + -1) {\n        while( true ) {\n          iVar5 = iVar2 >> 1;\n          if (pIVar11[iVar5].input_offset <= input_offset) break;\n          iVar2 = iVar5;\n          if (iVar5 == 0) goto LAB_0028cbe4;\n        }\n        pIVar11 = pIVar11 + iVar5 + 1;\n      }\nLAB_0028cbe4:\n      if (pIVar11 != pIVar12) {\n        if (input_offset < pIVar11[-1].input_offset) goto LAB_0028cd98;\n        if (input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length) {\n          iVar2 = pIVar11[-1].output_offset;\n          *output_offset = iVar2;\n          if (iVar2 == -1) {\n            return true;\n          }\n          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;\n          return true;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(ppVar3 != ppVar6)" ( (binary_expression "ppVar3 != ppVar6" identifier != identifier) )) (compound_statement "{\n    uVar1 = ppVar6->first;\n    while (shndx != uVar1) {\n      ppVar6 = ppVar6 + 1;\n      if (ppVar3 == ppVar6) {\n        return false;\n      }\n      uVar1 = ppVar6->first;\n    }\n    pIVar10 = ppVar6->second;\n    if (pIVar10 != (Input_merge_map *)0x0) {\n      pIVar13 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_finish;\n      pIVar11 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_start;\n      iVar2 = ((int)pIVar13 - (int)pIVar11 >> 2) * -0x55555555;\n      pIVar12 = pIVar11;\n      if (pIVar10->sorted == false) {\n        if (pIVar11 != pIVar13) {\n          std::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)pIVar13 - (int)pIVar11 < 0xc1) {\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }\n          else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }\n          pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;\n          iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;\n        }\n        pIVar10->sorted = true;\n        pIVar12 = pIVar11;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar5) + -1) {\n        while( true ) {\n          iVar5 = iVar2 >> 1;\n          if (pIVar11[iVar5].input_offset <= input_offset) break;\n          iVar2 = iVar5;\n          if (iVar5 == 0) goto LAB_0028cbe4;\n        }\n        pIVar11 = pIVar11 + iVar5 + 1;\n      }\nLAB_0028cbe4:\n      if (pIVar11 != pIVar12) {\n        if (input_offset < pIVar11[-1].input_offset) goto LAB_0028cd98;\n        if (input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length) {\n          iVar2 = pIVar11[-1].output_offset;\n          *output_offset = iVar2;\n          if (iVar2 == -1) {\n            return true;\n          }\n          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;\n          return true;\n        }\n      }\n    }\n  }" { (expression_statement "uVar1 = ppVar6->first;" (assignment_expression "uVar1 = ppVar6->first" identifier = (field_expression "ppVar6->first" identifier -> field_identifier)) ;) (while_statement "while (shndx != uVar1) {\n      ppVar6 = ppVar6 + 1;\n      if (ppVar3 == ppVar6) {\n        return false;\n      }\n      uVar1 = ppVar6->first;\n    }" while (parenthesized_expression "(shndx != uVar1)" ( (binary_expression "shndx != uVar1" identifier != identifier) )) (compound_statement "{\n      ppVar6 = ppVar6 + 1;\n      if (ppVar3 == ppVar6) {\n        return false;\n      }\n      uVar1 = ppVar6->first;\n    }" { (expression_statement "ppVar6 = ppVar6 + 1;" (assignment_expression "ppVar6 = ppVar6 + 1" identifier = (binary_expression "ppVar6 + 1" identifier + number_literal)) ;) (if_statement "if (ppVar3 == ppVar6) {\n        return false;\n      }" if (parenthesized_expression "(ppVar3 == ppVar6)" ( (binary_expression "ppVar3 == ppVar6" identifier == identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (expression_statement "uVar1 = ppVar6->first;" (assignment_expression "uVar1 = ppVar6->first" identifier = (field_expression "ppVar6->first" identifier -> field_identifier)) ;) })) (expression_statement "pIVar10 = ppVar6->second;" (assignment_expression "pIVar10 = ppVar6->second" identifier = (field_expression "ppVar6->second" identifier -> field_identifier)) ;) (if_statement "if (pIVar10 != (Input_merge_map *)0x0) {\n      pIVar13 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_finish;\n      pIVar11 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_start;\n      iVar2 = ((int)pIVar13 - (int)pIVar11 >> 2) * -0x55555555;\n      pIVar12 = pIVar11;\n      if (pIVar10->sorted == false) {\n        if (pIVar11 != pIVar13) {\n          std::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)pIVar13 - (int)pIVar11 < 0xc1) {\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }\n          else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }\n          pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;\n          iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;\n        }\n        pIVar10->sorted = true;\n        pIVar12 = pIVar11;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar5) + -1) {\n        while( true ) {\n          iVar5 = iVar2 >> 1;\n          if (pIVar11[iVar5].input_offset <= input_offset) break;\n          iVar2 = iVar5;\n          if (iVar5 == 0) goto LAB_0028cbe4;\n        }\n        pIVar11 = pIVar11 + iVar5 + 1;\n      }\nLAB_0028cbe4:\n      if (pIVar11 != pIVar12) {\n        if (input_offset < pIVar11[-1].input_offset) goto LAB_0028cd98;\n        if (input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length) {\n          iVar2 = pIVar11[-1].output_offset;\n          *output_offset = iVar2;\n          if (iVar2 == -1) {\n            return true;\n          }\n          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;\n          return true;\n        }\n      }\n    }" if (parenthesized_expression "(pIVar10 != (Input_merge_map *)0x0)" ( (binary_expression "pIVar10 != (Input_merge_map *)0x0" identifier != (cast_expression "(Input_merge_map *)0x0" ( (type_descriptor "Input_merge_map *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pIVar13 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_finish;\n      pIVar11 = (pIVar10->entries).\n                super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_start;\n      iVar2 = ((int)pIVar13 - (int)pIVar11 >> 2) * -0x55555555;\n      pIVar12 = pIVar11;\n      if (pIVar10->sorted == false) {\n        if (pIVar11 != pIVar13) {\n          std::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)pIVar13 - (int)pIVar11 < 0xc1) {\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }\n          else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }\n          pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;\n          iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;\n        }\n        pIVar10->sorted = true;\n        pIVar12 = pIVar11;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar5) + -1) {\n        while( true ) {\n          iVar5 = iVar2 >> 1;\n          if (pIVar11[iVar5].input_offset <= input_offset) break;\n          iVar2 = iVar5;\n          if (iVar5 == 0) goto LAB_0028cbe4;\n        }\n        pIVar11 = pIVar11 + iVar5 + 1;\n      }\nLAB_0028cbe4:\n      if (pIVar11 != pIVar12) {\n        if (input_offset < pIVar11[-1].input_offset) goto LAB_0028cd98;\n        if (input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length) {\n          iVar2 = pIVar11[-1].output_offset;\n          *output_offset = iVar2;\n          if (iVar2 == -1) {\n            return true;\n          }\n          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;\n          return true;\n        }\n      }\n    }" { (ERROR "pIVar13 = (pIVar10->entries).\n                super__Vector_base<gold::" (assignment_expression "pIVar13 = (pIVar10->entries).\n                super__Vector_base<gold" identifier = (binary_expression "(pIVar10->entries).\n                super__Vector_base<gold" (field_expression "(pIVar10->entries).\n                super__Vector_base" (parenthesized_expression "(pIVar10->entries)" ( (field_expression "pIVar10->entries" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_finish;" statement_identifier (ERROR "::Input_merge_entry,_std::allocator<gold:" : : (comma_expression "Input_merge_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_entry>_>\n                ._M_impl._M_finish;" (field_expression "Input_merge_entry>_>\n                ._M_impl._M_finish" (field_expression "Input_merge_entry>_>\n                ._M_impl" (binary_expression "Input_merge_entry>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (ERROR "pIVar11 = (pIVar10->entries).\n                super__Vector_base<gold::" (assignment_expression "pIVar11 = (pIVar10->entries).\n                super__Vector_base<gold" identifier = (binary_expression "(pIVar10->entries).\n                super__Vector_base<gold" (field_expression "(pIVar10->entries).\n                super__Vector_base" (parenthesized_expression "(pIVar10->entries)" ( (field_expression "pIVar10->entries" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_start;" statement_identifier (ERROR "::Input_merge_entry,_std::allocator<gold:" : : (comma_expression "Input_merge_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry>_>\n                ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_entry>_>\n                ._M_impl._M_start;" (field_expression "Input_merge_entry>_>\n                ._M_impl._M_start" (field_expression "Input_merge_entry>_>\n                ._M_impl" (binary_expression "Input_merge_entry>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "iVar2 = ((int)pIVar13 - (int)pIVar11 >> 2) * -0x55555555;" (assignment_expression "iVar2 = ((int)pIVar13 - (int)pIVar11 >> 2) * -0x55555555" identifier = (binary_expression "((int)pIVar13 - (int)pIVar11 >> 2) * -0x55555555" (parenthesized_expression "((int)pIVar13 - (int)pIVar11 >> 2)" ( (binary_expression "(int)pIVar13 - (int)pIVar11 >> 2" (binary_expression "(int)pIVar13 - (int)pIVar11" (cast_expression "(int)pIVar13" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pIVar11" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) (expression_statement "pIVar12 = pIVar11;" (assignment_expression "pIVar12 = pIVar11" identifier = identifier) ;) (if_statement "if (pIVar10->sorted == false) {\n        if (pIVar11 != pIVar13) {\n          std::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)pIVar13 - (int)pIVar11 < 0xc1) {\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }\n          else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }\n          pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;\n          iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;\n        }\n        pIVar10->sorted = true;\n        pIVar12 = pIVar11;\n      }" if (parenthesized_expression "(pIVar10->sorted == false)" ( (binary_expression "pIVar10->sorted == false" (field_expression "pIVar10->sorted" identifier -> field_identifier) == false) )) (compound_statement "{\n        if (pIVar11 != pIVar13) {\n          std::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)pIVar13 - (int)pIVar11 < 0xc1) {\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }\n          else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }\n          pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;\n          iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;\n        }\n        pIVar10->sorted = true;\n        pIVar12 = pIVar11;\n      }" { (if_statement "if (pIVar11 != pIVar13) {\n          std::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)pIVar13 - (int)pIVar11 < 0xc1) {\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }\n          else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }\n          pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;\n          iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;\n        }" if (parenthesized_expression "(pIVar11 != pIVar13)" ( (binary_expression "pIVar11 != pIVar13" identifier != identifier) )) (compound_statement "{\n          std::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)pIVar13 - (int)pIVar11 < 0xc1) {\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }\n          else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }\n          pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;\n          iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;\n        }" { (labeled_statement "std::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);" statement_identifier (ERROR "::\n          __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx:" : : (binary_expression "__introsort_loop<__gnu_cxx" identifier < identifier) : : (binary_expression "__normal_iterator<gold" identifier < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry*,_std" identifier (ERROR "::Input_merge_entry*" : : identifier *) , identifier) : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry>_>,_int,___gnu_cxx" identifier (ERROR "::Input_merge_entry>_>" : : (binary_expression "Input_merge_entry>_" identifier > identifier) >) , (comma_expression "_int,___gnu_cxx" identifier , identifier)) :) : (labeled_statement "__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0);" (binary_expression "Input_merge_compare>_>\n                    (pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0)" (binary_expression "Input_merge_compare>_" identifier > identifier) > (parenthesized_expression "(pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0)" ( (comma_expression "pIVar11,pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0" identifier , (comma_expression "pIVar13,(0x1f - LZCOUNT(iVar2)) * 2,0" identifier , (comma_expression "(0x1f - LZCOUNT(iVar2)) * 2,0" (binary_expression "(0x1f - LZCOUNT(iVar2)) * 2" (parenthesized_expression "(0x1f - LZCOUNT(iVar2))" ( (binary_expression "0x1f - LZCOUNT(iVar2)" number_literal - (call_expression "LZCOUNT(iVar2)" identifier (argument_list "(iVar2)" ( identifier )))) )) * number_literal) , number_literal))) ))) ;)))) (if_statement "if ((int)pIVar13 - (int)pIVar11 < 0xc1) {\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }\n          else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }" if (parenthesized_expression "((int)pIVar13 - (int)pIVar11 < 0xc1)" ( (binary_expression "(int)pIVar13 - (int)pIVar11 < 0xc1" (binary_expression "(int)pIVar13 - (int)pIVar11" (cast_expression "(int)pIVar13" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pIVar11" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);\n          }" { (labeled_statement "std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);" statement_identifier (ERROR "::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx:" : : (binary_expression "__insertion_sort<__gnu_cxx" identifier < identifier) : : (binary_expression "__normal_iterator<gold" identifier < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry*,_std" identifier (ERROR "::Input_merge_entry*" : : identifier *) , identifier) : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry>_>,___gnu_cxx" identifier (ERROR "::Input_merge_entry>_>" : : (binary_expression "Input_merge_entry>_" identifier > identifier) >) , identifier) :) : (labeled_statement "__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_compare>_>\n                      (pIVar11,pIVar13,0);" (binary_expression "Input_merge_compare>_>\n                      (pIVar11,pIVar13,0)" (binary_expression "Input_merge_compare>_" identifier > identifier) > (parenthesized_expression "(pIVar11,pIVar13,0)" ( (comma_expression "pIVar11,pIVar13,0" identifier , (comma_expression "pIVar13,0" identifier , number_literal)) ))) ;)))) }) (else_clause "else {\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }" else (compound_statement "{\n            pIVar12 = pIVar11 + 0x10;\n            std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);\n            for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }\n          }" { (expression_statement "pIVar12 = pIVar11 + 0x10;" (assignment_expression "pIVar12 = pIVar11 + 0x10" identifier = (binary_expression "pIVar11 + 0x10" identifier + number_literal)) ;) (labeled_statement "std::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);" statement_identifier (ERROR "::\n            __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx:" : : (binary_expression "__insertion_sort<__gnu_cxx" identifier < identifier) : : (binary_expression "__normal_iterator<gold" identifier < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry*,_std" identifier (ERROR "::Input_merge_entry*" : : identifier *) , identifier) : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry>_>,___gnu_cxx" identifier (ERROR "::Input_merge_entry>_>" : : (binary_expression "Input_merge_entry>_" identifier > identifier) >) , identifier) :) : (labeled_statement "__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_compare>_>\n                      (pIVar11,pIVar12,0);" (binary_expression "Input_merge_compare>_>\n                      (pIVar11,pIVar12,0)" (binary_expression "Input_merge_compare>_" identifier > identifier) > (parenthesized_expression "(pIVar11,pIVar12,0)" ( (comma_expression "pIVar11,pIVar12,0" identifier , (comma_expression "pIVar12,0" identifier , number_literal)) ))) ;)))) (for_statement "for (; pIVar12 != pIVar13; pIVar12 = pIVar12 + 1) {\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }" for ( ; (binary_expression "pIVar12 != pIVar13" identifier != identifier) ; (assignment_expression "pIVar12 = pIVar12 + 1" identifier = (binary_expression "pIVar12 + 1" identifier + number_literal)) ) (compound_statement "{\n              iVar5 = pIVar12->input_offset;\n              iVar2 = pIVar12[-1].input_offset;\n              sVar9 = pIVar12->length;\n              sVar8 = pIVar12->output_offset;\n              pIVar11 = pIVar12;\n              while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }\n              pIVar11->input_offset = iVar5;\n              pIVar11->length = sVar9;\n              pIVar11->output_offset = sVar8;\n            }" { (expression_statement "iVar5 = pIVar12->input_offset;" (assignment_expression "iVar5 = pIVar12->input_offset" identifier = (field_expression "pIVar12->input_offset" identifier -> field_identifier)) ;) (expression_statement "iVar2 = pIVar12[-1].input_offset;" (assignment_expression "iVar2 = pIVar12[-1].input_offset" identifier = (field_expression "pIVar12[-1].input_offset" (subscript_expression "pIVar12[-1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "sVar9 = pIVar12->length;" (assignment_expression "sVar9 = pIVar12->length" identifier = (field_expression "pIVar12->length" identifier -> field_identifier)) ;) (expression_statement "sVar8 = pIVar12->output_offset;" (assignment_expression "sVar8 = pIVar12->output_offset" identifier = (field_expression "pIVar12->output_offset" identifier -> field_identifier)) ;) (expression_statement "pIVar11 = pIVar12;" (assignment_expression "pIVar11 = pIVar12" identifier = identifier) ;) (while_statement "while (iVar5 < iVar2) {\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }" while (parenthesized_expression "(iVar5 < iVar2)" ( (binary_expression "iVar5 < iVar2" identifier < identifier) )) (compound_statement "{\n                iVar2 = pIVar11[-2].input_offset;\n                sVar7 = pIVar11[-1].length;\n                sVar4 = pIVar11[-1].output_offset;\n                pIVar11->input_offset = pIVar11[-1].input_offset;\n                pIVar11->length = sVar7;\n                pIVar11->output_offset = sVar4;\n                pIVar11 = pIVar11 + -1;\n              }" { (expression_statement "iVar2 = pIVar11[-2].input_offset;" (assignment_expression "iVar2 = pIVar11[-2].input_offset" identifier = (field_expression "pIVar11[-2].input_offset" (subscript_expression "pIVar11[-2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "sVar7 = pIVar11[-1].length;" (assignment_expression "sVar7 = pIVar11[-1].length" identifier = (field_expression "pIVar11[-1].length" (subscript_expression "pIVar11[-1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "sVar4 = pIVar11[-1].output_offset;" (assignment_expression "sVar4 = pIVar11[-1].output_offset" identifier = (field_expression "pIVar11[-1].output_offset" (subscript_expression "pIVar11[-1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pIVar11->input_offset = pIVar11[-1].input_offset;" (assignment_expression "pIVar11->input_offset = pIVar11[-1].input_offset" (field_expression "pIVar11->input_offset" identifier -> field_identifier) = (field_expression "pIVar11[-1].input_offset" (subscript_expression "pIVar11[-1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pIVar11->length = sVar7;" (assignment_expression "pIVar11->length = sVar7" (field_expression "pIVar11->length" identifier -> field_identifier) = identifier) ;) (expression_statement "pIVar11->output_offset = sVar4;" (assignment_expression "pIVar11->output_offset = sVar4" (field_expression "pIVar11->output_offset" identifier -> field_identifier) = identifier) ;) (expression_statement "pIVar11 = pIVar11 + -1;" (assignment_expression "pIVar11 = pIVar11 + -1" identifier = (binary_expression "pIVar11 + -1" identifier + number_literal)) ;) })) (expression_statement "pIVar11->input_offset = iVar5;" (assignment_expression "pIVar11->input_offset = iVar5" (field_expression "pIVar11->input_offset" identifier -> field_identifier) = identifier) ;) (expression_statement "pIVar11->length = sVar9;" (assignment_expression "pIVar11->length = sVar9" (field_expression "pIVar11->length" identifier -> field_identifier) = identifier) ;) (expression_statement "pIVar11->output_offset = sVar8;" (assignment_expression "pIVar11->output_offset = sVar8" (field_expression "pIVar11->output_offset" identifier -> field_identifier) = identifier) ;) })) }))) (ERROR "pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold::" (assignment_expression "pIVar11 = (pIVar10->entries).\n                    super__Vector_base<gold" identifier = (binary_expression "(pIVar10->entries).\n                    super__Vector_base<gold" (field_expression "(pIVar10->entries).\n                    super__Vector_base" (parenthesized_expression "(pIVar10->entries)" ( (field_expression "pIVar10->entries" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;" statement_identifier (ERROR "::Input_merge_entry,_std::allocator<gold:" : : (comma_expression "Input_merge_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry>_>\n                    ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_entry>_>\n                    ._M_impl._M_start;" (field_expression "Input_merge_entry>_>\n                    ._M_impl._M_start" (field_expression "Input_merge_entry>_>\n                    ._M_impl" (binary_expression "Input_merge_entry>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555;" (assignment_expression "iVar2 = ((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555" identifier = (binary_expression "((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2) * -0x55555555" (parenthesized_expression "((int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2)" ( (ERROR "(int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std::allocator<gold::Object_merge_map::" (comma_expression "(int)(pIVar10->entries).\n                        super__Vector_base<gold::Object_merge_map::Input_merge_entry,_std" (binary_expression "(int)(pIVar10->entries).\n                        super__Vector_base<gold" (cast_expression "(int)(pIVar10->entries).\n                        super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(pIVar10->entries).\n                        super__Vector_base" (parenthesized_expression "(pIVar10->entries)" ( (field_expression "pIVar10->entries" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Object_merge_map::Input_merge_entry" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11 >> 2" (binary_expression "Input_merge_entry>_>\n                        ._M_impl._M_finish - (int)pIVar11" (field_expression "Input_merge_entry>_>\n                        ._M_impl._M_finish" (field_expression "Input_merge_entry>_>\n                        ._M_impl" (binary_expression "Input_merge_entry>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)pIVar11" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) })) (expression_statement "pIVar10->sorted = true;" (assignment_expression "pIVar10->sorted = true" (field_expression "pIVar10->sorted" identifier -> field_identifier) = true) ;) (expression_statement "pIVar12 = pIVar11;" (assignment_expression "pIVar12 = pIVar11" identifier = identifier) ;) })) (for_statement "for (; 0 < iVar2; iVar2 = (iVar2 - iVar5) + -1) {\n        while( true ) {\n          iVar5 = iVar2 >> 1;\n          if (pIVar11[iVar5].input_offset <= input_offset) break;\n          iVar2 = iVar5;\n          if (iVar5 == 0) goto LAB_0028cbe4;\n        }\n        pIVar11 = pIVar11 + iVar5 + 1;\n      }" for ( ; (binary_expression "0 < iVar2" number_literal < identifier) ; (assignment_expression "iVar2 = (iVar2 - iVar5) + -1" identifier = (binary_expression "(iVar2 - iVar5) + -1" (parenthesized_expression "(iVar2 - iVar5)" ( (binary_expression "iVar2 - iVar5" identifier - identifier) )) + number_literal)) ) (compound_statement "{\n        while( true ) {\n          iVar5 = iVar2 >> 1;\n          if (pIVar11[iVar5].input_offset <= input_offset) break;\n          iVar2 = iVar5;\n          if (iVar5 == 0) goto LAB_0028cbe4;\n        }\n        pIVar11 = pIVar11 + iVar5 + 1;\n      }" { (while_statement "while( true ) {\n          iVar5 = iVar2 >> 1;\n          if (pIVar11[iVar5].input_offset <= input_offset) break;\n          iVar2 = iVar5;\n          if (iVar5 == 0) goto LAB_0028cbe4;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar5 = iVar2 >> 1;\n          if (pIVar11[iVar5].input_offset <= input_offset) break;\n          iVar2 = iVar5;\n          if (iVar5 == 0) goto LAB_0028cbe4;\n        }" { (expression_statement "iVar5 = iVar2 >> 1;" (assignment_expression "iVar5 = iVar2 >> 1" identifier = (binary_expression "iVar2 >> 1" identifier >> number_literal)) ;) (if_statement "if (pIVar11[iVar5].input_offset <= input_offset) break;" if (parenthesized_expression "(pIVar11[iVar5].input_offset <= input_offset)" ( (binary_expression "pIVar11[iVar5].input_offset <= input_offset" (field_expression "pIVar11[iVar5].input_offset" (subscript_expression "pIVar11[iVar5]" identifier [ identifier ]) . field_identifier) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = iVar5;" (assignment_expression "iVar2 = iVar5" identifier = identifier) ;) (if_statement "if (iVar5 == 0) goto LAB_0028cbe4;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0028cbe4;" goto statement_identifier ;)) })) (expression_statement "pIVar11 = pIVar11 + iVar5 + 1;" (assignment_expression "pIVar11 = pIVar11 + iVar5 + 1" identifier = (binary_expression "pIVar11 + iVar5 + 1" (binary_expression "pIVar11 + iVar5" identifier + identifier) + number_literal)) ;) })) (labeled_statement "LAB_0028cbe4:\n      if (pIVar11 != pIVar12) {\n        if (input_offset < pIVar11[-1].input_offset) goto LAB_0028cd98;\n        if (input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length) {\n          iVar2 = pIVar11[-1].output_offset;\n          *output_offset = iVar2;\n          if (iVar2 == -1) {\n            return true;\n          }\n          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;\n          return true;\n        }\n      }" statement_identifier : (if_statement "if (pIVar11 != pIVar12) {\n        if (input_offset < pIVar11[-1].input_offset) goto LAB_0028cd98;\n        if (input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length) {\n          iVar2 = pIVar11[-1].output_offset;\n          *output_offset = iVar2;\n          if (iVar2 == -1) {\n            return true;\n          }\n          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;\n          return true;\n        }\n      }" if (parenthesized_expression "(pIVar11 != pIVar12)" ( (binary_expression "pIVar11 != pIVar12" identifier != identifier) )) (compound_statement "{\n        if (input_offset < pIVar11[-1].input_offset) goto LAB_0028cd98;\n        if (input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length) {\n          iVar2 = pIVar11[-1].output_offset;\n          *output_offset = iVar2;\n          if (iVar2 == -1) {\n            return true;\n          }\n          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;\n          return true;\n        }\n      }" { (if_statement "if (input_offset < pIVar11[-1].input_offset) goto LAB_0028cd98;" if (parenthesized_expression "(input_offset < pIVar11[-1].input_offset)" ( (binary_expression "input_offset < pIVar11[-1].input_offset" identifier < (field_expression "pIVar11[-1].input_offset" (subscript_expression "pIVar11[-1]" identifier [ number_literal ]) . field_identifier)) )) (goto_statement "goto LAB_0028cd98;" goto statement_identifier ;)) (if_statement "if (input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length) {\n          iVar2 = pIVar11[-1].output_offset;\n          *output_offset = iVar2;\n          if (iVar2 == -1) {\n            return true;\n          }\n          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;\n          return true;\n        }" if (parenthesized_expression "(input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length)" ( (binary_expression "input_offset - pIVar11[-1].input_offset < (int)pIVar11[-1].length" (binary_expression "input_offset - pIVar11[-1].input_offset" identifier - (field_expression "pIVar11[-1].input_offset" (subscript_expression "pIVar11[-1]" identifier [ number_literal ]) . field_identifier)) < (cast_expression "(int)pIVar11[-1].length" ( (type_descriptor "int" primitive_type) ) (field_expression "pIVar11[-1].length" (subscript_expression "pIVar11[-1]" identifier [ number_literal ]) . field_identifier))) )) (compound_statement "{\n          iVar2 = pIVar11[-1].output_offset;\n          *output_offset = iVar2;\n          if (iVar2 == -1) {\n            return true;\n          }\n          *output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;\n          return true;\n        }" { (expression_statement "iVar2 = pIVar11[-1].output_offset;" (assignment_expression "iVar2 = pIVar11[-1].output_offset" identifier = (field_expression "pIVar11[-1].output_offset" (subscript_expression "pIVar11[-1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "*output_offset = iVar2;" (assignment_expression "*output_offset = iVar2" (pointer_expression "*output_offset" * identifier) = identifier) ;) (if_statement "if (iVar2 == -1) {\n            return true;\n          }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n            return true;\n          }" { (return_statement "return true;" return true ;) })) (expression_statement "*output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2;" (assignment_expression "*output_offset = (input_offset - pIVar11[-1].input_offset) + iVar2" (pointer_expression "*output_offset" * identifier) = (binary_expression "(input_offset - pIVar11[-1].input_offset) + iVar2" (parenthesized_expression "(input_offset - pIVar11[-1].input_offset)" ( (binary_expression "input_offset - pIVar11[-1].input_offset" identifier - (field_expression "pIVar11[-1].input_offset" (subscript_expression "pIVar11[-1]" identifier [ number_literal ]) . field_identifier)) )) + identifier)) ;) (return_statement "return true;" return true ;) })) }))) })) })) (return_statement "return false;" return false ;) })))
(translation_unit "undefined4 __thiscall\ngold::Object_merge_map::get_output_offset\n          (Object_merge_map *this,uint param_1,int param_2,int *param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  \n  if (param_1 == 0xffffffff) {\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }\n  puVar5 = *(uint **)this;\n  if (*(uint **)(this + 4) != puVar5) {\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 __thiscall\ngold::Object_merge_map::get_output_offset\n          (Object_merge_map *this,uint param_1,int param_2,int *param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  \n  if (param_1 == 0xffffffff) {\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }\n  puVar5 = *(uint **)this;\n  if (*(uint **)(this + 4) != puVar5) {\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }\n  return 0;\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Object_merge_map::" identifier : : identifier : :) (function_declarator "get_output_offset\n          (Object_merge_map *this,uint param_1,int param_2,int *param_3)" identifier (parameter_list "(Object_merge_map *this,uint param_1,int param_2,int *param_3)" ( (parameter_declaration "Object_merge_map *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  \n  if (param_1 == 0xffffffff) {\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }\n  puVar5 = *(uint **)this;\n  if (*(uint **)(this + 4) != puVar5) {\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (if_statement "if (param_1 == 0xffffffff) {\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }" if (parenthesized_expression "(param_1 == 0xffffffff)" ( (binary_expression "param_1 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }" { (expression_statement "FUN_0028bb10();" (call_expression "FUN_0028bb10()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);" statement_identifier : (expression_statement "uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);" (assignment_expression "uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8)" identifier = (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8)" ( (binary_expression "PTR_DAT_0043226c + 0x31a0" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0043226c + 0x35a8" identifier + number_literal) )))) ;)) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "puVar5 = *(uint **)this;" (assignment_expression "puVar5 = *(uint **)this" identifier = (pointer_expression "*(uint **)this" * (cast_expression "(uint **)this" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (*(uint **)(this + 4) != puVar5) {\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(*(uint **)(this + 4) != puVar5)" ( (binary_expression "*(uint **)(this + 4) != puVar5" (pointer_expression "*(uint **)(this + 4)" * (cast_expression "(uint **)(this + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }" { (expression_statement "uVar1 = *puVar5;" (assignment_expression "uVar1 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (while_statement "while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }" while (parenthesized_expression "(param_1 != uVar1)" ( (binary_expression "param_1 != uVar1" identifier != identifier) )) (compound_statement "{\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }" { (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (if_statement "if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }" if (parenthesized_expression "(*(uint **)(this + 4) == puVar5)" ( (binary_expression "*(uint **)(this + 4) == puVar5" (pointer_expression "*(uint **)(this + 4)" * (cast_expression "(uint **)(this + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar1 = *puVar5;" (assignment_expression "uVar1 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) })) (expression_statement "uVar1 = puVar5[1];" (assignment_expression "uVar1 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (if_statement "if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }" { (expression_statement "piVar10 = *(int **)(uVar1 + 8);" (assignment_expression "piVar10 = *(int **)(uVar1 + 8)" identifier = (pointer_expression "*(int **)(uVar1 + 8)" * (cast_expression "(int **)(uVar1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar1 + 8)" ( (binary_expression "uVar1 + 8" identifier + number_literal) ))))) ;) (expression_statement "piVar8 = *(int **)(uVar1 + 4);" (assignment_expression "piVar8 = *(int **)(uVar1 + 4)" identifier = (pointer_expression "*(int **)(uVar1 + 4)" * (cast_expression "(int **)(uVar1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar1 + 4)" ( (binary_expression "uVar1 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;" (assignment_expression "iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555" identifier = (binary_expression "((int)piVar10 - (int)piVar8 >> 2) * -0x55555555" (parenthesized_expression "((int)piVar10 - (int)piVar8 >> 2)" ( (binary_expression "(int)piVar10 - (int)piVar8 >> 2" (binary_expression "(int)piVar10 - (int)piVar8" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" identifier = identifier) ;) (if_statement "if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }" if (parenthesized_expression "(*(char *)(uVar1 + 0x10) == '\0')" ( (binary_expression "*(char *)(uVar1 + 0x10) == '\0'" (pointer_expression "*(char *)(uVar1 + 0x10)" * (cast_expression "(char *)(uVar1 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + 0x10)" ( (binary_expression "uVar1 + 0x10" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }" { (if_statement "if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }" if (parenthesized_expression "(piVar8 != piVar10)" ( (binary_expression "piVar8 != piVar10" identifier != identifier) )) (compound_statement "{\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }" { (labeled_statement "std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" statement_identifier (ERROR "::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold:" : : (binary_expression "__introsort_loop<__normal_iterator<gold" (binary_expression "__introsort_loop<__normal_iterator" identifier < identifier) < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry*,std" identifier (ERROR "::Input_merge_entry*" : : identifier *) , identifier) : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" statement_identifier (ERROR "::Input_merge_entry,std::allocator<gold:" : : (comma_expression "Input_merge_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" statement_identifier (ERROR "::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold:" : : (comma_expression "Input_merge_entry>>>,int,__ops" identifier (ERROR ">>>" >> >) , (comma_expression "int,__ops" identifier , identifier)) : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" (binary_expression "Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0)" identifier >> (parenthesized_expression "(piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0)" ( (comma_expression "piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0" identifier , (comma_expression "piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0" identifier , (comma_expression "(0x1f - LZCOUNT(iVar2)) * 2,0" (binary_expression "(0x1f - LZCOUNT(iVar2)) * 2" (parenthesized_expression "(0x1f - LZCOUNT(iVar2))" ( (binary_expression "0x1f - LZCOUNT(iVar2)" number_literal - (call_expression "LZCOUNT(iVar2)" identifier (argument_list "(iVar2)" ( identifier )))) )) * number_literal) , number_literal))) ))) ;))))) (if_statement "if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }" if (parenthesized_expression "((int)piVar10 - (int)piVar8 < 0xc1)" ( (binary_expression "(int)piVar10 - (int)piVar8 < 0xc1" (binary_expression "(int)piVar10 - (int)piVar8" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }" { (labeled_statement "std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);" statement_identifier (ERROR "::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold:" : : (binary_expression "__insertion_sort<__normal_iterator<gold" (binary_expression "__insertion_sort<__normal_iterator" identifier < identifier) < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry*,std" identifier (ERROR "::Input_merge_entry*" : : identifier *) , identifier) : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);" statement_identifier (ERROR "::Input_merge_entry,std::allocator<gold:" : : (comma_expression "Input_merge_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);" statement_identifier (ERROR "::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold:" : : (binary_expression "Input_merge_entry>>>,__ops" identifier >> (ERROR ">," > ,) identifier) : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_compare>>\n                      (piVar8,piVar10,0);" (binary_expression "Input_merge_compare>>\n                      (piVar8,piVar10,0)" identifier >> (parenthesized_expression "(piVar8,piVar10,0)" ( (comma_expression "piVar8,piVar10,0" identifier , (comma_expression "piVar10,0" identifier , number_literal)) ))) ;))))) }) (else_clause "else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }" else (compound_statement "{\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }" { (expression_statement "piVar9 = piVar8 + 0x30;" (assignment_expression "piVar9 = piVar8 + 0x30" identifier = (binary_expression "piVar8 + 0x30" identifier + number_literal)) ;) (labeled_statement "std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);" statement_identifier (ERROR "::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold:" : : (binary_expression "__insertion_sort<__normal_iterator<gold" (binary_expression "__insertion_sort<__normal_iterator" identifier < identifier) < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry*,std" identifier (ERROR "::Input_merge_entry*" : : identifier *) , identifier) : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);" statement_identifier (ERROR "::Input_merge_entry,std::allocator<gold:" : : (comma_expression "Input_merge_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);" statement_identifier (ERROR "::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold:" : : (binary_expression "Input_merge_entry>>>,__ops" identifier >> (ERROR ">," > ,) identifier) : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_compare>>\n                      (piVar8,piVar9,0);" (binary_expression "Input_merge_compare>>\n                      (piVar8,piVar9,0)" identifier >> (parenthesized_expression "(piVar8,piVar9,0)" ( (comma_expression "piVar8,piVar9,0" identifier , (comma_expression "piVar9,0" identifier , number_literal)) ))) ;))))) (for_statement "for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }" for ( ; (binary_expression "piVar9 != piVar10" identifier != identifier) ; (assignment_expression "piVar9 = piVar9 + 3" identifier = (binary_expression "piVar9 + 3" identifier + number_literal)) ) (compound_statement "{\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }" { (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iVar2 = piVar9[-3];" (assignment_expression "iVar2 = piVar9[-3]" identifier = (subscript_expression "piVar9[-3]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = piVar9[1];" (assignment_expression "iVar7 = piVar9[1]" identifier = (subscript_expression "piVar9[1]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = piVar9[2];" (assignment_expression "iVar6 = piVar9[2]" identifier = (subscript_expression "piVar9[2]" identifier [ number_literal ])) ;) (expression_statement "piVar8 = piVar9;" (assignment_expression "piVar8 = piVar9" identifier = identifier) ;) (while_statement "while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }" while (parenthesized_expression "(iVar4 < iVar2)" ( (binary_expression "iVar4 < iVar2" identifier < identifier) )) (compound_statement "{\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }" { (expression_statement "iVar2 = piVar8[-6];" (assignment_expression "iVar2 = piVar8[-6]" identifier = (subscript_expression "piVar8[-6]" identifier [ number_literal ])) ;) (expression_statement "*piVar8 = piVar8[-3];" (assignment_expression "*piVar8 = piVar8[-3]" (pointer_expression "*piVar8" * identifier) = (subscript_expression "piVar8[-3]" identifier [ number_literal ])) ;) (expression_statement "piVar8[1] = piVar8[-2];" (assignment_expression "piVar8[1] = piVar8[-2]" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = (subscript_expression "piVar8[-2]" identifier [ number_literal ])) ;) (expression_statement "piVar8[2] = piVar8[-1];" (assignment_expression "piVar8[2] = piVar8[-1]" (subscript_expression "piVar8[2]" identifier [ number_literal ]) = (subscript_expression "piVar8[-1]" identifier [ number_literal ])) ;) (expression_statement "piVar8 = piVar8 + -3;" (assignment_expression "piVar8 = piVar8 + -3" identifier = (binary_expression "piVar8 + -3" identifier + number_literal)) ;) })) (expression_statement "*piVar8 = iVar4;" (assignment_expression "*piVar8 = iVar4" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "piVar8[1] = iVar7;" (assignment_expression "piVar8[1] = iVar7" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar8[2] = iVar6;" (assignment_expression "piVar8[2] = iVar6" (subscript_expression "piVar8[2]" identifier [ number_literal ]) = identifier) ;) })) }))) (expression_statement "piVar8 = *(int **)(uVar1 + 4);" (assignment_expression "piVar8 = *(int **)(uVar1 + 4)" identifier = (pointer_expression "*(int **)(uVar1 + 4)" * (cast_expression "(int **)(uVar1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar1 + 4)" ( (binary_expression "uVar1 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;" (assignment_expression "iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555" identifier = (binary_expression "(*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(uVar1 + 8) - (int)piVar8 >> 2)" ( (binary_expression "*(int *)(uVar1 + 8) - (int)piVar8 >> 2" (binary_expression "*(int *)(uVar1 + 8) - (int)piVar8" (pointer_expression "*(int *)(uVar1 + 8)" * (cast_expression "(int *)(uVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + 8)" ( (binary_expression "uVar1 + 8" identifier + number_literal) )))) - (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) })) (expression_statement "*(undefined1 *)(uVar1 + 0x10) = 1;" (assignment_expression "*(undefined1 *)(uVar1 + 0x10) = 1" (pointer_expression "*(undefined1 *)(uVar1 + 0x10)" * (cast_expression "(undefined1 *)(uVar1 + 0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + 0x10)" ( (binary_expression "uVar1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" identifier = identifier) ;) })) (for_statement "for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }" for ( ; (binary_expression "0 < iVar2" number_literal < identifier) ; (assignment_expression "iVar2 = (iVar2 - iVar4) + -1" identifier = (binary_expression "(iVar2 - iVar4) + -1" (parenthesized_expression "(iVar2 - iVar4)" ( (binary_expression "iVar2 - iVar4" identifier - identifier) )) + number_literal)) ) (compound_statement "{\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }" { (while_statement "while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }" { (expression_statement "iVar4 = iVar2 >> 1;" (assignment_expression "iVar4 = iVar2 >> 1" identifier = (binary_expression "iVar2 >> 1" identifier >> number_literal)) ;) (if_statement "if (piVar8[iVar4 * 3] <= param_2) break;" if (parenthesized_expression "(piVar8[iVar4 * 3] <= param_2)" ( (binary_expression "piVar8[iVar4 * 3] <= param_2" (subscript_expression "piVar8[iVar4 * 3]" identifier [ (binary_expression "iVar4 * 3" identifier * number_literal) ]) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) (if_statement "if (iVar4 == 0) goto LAB_0028cbe4;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0028cbe4;" goto statement_identifier ;)) })) (expression_statement "piVar8 = piVar8 + iVar4 * 3 + 3;" (assignment_expression "piVar8 = piVar8 + iVar4 * 3 + 3" identifier = (binary_expression "piVar8 + iVar4 * 3 + 3" (binary_expression "piVar8 + iVar4 * 3" identifier + (binary_expression "iVar4 * 3" identifier * number_literal)) + number_literal)) ;) })) (labeled_statement "LAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }" statement_identifier : (if_statement "if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }" if (parenthesized_expression "(piVar8 != piVar9)" ( (binary_expression "piVar8 != piVar9" identifier != identifier) )) (compound_statement "{\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }" { (if_statement "if (param_2 < piVar8[-3]) goto LAB_0028cd98;" if (parenthesized_expression "(param_2 < piVar8[-3])" ( (binary_expression "param_2 < piVar8[-3]" identifier < (subscript_expression "piVar8[-3]" identifier [ number_literal ])) )) (goto_statement "goto LAB_0028cd98;" goto statement_identifier ;)) (if_statement "if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }" if (parenthesized_expression "(param_2 - piVar8[-3] < piVar8[-2])" ( (binary_expression "param_2 - piVar8[-3] < piVar8[-2]" (binary_expression "param_2 - piVar8[-3]" identifier - (subscript_expression "piVar8[-3]" identifier [ number_literal ])) < (subscript_expression "piVar8[-2]" identifier [ number_literal ])) )) (compound_statement "{\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }" { (expression_statement "iVar2 = piVar8[-1];" (assignment_expression "iVar2 = piVar8[-1]" identifier = (subscript_expression "piVar8[-1]" identifier [ number_literal ])) ;) (expression_statement "*param_3 = iVar2;" (assignment_expression "*param_3 = iVar2" (pointer_expression "*param_3" * identifier) = identifier) ;) (if_statement "if (iVar2 == -1) {\n            return 1;\n          }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n            return 1;\n          }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "*param_3 = (param_2 - piVar8[-3]) + iVar2;" (assignment_expression "*param_3 = (param_2 - piVar8[-3]) + iVar2" (pointer_expression "*param_3" * identifier) = (binary_expression "(param_2 - piVar8[-3]) + iVar2" (parenthesized_expression "(param_2 - piVar8[-3])" ( (binary_expression "param_2 - piVar8[-3]" identifier - (subscript_expression "piVar8[-3]" identifier [ number_literal ])) )) + identifier)) ;) (return_statement "return 1;" return number_literal ;) })) }))) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ms_call_modifier __thiscall) (ERROR IDENT : : IDENT : :) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) )))) ;)) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (labeled_statement statement_identifier (ERROR : : (binary_expression (binary_expression IDENT < IDENT) < IDENT) : : (comma_expression IDENT (ERROR : : IDENT *) , IDENT) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT (ERROR >> >) , (comma_expression IDENT , IDENT)) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier : (ERROR :) (expression_statement (binary_expression IDENT >> (parenthesized_expression ( (comma_expression IDENT , (comma_expression IDENT , (comma_expression (binary_expression (parenthesized_expression ( (binary_expression LIT - (call_expression IDENT (argument_list ( IDENT )))) )) * LIT) , LIT))) ))) ;))))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < LIT) )) (compound_statement { (labeled_statement statement_identifier (ERROR : : (binary_expression (binary_expression IDENT < IDENT) < IDENT) : : (comma_expression IDENT (ERROR : : IDENT *) , IDENT) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier (ERROR : : (binary_expression IDENT >> (ERROR > ,) IDENT) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier : (ERROR :) (expression_statement (binary_expression IDENT >> (parenthesized_expression ( (comma_expression IDENT , (comma_expression IDENT , LIT)) ))) ;))))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier (ERROR : : (binary_expression (binary_expression IDENT < IDENT) < IDENT) : : (comma_expression IDENT (ERROR : : IDENT *) , IDENT) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier (ERROR : : (binary_expression IDENT >> (ERROR > ,) IDENT) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier : (ERROR :) (expression_statement (binary_expression IDENT >> (parenthesized_expression ( (comma_expression IDENT , (comma_expression IDENT , LIT)) ))) ;))))) (for_statement for ( ; (binary_expression IDENT != IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_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) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )) * LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (for_statement for ( ; (binary_expression LIT < IDENT) ; (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT)) ) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT)) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - (subscript_expression IDENT [ LIT ])) < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (subscript_expression IDENT [ LIT ])) )) + IDENT)) ;) (return_statement return LIT ;) })) }))) })) })) (return_statement return LIT ;) })))
(function_definition "undefined4 __thiscall\ngold::Object_merge_map::get_output_offset\n          (Object_merge_map *this,uint param_1,int param_2,int *param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  \n  if (param_1 == 0xffffffff) {\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }\n  puVar5 = *(uint **)this;\n  if (*(uint **)(this + 4) != puVar5) {\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }\n  return 0;\n}" (type_identifier "undefined4") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::Object_merge_map::" (identifier "gold") (: ":") (: ":") (identifier "Object_merge_map") (: ":") (: ":")) (function_declarator "get_output_offset\n          (Object_merge_map *this,uint param_1,int param_2,int *param_3)" (identifier "get_output_offset") (parameter_list "(Object_merge_map *this,uint param_1,int param_2,int *param_3)" (( "(") (parameter_declaration "Object_merge_map *this" (type_identifier "Object_merge_map") (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  \n  if (param_1 == 0xffffffff) {\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }\n  puVar5 = *(uint **)this;\n  if (*(uint **)(this + 4) != puVar5) {\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }\n  return 0;\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 "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (if_statement "if (param_1 == 0xffffffff) {\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(param_1 == 0xffffffff)" (( "(") (binary_expression "param_1 == 0xffffffff" (identifier "param_1") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n    FUN_0028bb10();\nLAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);\n    return uVar3;\n  }" ({ "{") (expression_statement "FUN_0028bb10();" (call_expression "FUN_0028bb10()" (identifier "FUN_0028bb10") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0028cd98:\n    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);" (statement_identifier "LAB_0028cd98") (: ":") (expression_statement "uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);" (assignment_expression "uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8)" (identifier "uVar3") (= "=") (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" (( "(") (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" (* "*") (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_gold_unreachable_004323c4"))) () ")")) (argument_list "(PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8)" (( "(") (binary_expression "PTR_DAT_0043226c + 0x31a0" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x31a0")) (, ",") (number_literal "0xa1") (, ",") (binary_expression "PTR_DAT_0043226c + 0x35a8" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x35a8")) () ")")))) (; ";"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "puVar5 = *(uint **)this;" (assignment_expression "puVar5 = *(uint **)this" (identifier "puVar5") (= "=") (pointer_expression "*(uint **)this" (* "*") (cast_expression "(uint **)this" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "this")))) (; ";")) (if_statement "if (*(uint **)(this + 4) != puVar5) {\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*(uint **)(this + 4) != puVar5)" (( "(") (binary_expression "*(uint **)(this + 4) != puVar5" (pointer_expression "*(uint **)(this + 4)" (* "*") (cast_expression "(uint **)(this + 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 4)" (( "(") (binary_expression "this + 4" (identifier "this") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (identifier "puVar5")) () ")")) (compound_statement "{\n    uVar1 = *puVar5;\n    while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }\n    uVar1 = puVar5[1];\n    if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "uVar1 = *puVar5;" (assignment_expression "uVar1 = *puVar5" (identifier "uVar1") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (while_statement "while (param_1 != uVar1) {\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }" (while "while") (parenthesized_expression "(param_1 != uVar1)" (( "(") (binary_expression "param_1 != uVar1" (identifier "param_1") (!= "!=") (identifier "uVar1")) () ")")) (compound_statement "{\n      puVar5 = puVar5 + 2;\n      if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }\n      uVar1 = *puVar5;\n    }" ({ "{") (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (*(uint **)(this + 4) == puVar5) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(*(uint **)(this + 4) == puVar5)" (( "(") (binary_expression "*(uint **)(this + 4) == puVar5" (pointer_expression "*(uint **)(this + 4)" (* "*") (cast_expression "(uint **)(this + 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 4)" (( "(") (binary_expression "this + 4" (identifier "this") (+ "+") (number_literal "4")) () ")")))) (== "==") (identifier "puVar5")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar1 = *puVar5;" (assignment_expression "uVar1 = *puVar5" (identifier "uVar1") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (} "}"))) (expression_statement "uVar1 = puVar5[1];" (assignment_expression "uVar1 = puVar5[1]" (identifier "uVar1") (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (uVar1 != 0) {\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar10 = *(int **)(uVar1 + 8);\n      piVar8 = *(int **)(uVar1 + 4);\n      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;\n      piVar9 = piVar8;\n      if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }\n      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }\nLAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }\n    }" ({ "{") (expression_statement "piVar10 = *(int **)(uVar1 + 8);" (assignment_expression "piVar10 = *(int **)(uVar1 + 8)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(uVar1 + 8)" (* "*") (cast_expression "(int **)(uVar1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar1 + 8)" (( "(") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "piVar8 = *(int **)(uVar1 + 4);" (assignment_expression "piVar8 = *(int **)(uVar1 + 4)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(uVar1 + 4)" (* "*") (cast_expression "(int **)(uVar1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar1 + 4)" (( "(") (binary_expression "uVar1 + 4" (identifier "uVar1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;" (assignment_expression "iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555" (identifier "iVar2") (= "=") (binary_expression "((int)piVar10 - (int)piVar8 >> 2) * -0x55555555" (parenthesized_expression "((int)piVar10 - (int)piVar8 >> 2)" (( "(") (binary_expression "(int)piVar10 - (int)piVar8 >> 2" (binary_expression "(int)piVar10 - (int)piVar8" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (- "-") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x55555555"))) (; ";")) (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" (identifier "piVar9") (= "=") (identifier "piVar8")) (; ";")) (if_statement "if (*(char *)(uVar1 + 0x10) == '\0') {\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }" (if "if") (parenthesized_expression "(*(char *)(uVar1 + 0x10) == '\0')" (( "(") (binary_expression "*(char *)(uVar1 + 0x10) == '\0'" (pointer_expression "*(char *)(uVar1 + 0x10)" (* "*") (cast_expression "(char *)(uVar1 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + 0x10)" (( "(") (binary_expression "uVar1 + 0x10" (identifier "uVar1") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }\n        *(undefined1 *)(uVar1 + 0x10) = 1;\n        piVar9 = piVar8;\n      }" ({ "{") (if_statement "if (piVar8 != piVar10) {\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }" (if "if") (parenthesized_expression "(piVar8 != piVar10)" (( "(") (binary_expression "piVar8 != piVar10" (identifier "piVar8") (!= "!=") (identifier "piVar10")) () ")")) (compound_statement "{\n          std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);\n          if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }\n          piVar8 = *(int **)(uVar1 + 4);\n          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;\n        }" ({ "{") (labeled_statement "std::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" (statement_identifier "std") (ERROR "::\n          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold:" (: ":") (: ":") (binary_expression "__introsort_loop<__normal_iterator<gold" (binary_expression "__introsort_loop<__normal_iterator" (identifier "__introsort_loop") (< "<") (identifier "__normal_iterator")) (< "<") (identifier "gold")) (: ":") (: ":") (comma_expression "Object_merge_map::Input_merge_entry*,std" (identifier "Object_merge_map") (ERROR "::Input_merge_entry*" (: ":") (: ":") (identifier "Input_merge_entry") (* "*")) (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "vector<gold" (identifier "vector") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" (statement_identifier "Object_merge_map") (ERROR "::Input_merge_entry,std::allocator<gold:" (: ":") (: ":") (comma_expression "Input_merge_entry,std" (identifier "Input_merge_entry") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<gold" (identifier "allocator") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" (statement_identifier "Object_merge_map") (ERROR "::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold:" (: ":") (: ":") (comma_expression "Input_merge_entry>>>,int,__ops" (identifier "Input_merge_entry") (ERROR ">>>" (>> ">>") (> ">")) (, ",") (comma_expression "int,__ops" (identifier "int") (, ",") (identifier "__ops"))) (: ":") (: ":") (binary_expression "_Iter_comp_iter<gold" (identifier "_Iter_comp_iter") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Object_merge_map::Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" (statement_identifier "Object_merge_map") (: ":") (ERROR ":" (: ":")) (expression_statement "Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);" (binary_expression "Input_merge_compare>>\n                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0)" (identifier "Input_merge_compare") (>> ">>") (parenthesized_expression "(piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0)" (( "(") (comma_expression "piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0" (identifier "piVar8") (, ",") (comma_expression "piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0" (identifier "piVar10") (, ",") (comma_expression "(0x1f - LZCOUNT(iVar2)) * 2,0" (binary_expression "(0x1f - LZCOUNT(iVar2)) * 2" (parenthesized_expression "(0x1f - LZCOUNT(iVar2))" (( "(") (binary_expression "0x1f - LZCOUNT(iVar2)" (number_literal "0x1f") (- "-") (call_expression "LZCOUNT(iVar2)" (identifier "LZCOUNT") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")")))) () ")")) (* "*") (number_literal "2")) (, ",") (number_literal "0")))) () ")"))) (; ";")))))) (if_statement "if ((int)piVar10 - (int)piVar8 < 0xc1) {\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }\n          else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }" (if "if") (parenthesized_expression "((int)piVar10 - (int)piVar8 < 0xc1)" (( "(") (binary_expression "(int)piVar10 - (int)piVar8 < 0xc1" (binary_expression "(int)piVar10 - (int)piVar8" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (- "-") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (< "<") (number_literal "0xc1")) () ")")) (compound_statement "{\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);\n          }" ({ "{") (labeled_statement "std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);" (statement_identifier "std") (ERROR "::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold:" (: ":") (: ":") (binary_expression "__insertion_sort<__normal_iterator<gold" (binary_expression "__insertion_sort<__normal_iterator" (identifier "__insertion_sort") (< "<") (identifier "__normal_iterator")) (< "<") (identifier "gold")) (: ":") (: ":") (comma_expression "Object_merge_map::Input_merge_entry*,std" (identifier "Object_merge_map") (ERROR "::Input_merge_entry*" (: ":") (: ":") (identifier "Input_merge_entry") (* "*")) (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "vector<gold" (identifier "vector") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);" (statement_identifier "Object_merge_map") (ERROR "::Input_merge_entry,std::allocator<gold:" (: ":") (: ":") (comma_expression "Input_merge_entry,std" (identifier "Input_merge_entry") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<gold" (identifier "allocator") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);" (statement_identifier "Object_merge_map") (ERROR "::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold:" (: ":") (: ":") (binary_expression "Input_merge_entry>>>,__ops" (identifier "Input_merge_entry") (>> ">>") (ERROR ">," (> ">") (, ",")) (identifier "__ops")) (: ":") (: ":") (binary_expression "_Iter_comp_iter<gold" (identifier "_Iter_comp_iter") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar10,0);" (statement_identifier "Object_merge_map") (: ":") (ERROR ":" (: ":")) (expression_statement "Input_merge_compare>>\n                      (piVar8,piVar10,0);" (binary_expression "Input_merge_compare>>\n                      (piVar8,piVar10,0)" (identifier "Input_merge_compare") (>> ">>") (parenthesized_expression "(piVar8,piVar10,0)" (( "(") (comma_expression "piVar8,piVar10,0" (identifier "piVar8") (, ",") (comma_expression "piVar10,0" (identifier "piVar10") (, ",") (number_literal "0"))) () ")"))) (; ";")))))) (} "}")) (else_clause "else {\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }" (else "else") (compound_statement "{\n            piVar9 = piVar8 + 0x30;\n            std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);\n            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }\n          }" ({ "{") (expression_statement "piVar9 = piVar8 + 0x30;" (assignment_expression "piVar9 = piVar8 + 0x30" (identifier "piVar9") (= "=") (binary_expression "piVar8 + 0x30" (identifier "piVar8") (+ "+") (number_literal "0x30"))) (; ";")) (labeled_statement "std::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);" (statement_identifier "std") (ERROR "::\n            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold:" (: ":") (: ":") (binary_expression "__insertion_sort<__normal_iterator<gold" (binary_expression "__insertion_sort<__normal_iterator" (identifier "__insertion_sort") (< "<") (identifier "__normal_iterator")) (< "<") (identifier "gold")) (: ":") (: ":") (comma_expression "Object_merge_map::Input_merge_entry*,std" (identifier "Object_merge_map") (ERROR "::Input_merge_entry*" (: ":") (: ":") (identifier "Input_merge_entry") (* "*")) (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "vector<gold" (identifier "vector") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);" (statement_identifier "Object_merge_map") (ERROR "::Input_merge_entry,std::allocator<gold:" (: ":") (: ":") (comma_expression "Input_merge_entry,std" (identifier "Input_merge_entry") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<gold" (identifier "allocator") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);" (statement_identifier "Object_merge_map") (ERROR "::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold:" (: ":") (: ":") (binary_expression "Input_merge_entry>>>,__ops" (identifier "Input_merge_entry") (>> ">>") (ERROR ">," (> ">") (, ",")) (identifier "__ops")) (: ":") (: ":") (binary_expression "_Iter_comp_iter<gold" (identifier "_Iter_comp_iter") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Object_merge_map::Input_merge_compare>>\n                      (piVar8,piVar9,0);" (statement_identifier "Object_merge_map") (: ":") (ERROR ":" (: ":")) (expression_statement "Input_merge_compare>>\n                      (piVar8,piVar9,0);" (binary_expression "Input_merge_compare>>\n                      (piVar8,piVar9,0)" (identifier "Input_merge_compare") (>> ">>") (parenthesized_expression "(piVar8,piVar9,0)" (( "(") (comma_expression "piVar8,piVar9,0" (identifier "piVar8") (, ",") (comma_expression "piVar9,0" (identifier "piVar9") (, ",") (number_literal "0"))) () ")"))) (; ";")))))) (for_statement "for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }" (for "for") (( "(") (; ";") (binary_expression "piVar9 != piVar10" (identifier "piVar9") (!= "!=") (identifier "piVar10")) (; ";") (assignment_expression "piVar9 = piVar9 + 3" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 3" (identifier "piVar9") (+ "+") (number_literal "3"))) () ")") (compound_statement "{\n              iVar4 = *piVar9;\n              iVar2 = piVar9[-3];\n              iVar7 = piVar9[1];\n              iVar6 = piVar9[2];\n              piVar8 = piVar9;\n              while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }\n              *piVar8 = iVar4;\n              piVar8[1] = iVar7;\n              piVar8[2] = iVar6;\n            }" ({ "{") (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" (identifier "iVar4") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "iVar2 = piVar9[-3];" (assignment_expression "iVar2 = piVar9[-3]" (identifier "iVar2") (= "=") (subscript_expression "piVar9[-3]" (identifier "piVar9") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "iVar7 = piVar9[1];" (assignment_expression "iVar7 = piVar9[1]" (identifier "iVar7") (= "=") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar6 = piVar9[2];" (assignment_expression "iVar6 = piVar9[2]" (identifier "iVar6") (= "=") (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar8 = piVar9;" (assignment_expression "piVar8 = piVar9" (identifier "piVar8") (= "=") (identifier "piVar9")) (; ";")) (while_statement "while (iVar4 < iVar2) {\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }" (while "while") (parenthesized_expression "(iVar4 < iVar2)" (( "(") (binary_expression "iVar4 < iVar2" (identifier "iVar4") (< "<") (identifier "iVar2")) () ")")) (compound_statement "{\n                iVar2 = piVar8[-6];\n                *piVar8 = piVar8[-3];\n                piVar8[1] = piVar8[-2];\n                piVar8[2] = piVar8[-1];\n                piVar8 = piVar8 + -3;\n              }" ({ "{") (expression_statement "iVar2 = piVar8[-6];" (assignment_expression "iVar2 = piVar8[-6]" (identifier "iVar2") (= "=") (subscript_expression "piVar8[-6]" (identifier "piVar8") ([ "[") (number_literal "-6") (] "]"))) (; ";")) (expression_statement "*piVar8 = piVar8[-3];" (assignment_expression "*piVar8 = piVar8[-3]" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (subscript_expression "piVar8[-3]" (identifier "piVar8") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "piVar8[1] = piVar8[-2];" (assignment_expression "piVar8[1] = piVar8[-2]" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "piVar8[-2]" (identifier "piVar8") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "piVar8[2] = piVar8[-1];" (assignment_expression "piVar8[2] = piVar8[-1]" (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "piVar8[-1]" (identifier "piVar8") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "piVar8 = piVar8 + -3;" (assignment_expression "piVar8 = piVar8 + -3" (identifier "piVar8") (= "=") (binary_expression "piVar8 + -3" (identifier "piVar8") (+ "+") (number_literal "-3"))) (; ";")) (} "}"))) (expression_statement "*piVar8 = iVar4;" (assignment_expression "*piVar8 = iVar4" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "piVar8[1] = iVar7;" (assignment_expression "piVar8[1] = iVar7" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "piVar8[2] = iVar6;" (assignment_expression "piVar8[2] = iVar6" (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (} "}"))) (} "}")))) (expression_statement "piVar8 = *(int **)(uVar1 + 4);" (assignment_expression "piVar8 = *(int **)(uVar1 + 4)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(uVar1 + 4)" (* "*") (cast_expression "(int **)(uVar1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar1 + 4)" (( "(") (binary_expression "uVar1 + 4" (identifier "uVar1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;" (assignment_expression "iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555" (identifier "iVar2") (= "=") (binary_expression "(*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(uVar1 + 8) - (int)piVar8 >> 2)" (( "(") (binary_expression "*(int *)(uVar1 + 8) - (int)piVar8 >> 2" (binary_expression "*(int *)(uVar1 + 8) - (int)piVar8" (pointer_expression "*(int *)(uVar1 + 8)" (* "*") (cast_expression "(int *)(uVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + 8)" (( "(") (binary_expression "uVar1 + 8" (identifier "uVar1") (+ "+") (number_literal "8")) () ")")))) (- "-") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x55555555"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(uVar1 + 0x10) = 1;" (assignment_expression "*(undefined1 *)(uVar1 + 0x10) = 1" (pointer_expression "*(undefined1 *)(uVar1 + 0x10)" (* "*") (cast_expression "(undefined1 *)(uVar1 + 0x10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + 0x10)" (( "(") (binary_expression "uVar1 + 0x10" (identifier "uVar1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" (identifier "piVar9") (= "=") (identifier "piVar8")) (; ";")) (} "}"))) (for_statement "for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }" (for "for") (( "(") (; ";") (binary_expression "0 < iVar2" (number_literal "0") (< "<") (identifier "iVar2")) (; ";") (assignment_expression "iVar2 = (iVar2 - iVar4) + -1" (identifier "iVar2") (= "=") (binary_expression "(iVar2 - iVar4) + -1" (parenthesized_expression "(iVar2 - iVar4)" (( "(") (binary_expression "iVar2 - iVar4" (identifier "iVar2") (- "-") (identifier "iVar4")) () ")")) (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n        while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }\n        piVar8 = piVar8 + iVar4 * 3 + 3;\n      }" ({ "{") (while_statement "while( true ) {\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          iVar4 = iVar2 >> 1;\n          if (piVar8[iVar4 * 3] <= param_2) break;\n          iVar2 = iVar4;\n          if (iVar4 == 0) goto LAB_0028cbe4;\n        }" ({ "{") (expression_statement "iVar4 = iVar2 >> 1;" (assignment_expression "iVar4 = iVar2 >> 1" (identifier "iVar4") (= "=") (binary_expression "iVar2 >> 1" (identifier "iVar2") (>> ">>") (number_literal "1"))) (; ";")) (if_statement "if (piVar8[iVar4 * 3] <= param_2) break;" (if "if") (parenthesized_expression "(piVar8[iVar4 * 3] <= param_2)" (( "(") (binary_expression "piVar8[iVar4 * 3] <= param_2" (subscript_expression "piVar8[iVar4 * 3]" (identifier "piVar8") ([ "[") (binary_expression "iVar4 * 3" (identifier "iVar4") (* "*") (number_literal "3")) (] "]")) (<= "<=") (identifier "param_2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" (identifier "iVar2") (= "=") (identifier "iVar4")) (; ";")) (if_statement "if (iVar4 == 0) goto LAB_0028cbe4;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0028cbe4;" (goto "goto") (statement_identifier "LAB_0028cbe4") (; ";"))) (} "}"))) (expression_statement "piVar8 = piVar8 + iVar4 * 3 + 3;" (assignment_expression "piVar8 = piVar8 + iVar4 * 3 + 3" (identifier "piVar8") (= "=") (binary_expression "piVar8 + iVar4 * 3 + 3" (binary_expression "piVar8 + iVar4 * 3" (identifier "piVar8") (+ "+") (binary_expression "iVar4 * 3" (identifier "iVar4") (* "*") (number_literal "3"))) (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (labeled_statement "LAB_0028cbe4:\n      if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }" (statement_identifier "LAB_0028cbe4") (: ":") (if_statement "if (piVar8 != piVar9) {\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }" (if "if") (parenthesized_expression "(piVar8 != piVar9)" (( "(") (binary_expression "piVar8 != piVar9" (identifier "piVar8") (!= "!=") (identifier "piVar9")) () ")")) (compound_statement "{\n        if (param_2 < piVar8[-3]) goto LAB_0028cd98;\n        if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }\n      }" ({ "{") (if_statement "if (param_2 < piVar8[-3]) goto LAB_0028cd98;" (if "if") (parenthesized_expression "(param_2 < piVar8[-3])" (( "(") (binary_expression "param_2 < piVar8[-3]" (identifier "param_2") (< "<") (subscript_expression "piVar8[-3]" (identifier "piVar8") ([ "[") (number_literal "-3") (] "]"))) () ")")) (goto_statement "goto LAB_0028cd98;" (goto "goto") (statement_identifier "LAB_0028cd98") (; ";"))) (if_statement "if (param_2 - piVar8[-3] < piVar8[-2]) {\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }" (if "if") (parenthesized_expression "(param_2 - piVar8[-3] < piVar8[-2])" (( "(") (binary_expression "param_2 - piVar8[-3] < piVar8[-2]" (binary_expression "param_2 - piVar8[-3]" (identifier "param_2") (- "-") (subscript_expression "piVar8[-3]" (identifier "piVar8") ([ "[") (number_literal "-3") (] "]"))) (< "<") (subscript_expression "piVar8[-2]" (identifier "piVar8") ([ "[") (number_literal "-2") (] "]"))) () ")")) (compound_statement "{\n          iVar2 = piVar8[-1];\n          *param_3 = iVar2;\n          if (iVar2 == -1) {\n            return 1;\n          }\n          *param_3 = (param_2 - piVar8[-3]) + iVar2;\n          return 1;\n        }" ({ "{") (expression_statement "iVar2 = piVar8[-1];" (assignment_expression "iVar2 = piVar8[-1]" (identifier "iVar2") (= "=") (subscript_expression "piVar8[-1]" (identifier "piVar8") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "*param_3 = iVar2;" (assignment_expression "*param_3 = iVar2" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (iVar2 == -1) {\n            return 1;\n          }" (if "if") (parenthesized_expression "(iVar2 == -1)" (( "(") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            return 1;\n          }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "*param_3 = (param_2 - piVar8[-3]) + iVar2;" (assignment_expression "*param_3 = (param_2 - piVar8[-3]) + iVar2" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "(param_2 - piVar8[-3]) + iVar2" (parenthesized_expression "(param_2 - piVar8[-3])" (( "(") (binary_expression "param_2 - piVar8[-3]" (identifier "param_2") (- "-") (subscript_expression "piVar8[-3]" (identifier "piVar8") ([ "[") (number_literal "-3") (] "]"))) () ")")) (+ "+") (identifier "iVar2"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")))) (} "}"))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* DWARF original prototype: bool get_output_offset(Object_merge_map * this, uint shndx,
   section_offset_type input_offset, section_offset_type * output_offset) */

bool __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 var_1,type_3 var_17,
          type_3 *output_offset)

{
  type_2 var_7;
  int var_16;
  type_4 var_5;
  type_3 sVar4;
  int var_15;
  type_4 var_6;
  type_5 sVar7;
  type_3 sVar8;
  type_5 sVar9;
  type_6 *var_8;
  type_4 var_10;
  type_4 var_14;
  type_4 var_11;
  
  if (var_1 == 0xffffffff) {
    var_2(this,0xffffffff);
LAB_0028cd98:
    (*(type_7 *)PTR_do_gold_unreachable_004323c4)
              (var_3 + 0x31a0,0xa1,var_3 + 0x35a8);
    return false;
  }
  var_6 = (this->section_merge_maps_).
           super__Vector_base<std::pair<unsigned_int,_gold::type_1::type_6*>,_std::allocator<std::pair<unsigned_int,_gold::type_1::type_6*>var_4>var_4>
           ._M_impl._M_start;
  var_5 = (this->section_merge_maps_).
           super__Vector_base<std::pair<unsigned_int,_gold::type_1::type_6*>,_std::allocator<std::pair<unsigned_int,_gold::type_1::type_6*>var_4>var_4>
           ._M_impl._M_finish;
  if (var_5 != var_6) {
    var_7 = var_6->first;
    while (var_1 != var_7) {
      var_6 = var_6 + 1;
      if (var_5 == var_6) {
        return false;
      }
      var_7 = var_6->first;
    }
    var_8 = var_6->second;
    if (var_8 != (type_6 *)0x0) {
      var_11 = (var_8->entries).
                super__Vector_base<gold::Object_merge_map::var_9,_std::allocator<gold::Object_merge_map::var_9>var_4>
                ._M_impl._M_finish;
      var_10 = (var_8->entries).
                super__Vector_base<gold::Object_merge_map::var_9,_std::allocator<gold::Object_merge_map::var_9>var_4>
                ._M_impl._M_start;
      var_16 = ((int)var_11 - (int)var_10 >> 2) * -0x55555555;
      var_14 = var_10;
      if (var_8->sorted == false) {
        if (var_10 != var_11) {
          std::
          __introsort_loop<__gnu_cxx::__normal_iterator<gold::type_1::var_9*,_std::vector<gold::type_1::var_9>var_4>,_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::var_12>var_4>
                    (var_10,var_11,(0x1f - var_13(var_16)) * 2,0);
          if ((int)var_11 - (int)var_10 < 0xc1) {
            std::
            __insertion_sort<__gnu_cxx::__normal_iterator<gold::type_1::var_9*,_std::vector<gold::type_1::var_9>var_4>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::var_12>var_4>
                      (var_10,var_11,0);
          }
          else {
            var_14 = var_10 + 0x10;
            std::
            __insertion_sort<__gnu_cxx::__normal_iterator<gold::type_1::var_9*,_std::vector<gold::type_1::var_9>var_4>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::var_12>var_4>
                      (var_10,var_14,0);
            for (; var_14 != var_11; var_14 = var_14 + 1) {
              var_15 = var_14->var_17;
              var_16 = var_14[-1].var_17;
              sVar9 = var_14->length;
              sVar8 = var_14->output_offset;
              var_10 = var_14;
              while (var_15 < var_16) {
                var_16 = var_10[-2].var_17;
                sVar7 = var_10[-1].length;
                sVar4 = var_10[-1].output_offset;
                var_10->var_17 = var_10[-1].var_17;
                var_10->length = sVar7;
                var_10->output_offset = sVar4;
                var_10 = var_10 + -1;
              }
              var_10->var_17 = var_15;
              var_10->length = sVar9;
              var_10->output_offset = sVar8;
            }
          }
          var_10 = (var_8->entries).
                    super__Vector_base<gold::Object_merge_map::var_9,_std::allocator<gold::Object_merge_map::var_9>var_4>
                    ._M_impl._M_start;
          var_16 = ((int)(var_8->entries).
                        super__Vector_base<gold::type_1::var_9,_std::allocator<gold::type_1::var_9>var_4>
                        ._M_impl._M_finish - (int)var_10 >> 2) * -0x55555555;
        }
        var_8->sorted = true;
        var_14 = var_10;
      }
      for (; 0 < var_16; var_16 = (var_16 - var_15) + -1) {
        while( true ) {
          var_15 = var_16 >> 1;
          if (var_10[var_15].var_17 <= var_17) break;
          var_16 = var_15;
          if (var_15 == 0) goto LAB_0028cbe4;
        }
        var_10 = var_10 + var_15 + 1;
      }
LAB_0028cbe4:
      if (var_10 != var_14) {
        if (var_17 < var_10[-1].var_17) goto LAB_0028cd98;
        if (var_17 - var_10[-1].var_17 < (int)var_10[-1].length) {
          var_16 = var_10[-1].output_offset;
          *output_offset = var_16;
          if (var_16 == -1) {
            return true;
          }
          *output_offset = (var_17 - var_10[-1].var_17) + var_16;
          return true;
        }
      }
    }
  }
  return false;
}


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

/* gold::Object_merge_map::MASKED(unsigned int, int, int*) */

undefined4 __thiscall
gold::Object_merge_map::MASKED
          (Object_merge_map *this,uint param_1,int param_2,int *param_3)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  uint *puVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  int *piVar9;
  int *piVar10;
  
  if (param_1 == 0xffffffff) {
    FUN_0028bb10();
LAB_0028cd98:
    uVar3 = (*(code *)PTR_do_gold_unreachable_004323c4)
                      (PTR_DAT_0043226c + 0x31a0,0xa1,PTR_DAT_0043226c + 0x35a8);
    return uVar3;
  }
  puVar5 = *(uint **)this;
  if (*(uint **)(this + 4) != puVar5) {
    uVar1 = *puVar5;
    while (param_1 != uVar1) {
      puVar5 = puVar5 + 2;
      if (*(uint **)(this + 4) == puVar5) {
        return 0;
      }
      uVar1 = *puVar5;
    }
    uVar1 = puVar5[1];
    if (uVar1 != 0) {
      piVar10 = *(int **)(uVar1 + 8);
      piVar8 = *(int **)(uVar1 + 4);
      iVar2 = ((int)piVar10 - (int)piVar8 >> 2) * -0x55555555;
      piVar9 = piVar8;
      if (*(char *)(uVar1 + 0x10) == '\0') {
        if (piVar8 != piVar10) {
          std::
          __introsort_loop<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,int,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>
                    (piVar8,piVar10,(0x1f - LZCOUNT(iVar2)) * 2,0);
          if ((int)piVar10 - (int)piVar8 < 0xc1) {
            std::
            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>
                      (piVar8,piVar10,0);
          }
          else {
            piVar9 = piVar8 + 0x30;
            std::
            __insertion_sort<__normal_iterator<gold::Object_merge_map::Input_merge_entry*,std::vector<gold::Object_merge_map::Input_merge_entry,std::allocator<gold::Object_merge_map::Input_merge_entry>>>,__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>>
                      (piVar8,piVar9,0);
            for (; piVar9 != piVar10; piVar9 = piVar9 + 3) {
              iVar4 = *piVar9;
              iVar2 = piVar9[-3];
              iVar7 = piVar9[1];
              iVar6 = piVar9[2];
              piVar8 = piVar9;
              while (iVar4 < iVar2) {
                iVar2 = piVar8[-6];
                *piVar8 = piVar8[-3];
                piVar8[1] = piVar8[-2];
                piVar8[2] = piVar8[-1];
                piVar8 = piVar8 + -3;
              }
              *piVar8 = iVar4;
              piVar8[1] = iVar7;
              piVar8[2] = iVar6;
            }
          }
          piVar8 = *(int **)(uVar1 + 4);
          iVar2 = (*(int *)(uVar1 + 8) - (int)piVar8 >> 2) * -0x55555555;
        }
        *(undefined1 *)(uVar1 + 0x10) = 1;
        piVar9 = piVar8;
      }
      for (; 0 < iVar2; iVar2 = (iVar2 - iVar4) + -1) {
        while( true ) {
          iVar4 = iVar2 >> 1;
          if (piVar8[iVar4 * 3] <= param_2) break;
          iVar2 = iVar4;
          if (iVar4 == 0) goto LAB_0028cbe4;
        }
        piVar8 = piVar8 + iVar4 * 3 + 3;
      }
LAB_0028cbe4:
      if (piVar8 != piVar9) {
        if (param_2 < piVar8[-3]) goto LAB_0028cd98;
        if (param_2 - piVar8[-3] < piVar8[-2]) {
          iVar2 = piVar8[-1];
          *param_3 = iVar2;
          if (iVar2 == -1) {
            return 1;
          }
          *param_3 = (param_2 - piVar8[-3]) + iVar2;
          return 1;
        }
      }
    }
  }
  return 0;
}

