
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: void
   _M_construct<char*>(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> * this,
   char * __beg, char * __end, forward_iterator_tag param_4) */

void __thiscall
std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>
          (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *this,char *__beg,
          int __end,uint param_4)

{
  iterator __position;
  iterator __position_00;
  pointer pcVar1;
  int *piVar2;
  uint uVar3;
  int *piVar4;
  int iVar5;
  uint *puVar6;
  undefined *puVar7;
  uint uVar8;
  size_type sVar9;
  int iVar10;
  undefined4 uVar11;
  uint uVar12;
  int *piVar13;
  uint uVar14;
  int iVar15;
  uint *puVar16;
  int *piVar17;
  uint *puVar18;
  int iVar19;
  uint uVar20;
  code *pcVar21;
  undefined *puVar22;
  code *pcVar23;
  undefined4 uVar24;
  undefined4 uVar25;
  int iVar26;
  uint in_stack_ffffffe4;
  size_type __dnew;
  
  iVar26 = 0x4c9240;
  if (__beg != (char *)0x0) {
    uVar12 = __end - (int)__beg;
    __dnew = uVar12;
    if (0xf < uVar12) {
      pcVar1 = (pointer)(*(code *)PTR__M_create_004c141c)(this,&__dnew,0);
      (this->_M_dataplus)._M_p = pcVar1;
      (this->field_2)._M_allocated_capacity = __dnew;
      pcVar21 = *(code **)(iVar26 + -0x3698);
LAB_00151454:
      (*pcVar21)(pcVar1,__beg,uVar12);
      pcVar1 = (this->_M_dataplus)._M_p;
      this->_M_string_length = __dnew;
      pcVar1[__dnew] = '\0';
      return;
    }
    pcVar1 = (this->_M_dataplus)._M_p;
    if (uVar12 == 1) {
      *pcVar1 = *__beg;
      pcVar1 = (this->_M_dataplus)._M_p + 1;
    }
    else {
      pcVar1 = pcVar1 + uVar12;
      if (uVar12 != 0) {
        pcVar1 = pcVar1 + -uVar12;
        pcVar21 = (code *)PTR_memcpy_004c5ba8;
        goto LAB_00151454;
      }
    }
    this->_M_string_length = uVar12;
    *pcVar1 = '\0';
    return;
  }
  if (__end == 0) {
    pcVar1 = (this->_M_dataplus)._M_p;
    this->_M_string_length = 0;
    *pcVar1 = '\0';
    return;
  }
  puVar7 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00;
  puVar22 = PTR___throw_logic_error_004c12d8;
  (*(code *)PTR___throw_logic_error_004c12d8)();
  uVar11 = 0;
  uVar25 = 0;
  uVar24 = 1;
  iVar10 = iVar26;
  piVar2 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar7 + 0x24) + 0x20);
  uVar12 = piVar2[1];
  if (*piVar2 != 0) {
    pcVar21 = *(code **)(puVar22 + 0x37054c);
    iVar10 = *(int *)(puVar22 + 0x36fd98) + 0x4584;
    (*pcVar21)(iVar10,0xc0);
    uVar25 = 0;
    uVar24 = 1;
    iVar26 = __end;
    puVar6 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar10 + 0x24) + 0x20);
    uVar12 = *puVar6;
    puVar16 = puVar6 + 1;
    puVar18 = puVar16 + uVar12;
    uVar3 = (int)puVar6 + (__end - (int)puVar18);
    (**(code **)(pcVar21 + 0x370828))
              (iVar10 + 0x34,0,*(undefined4 *)(iVar10 + 0x38),puVar18,uVar3,uVar11,iVar26,uVar24,
               uVar25);
    uVar8 = *(int *)(iVar10 + 0x2c) - *(int *)(iVar10 + 0x28) >> 4;
    if (uVar8 < uVar12) {
      vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::
      _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>
                         *)(iVar10 + 0x28),uVar12 - uVar8);
    }
    else if ((uVar12 < uVar8) &&
            (iVar26 = *(int *)(iVar10 + 0x28) + uVar12 * 0x10, *(int *)(iVar10 + 0x2c) != iVar26)) {
      *(int *)(iVar10 + 0x2c) = iVar26;
    }
    uVar8 = 0;
    if (uVar12 != 0) {
      iVar26 = -1;
      piVar17 = *(int **)(iVar10 + 0x28) + uVar12 * 4;
      piVar2 = *(int **)(iVar10 + 0x28);
      uVar20 = 0xffffffff;
      do {
        while( true ) {
          uVar14 = *puVar16;
          pcVar23 = *(code **)(pcVar21 + 0x374324);
          piVar2[1] = uVar8;
          puVar16 = puVar16 + 1;
          *piVar2 = (int)uVar8 >> 0x1f;
          piVar4 = piVar2 + 4;
          piVar2[2] = 0;
          piVar2[3] = uVar14;
          iVar5 = (*pcVar23)((int)puVar18 + uVar8);
          uVar8 = iVar5 + 1 + uVar8;
          piVar2 = piVar4;
          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;
          uVar20 = uVar14;
          if (piVar17 == piVar4) goto LAB_001519e0;
        }
        iVar26 = 0;
        *(int *)(iVar10 + 0xd0) = *(int *)(iVar10 + 0xd0) + 1;
        uVar20 = uVar14;
      } while (piVar17 != piVar4);
LAB_001519e0:
      if (uVar3 < uVar8) {
        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);
        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar10 + 0xc));
        sVar9 = *(size_type *)(iVar10 + 0x6c);
        iVar26 = *(int *)(iVar10 + 100);
        iVar5 = *(int *)(iVar10 + 0x70);
        iVar15 = *(int *)(iVar10 + 0x68);
        uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;
        goto joined_r0x00151ae4;
      }
    }
    sVar9 = *(size_type *)(iVar10 + 0x6c);
    iVar26 = *(int *)(iVar10 + 100);
    iVar5 = *(int *)(iVar10 + 0x70);
    iVar15 = *(int *)(iVar10 + 0x68);
    uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;
joined_r0x00151ae4:
    if (uVar3 <= uVar12) {
      __position.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;
      __position.super__Bit_iterator_base._M_offset = param_4;
      vector<bool,_std::allocator<bool>_>::_M_fill_insert
                ((vector<bool,_std::allocator<bool>_> *)(iVar10 + 100),__position,sVar9,
                 SUB41(iVar5,0));
      return;
    }
    uVar12 = uVar12 + iVar15;
    uVar3 = uVar12;
    if ((int)uVar12 < 0) {
      uVar3 = uVar12 + 0x1f;
    }
    iVar26 = iVar26 + ((int)uVar3 >> 5) * 4;
    if ((int)uVar12 < 0) {
      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;
    }
    else {
      uVar12 = uVar12 & 0x8000001f;
    }
    if ((int)uVar12 < 0) {
      *(uint *)(iVar10 + 0x70) = uVar12 + 0x20;
      *(int *)(iVar10 + 0x6c) = iVar26 + -4;
      return;
    }
    *(uint *)(iVar10 + 0x70) = uVar12;
    *(int *)(iVar10 + 0x6c) = iVar26;
    return;
  }
  piVar17 = piVar2 + 2 + uVar12 * 2;
  uVar3 = (int)piVar2 + (iVar26 - (int)piVar17);
  (**(code **)(puVar22 + 0x370bbc))
            (puVar7 + 0x34,0,*(undefined4 *)(puVar7 + 0x38),piVar17,uVar3,param_4,iVar10,uVar24,
             uVar25);
  uVar8 = *(int *)(puVar7 + 0x2c) - *(int *)(puVar7 + 0x28) >> 4;
  if (uVar8 < uVar12) {
    vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::
    _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>
                       *)(puVar7 + 0x28),uVar12 - uVar8);
  }
  else if ((uVar12 < uVar8) &&
          (iVar26 = *(int *)(puVar7 + 0x28) + uVar12 * 0x10, *(int *)(puVar7 + 0x2c) != iVar26)) {
    *(int *)(puVar7 + 0x2c) = iVar26;
  }
  uVar8 = 0;
  if (uVar12 != 0) {
    piVar13 = *(int **)(puVar7 + 0x28);
    piVar4 = piVar13 + uVar12 * 4;
    piVar2 = piVar2 + 2;
    iVar26 = -1;
    iVar10 = -1;
    do {
      while( true ) {
        pcVar21 = *(code **)(puVar22 + 0x3746b8);
        piVar13[1] = uVar8;
        *piVar13 = (int)uVar8 >> 0x1f;
        iVar15 = *piVar2;
        iVar19 = piVar2[1];
        piVar13[2] = iVar15;
        piVar13[3] = iVar19;
        iVar5 = (*pcVar21)((int)piVar17 + uVar8);
        uVar8 = iVar5 + 1 + uVar8;
        if ((iVar15 != iVar10) || (iVar19 != iVar26)) break;
        piVar13 = piVar13 + 4;
        piVar2 = piVar2 + 2;
        iVar26 = iVar19;
        iVar10 = iVar15;
        if (piVar4 == piVar13) goto LAB_00151668;
      }
      piVar13 = piVar13 + 4;
      *(int *)(puVar7 + 0xd0) = *(int *)(puVar7 + 0xd0) + 1;
      piVar2 = piVar2 + 2;
      iVar26 = iVar19;
      iVar10 = iVar15;
    } while (piVar4 != piVar13);
LAB_00151668:
    if (uVar3 < uVar8) {
      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);
      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar7 + 0xc));
      sVar9 = *(size_type *)(puVar7 + 0x6c);
      iVar26 = *(int *)(puVar7 + 100);
      iVar10 = *(int *)(puVar7 + 0x70);
      iVar5 = *(int *)(puVar7 + 0x68);
      uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5;
      goto joined_r0x001516a0;
    }
  }
  sVar9 = *(size_type *)(puVar7 + 0x6c);
  iVar26 = *(int *)(puVar7 + 100);
  iVar10 = *(int *)(puVar7 + 0x70);
  iVar5 = *(int *)(puVar7 + 0x68);
  uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5;
joined_r0x001516a0:
  if (uVar3 <= uVar12) {
    __position_00.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;
    __position_00.super__Bit_iterator_base._M_offset = in_stack_ffffffe4;
    vector<bool,_std::allocator<bool>_>::_M_fill_insert
              ((vector<bool,_std::allocator<bool>_> *)(puVar7 + 100),__position_00,sVar9,
               SUB41(iVar10,0));
    return;
  }
  uVar12 = uVar12 + iVar5;
  uVar3 = uVar12;
  if ((int)uVar12 < 0) {
    uVar3 = uVar12 + 0x1f;
  }
  iVar26 = iVar26 + ((int)uVar3 >> 5) * 4;
  if ((int)uVar12 < 0) {
    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;
  }
  else {
    uVar12 = uVar12 & 0x8000001f;
  }
  if ((int)uVar12 < 0) {
    *(uint *)(puVar7 + 0x70) = uVar12 + 0x20;
    *(int *)(puVar7 + 0x6c) = iVar26 + -4;
    return;
  }
  *(uint *)(puVar7 + 0x70) = uVar12;
  *(int *)(puVar7 + 0x6c) = iVar26;
  return;
}



/* void std::string::_M_construct<char*>(char*, char*, std::forward_iterator_tag) */

void __thiscall
std::string::_M_construct<char*>(string *this,undefined1 *param_1,int param_2,undefined4 param_4)

{
  undefined1 *puVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  int *piVar5;
  int iVar6;
  uint *puVar7;
  int iVar8;
  undefined *puVar9;
  uint uVar10;
  undefined4 uVar11;
  uint uVar12;
  int *piVar13;
  uint uVar14;
  int iVar15;
  uint *puVar16;
  int *piVar17;
  uint *puVar18;
  int iVar19;
  uint uVar20;
  code *pcVar21;
  undefined *puVar22;
  code *pcVar23;
  undefined4 uVar24;
  undefined4 uVar25;
  int iVar26;
  uint local_18 [2];
  
  iVar26 = 0x4c9240;
  if (param_1 != (undefined1 *)0x0) {
    uVar12 = param_2 - (int)param_1;
    local_18[0] = uVar12;
    if (0xf < uVar12) {
      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);
      *(int *)this = iVar2;
      *(uint *)(this + 8) = local_18[0];
      pcVar21 = *(code **)(iVar26 + -0x3698);
LAB_00151454:
      (*pcVar21)(iVar2,param_1,uVar12);
      *(uint *)(this + 4) = local_18[0];
      *(undefined1 *)(*(int *)this + local_18[0]) = 0;
      return;
    }
    if (uVar12 == 1) {
      **(undefined1 **)this = *param_1;
      puVar1 = (undefined1 *)(*(int *)this + 1);
    }
    else {
      puVar1 = *(undefined1 **)this + uVar12;
      if (uVar12 != 0) {
        iVar2 = (int)puVar1 - uVar12;
        pcVar21 = (code *)PTR_memcpy_004c5ba8;
        goto LAB_00151454;
      }
    }
    *(uint *)(this + 4) = uVar12;
    *puVar1 = 0;
    return;
  }
  if (param_2 == 0) {
    *(undefined4 *)(this + 4) = 0;
    **(undefined1 **)this = 0;
    return;
  }
  puVar9 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00;
  puVar22 = PTR___throw_logic_error_004c12d8;
  (*(code *)PTR___throw_logic_error_004c12d8)();
  uVar11 = 0;
  uVar25 = 0;
  uVar24 = 1;
  iVar2 = iVar26;
  piVar3 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20);
  uVar12 = piVar3[1];
  if (*piVar3 != 0) {
    pcVar21 = *(code **)(puVar22 + 0x37054c);
    iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;
    (*pcVar21)(iVar2,0xc0);
    uVar25 = 0;
    uVar24 = 1;
    iVar26 = param_2;
    puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);
    uVar12 = *puVar7;
    puVar16 = puVar7 + 1;
    puVar18 = puVar16 + uVar12;
    uVar4 = (int)puVar7 + (param_2 - (int)puVar18);
    (**(code **)(pcVar21 + 0x370828))
              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,
               uVar25);
    uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;
    if (uVar10 < uVar12) {
      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::
      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>
                         *)(iVar2 + 0x28),uVar12 - uVar10);
    }
    else if ((uVar12 < uVar10) &&
            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {
      *(int *)(iVar2 + 0x2c) = iVar26;
    }
    uVar10 = 0;
    if (uVar12 != 0) {
      iVar26 = -1;
      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;
      piVar3 = *(int **)(iVar2 + 0x28);
      uVar20 = 0xffffffff;
      do {
        while( true ) {
          uVar14 = *puVar16;
          pcVar23 = *(code **)(pcVar21 + 0x374324);
          piVar3[1] = uVar10;
          puVar16 = puVar16 + 1;
          *piVar3 = (int)uVar10 >> 0x1f;
          piVar5 = piVar3 + 4;
          piVar3[2] = 0;
          piVar3[3] = uVar14;
          iVar6 = (*pcVar23)((int)puVar18 + uVar10);
          uVar10 = iVar6 + 1 + uVar10;
          piVar3 = piVar5;
          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;
          uVar20 = uVar14;
          if (piVar17 == piVar5) goto LAB_001519e0;
        }
        iVar26 = 0;
        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;
        uVar20 = uVar14;
      } while (piVar17 != piVar5);
LAB_001519e0:
      if (uVar4 < uVar10) {
        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);
        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));
        iVar26 = *(int *)(iVar2 + 0x6c);
        iVar6 = *(int *)(iVar2 + 100);
        iVar15 = *(int *)(iVar2 + 0x70);
        iVar19 = *(int *)(iVar2 + 0x68);
        iVar8 = (iVar26 - iVar6) * 8 + iVar15;
        uVar4 = iVar8 - iVar19;
        goto joined_r0x00151ae4;
      }
    }
    iVar26 = *(int *)(iVar2 + 0x6c);
    iVar6 = *(int *)(iVar2 + 100);
    iVar15 = *(int *)(iVar2 + 0x70);
    iVar19 = *(int *)(iVar2 + 0x68);
    iVar8 = (iVar26 - iVar6) * 8 + iVar15;
    uVar4 = iVar8 - iVar19;
joined_r0x00151ae4:
    if (uVar4 <= uVar12) {
      vector<bool,std::allocator<bool>>::_M_fill_insert
                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);
      return;
    }
    uVar12 = uVar12 + iVar19;
    uVar4 = uVar12;
    if ((int)uVar12 < 0) {
      uVar4 = uVar12 + 0x1f;
    }
    iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;
    if ((int)uVar12 < 0) {
      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;
    }
    else {
      uVar12 = uVar12 & 0x8000001f;
    }
    if ((int)uVar12 < 0) {
      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;
      *(int *)(iVar2 + 0x6c) = iVar6 + -4;
      return;
    }
    *(uint *)(iVar2 + 0x70) = uVar12;
    *(int *)(iVar2 + 0x6c) = iVar6;
    return;
  }
  piVar17 = piVar3 + 2 + uVar12 * 2;
  uVar4 = (int)piVar3 + (iVar26 - (int)piVar17);
  (**(code **)(puVar22 + 0x370bbc))
            (puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,
             uVar25);
  uVar10 = *(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4;
  if (uVar10 < uVar12) {
    vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append
              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)
               (puVar9 + 0x28),uVar12 - uVar10);
  }
  else if ((uVar12 < uVar10) &&
          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {
    *(int *)(puVar9 + 0x2c) = iVar26;
  }
  uVar10 = 0;
  if (uVar12 != 0) {
    piVar13 = *(int **)(puVar9 + 0x28);
    piVar5 = piVar13 + uVar12 * 4;
    piVar3 = piVar3 + 2;
    iVar26 = -1;
    iVar2 = -1;
    do {
      while( true ) {
        pcVar21 = *(code **)(puVar22 + 0x3746b8);
        piVar13[1] = uVar10;
        *piVar13 = (int)uVar10 >> 0x1f;
        iVar15 = *piVar3;
        iVar19 = piVar3[1];
        piVar13[2] = iVar15;
        piVar13[3] = iVar19;
        iVar6 = (*pcVar21)((int)piVar17 + uVar10);
        uVar10 = iVar6 + 1 + uVar10;
        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;
        piVar13 = piVar13 + 4;
        piVar3 = piVar3 + 2;
        iVar26 = iVar19;
        iVar2 = iVar15;
        if (piVar5 == piVar13) goto LAB_00151668;
      }
      piVar13 = piVar13 + 4;
      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;
      piVar3 = piVar3 + 2;
      iVar26 = iVar19;
      iVar2 = iVar15;
    } while (piVar5 != piVar13);
LAB_00151668:
    if (uVar4 < uVar10) {
      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);
      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));
      iVar26 = *(int *)(puVar9 + 0x6c);
      iVar2 = *(int *)(puVar9 + 100);
      iVar6 = *(int *)(puVar9 + 0x70);
      iVar15 = *(int *)(puVar9 + 0x68);
      iVar19 = (iVar26 - iVar2) * 8 + iVar6;
      uVar4 = iVar19 - iVar15;
      goto joined_r0x001516a0;
    }
  }
  iVar26 = *(int *)(puVar9 + 0x6c);
  iVar2 = *(int *)(puVar9 + 100);
  iVar6 = *(int *)(puVar9 + 0x70);
  iVar15 = *(int *)(puVar9 + 0x68);
  iVar19 = (iVar26 - iVar2) * 8 + iVar6;
  uVar4 = iVar19 - iVar15;
joined_r0x001516a0:
  if (uVar4 <= uVar12) {
    vector<bool,std::allocator<bool>>::_M_fill_insert
              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);
    return;
  }
  uVar12 = uVar12 + iVar15;
  uVar4 = uVar12;
  if ((int)uVar12 < 0) {
    uVar4 = uVar12 + 0x1f;
  }
  iVar2 = iVar2 + ((int)uVar4 >> 5) * 4;
  if ((int)uVar12 < 0) {
    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;
  }
  else {
    uVar12 = uVar12 & 0x8000001f;
  }
  if ((int)uVar12 < 0) {
    *(uint *)(puVar9 + 0x70) = uVar12 + 0x20;
    *(int *)(puVar9 + 0x6c) = iVar2 + -4;
    return;
  }
  *(uint *)(puVar9 + 0x70) = uVar12;
  *(int *)(puVar9 + 0x6c) = iVar2;
  return;
}


lui gp,0x37
addiu gp,gp,0x7e94
addu gp,gp,t9
addiu sp,sp,-0x30
sw gp,0x10(sp)
sw s1,0x24(sp)
or s1,a0,zero
sw ra,0x2c(sp)
sw s2,0x28(sp)
sw s0,0x20(sp)
beq a1,zero,0x00151490
_sw a3,0x3c(sp)
subu s0,a2,a1
or s2,a1,zero
sltiu v0,s0,0x10
beq v0,zero,0x00151430
_sw s0,0x18(sp)
li v1,0x1
bne s0,v1,0x001514c0
_lw v0,0x0(a0)
lb v1,0x0(a1)
sb v1,0x0(v0)
lw s0,0x18(sp)
lw v0,0x0(a0)
addu v0,v0,s0
sw s0,0x4(s1)
sb zero,0x0(v0)
lw ra,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x30
lw t9,-0x7e24(gp)
or a2,zero,zero
jalr t9
_addiu a1,sp,0x18
lw v1,0x18(sp)
lw gp,0x10(sp)
sw v0,0x0(s1)
sw v1,0x8(s1)
lw t9,-0x3698(gp)
or a2,s0,zero
or a1,s2,zero
jalr t9
_or a0,v0,zero
lw s0,0x18(sp)
lw v0,0x0(s1)
sw s0,0x4(s1)
addu v0,v0,s0
sb zero,0x0(v0)
lw ra,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x30
bne a2,zero,0x001514d4
_or s0,zero,zero
lw v0,0x0(a0)
sw s0,0x4(s1)
addu v0,v0,s0
sb zero,0x0(v0)
lw ra,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x30
beq s0,zero,0x00151410
_addu v0,v0,s0
subu v0,v0,s0
b 0x00151454
_lw t9,-0x3698(gp)
lw a0,-0x7fc4(gp)
lw t9,-0x7f68(gp)
jalr t9
_addiu a0,a0,-0xa00
(translation_unit "/* void std::string::_M_construct<char*>(char*, char*, std::forward_iterator_tag) */\n\nvoid __thiscall\nstd::string::_M_construct<char*>(string *this,undefined1 *param_1,int param_2,undefined4 param_4)\n\n{\n  undefined1 *puVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  uint *puVar7;\n  int iVar8;\n  undefined *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  int *piVar13;\n  uint uVar14;\n  int iVar15;\n  uint *puVar16;\n  int *piVar17;\n  uint *puVar18;\n  int iVar19;\n  uint uVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined4 uVar24;\n  undefined4 uVar25;\n  int iVar26;\n  uint local_18 [2];\n  \n  iVar26 = 0x4c9240;\n  if (param_1 != (undefined1 *)0x0) {\n    uVar12 = param_2 - (int)param_1;\n    local_18[0] = uVar12;\n    if (0xf < uVar12) {\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }\n    if (uVar12 == 1) {\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }\n    else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }\n    *(uint *)(this + 4) = uVar12;\n    *puVar1 = 0;\n    return;\n  }\n  if (param_2 == 0) {\n    *(undefined4 *)(this + 4) = 0;\n    **(undefined1 **)this = 0;\n    return;\n  }\n  puVar9 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00;\n  puVar22 = PTR___throw_logic_error_004c12d8;\n  (*(code *)PTR___throw_logic_error_004c12d8)();\n  uVar11 = 0;\n  uVar25 = 0;\n  uVar24 = 1;\n  iVar2 = iVar26;\n  piVar3 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20);\n  uVar12 = piVar3[1];\n  if (*piVar3 != 0) {\n    pcVar21 = *(code **)(puVar22 + 0x37054c);\n    iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;\n    (*pcVar21)(iVar2,0xc0);\n    uVar25 = 0;\n    uVar24 = 1;\n    iVar26 = param_2;\n    puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);\n    uVar12 = *puVar7;\n    puVar16 = puVar7 + 1;\n    puVar18 = puVar16 + uVar12;\n    uVar4 = (int)puVar7 + (param_2 - (int)puVar18);\n    (**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25);\n    uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;\n    if (uVar10 < uVar12) {\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }\n    else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }\n    uVar10 = 0;\n    if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }\n    iVar26 = *(int *)(iVar2 + 0x6c);\n    iVar6 = *(int *)(iVar2 + 100);\n    iVar15 = *(int *)(iVar2 + 0x70);\n    iVar19 = *(int *)(iVar2 + 0x68);\n    iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n    uVar4 = iVar8 - iVar19;\njoined_r0x00151ae4:\n    if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }\n    uVar12 = uVar12 + iVar19;\n    uVar4 = uVar12;\n    if ((int)uVar12 < 0) {\n      uVar4 = uVar12 + 0x1f;\n    }\n    iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;\n    if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }\n    if ((int)uVar12 < 0) {\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }\n    *(uint *)(iVar2 + 0x70) = uVar12;\n    *(int *)(iVar2 + 0x6c) = iVar6;\n    return;\n  }\n  piVar17 = piVar3 + 2 + uVar12 * 2;\n  uVar4 = (int)piVar3 + (iVar26 - (int)piVar17);\n  (**(code **)(puVar22 + 0x370bbc))\n            (puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,\n             uVar25);\n  uVar10 = *(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4;\n  if (uVar10 < uVar12) {\n    vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);\n  }\n  else if ((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }\n  uVar10 = 0;\n  if (uVar12 != 0) {\n    piVar13 = *(int **)(puVar9 + 0x28);\n    piVar5 = piVar13 + uVar12 * 4;\n    piVar3 = piVar3 + 2;\n    iVar26 = -1;\n    iVar2 = -1;\n    do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    } while (piVar5 != piVar13);\nLAB_00151668:\n    if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }\n  }\n  iVar26 = *(int *)(puVar9 + 0x6c);\n  iVar2 = *(int *)(puVar9 + 100);\n  iVar6 = *(int *)(puVar9 + 0x70);\n  iVar15 = *(int *)(puVar9 + 0x68);\n  iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n  uVar4 = iVar19 - iVar15;\njoined_r0x001516a0:\n  if (uVar4 <= uVar12) {\n    vector<bool,std::allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);\n    return;\n  }\n  uVar12 = uVar12 + iVar15;\n  uVar4 = uVar12;\n  if ((int)uVar12 < 0) {\n    uVar4 = uVar12 + 0x1f;\n  }\n  iVar2 = iVar2 + ((int)uVar4 >> 5) * 4;\n  if ((int)uVar12 < 0) {\n    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n  }\n  else {\n    uVar12 = uVar12 & 0x8000001f;\n  }\n  if ((int)uVar12 < 0) {\n    *(uint *)(puVar9 + 0x70) = uVar12 + 0x20;\n    *(int *)(puVar9 + 0x6c) = iVar2 + -4;\n    return;\n  }\n  *(uint *)(puVar9 + 0x70) = uVar12;\n  *(int *)(puVar9 + 0x6c) = iVar2;\n  return;\n}\n\n" comment (declaration "void __thiscall\nstd::string::_M_construct<char*>(string *this,undefined1 *param_1,int param_2,undefined4 param_4)\n\n{\n  undefined1 *puVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::string::_M_construct<char" identifier : : identifier : : identifier < primitive_type) (pointer_declarator "*>(string *this" * (ERROR ">(string" > ( identifier) (pointer_declarator "*this" * identifier)) , (ERROR "undefined1" identifier) (pointer_declarator "*param_1" * identifier) , (ERROR "int" identifier) identifier , (ERROR "undefined4 param_4)\n\n{\n  undefined1" identifier identifier ) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "code *pcVar23;" type_identifier (pointer_declarator "*pcVar23" * identifier) ;) (declaration "undefined4 uVar24;" type_identifier identifier ;) (declaration "undefined4 uVar25;" type_identifier identifier ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "uint local_18 [2];" type_identifier (array_declarator "local_18 [2]" identifier [ number_literal ]) ;) (expression_statement "iVar26 = 0x4c9240;" (assignment_expression "iVar26 = 0x4c9240" identifier = number_literal) ;) (if_statement "if (param_1 != (undefined1 *)0x0) {\n    uVar12 = param_2 - (int)param_1;\n    local_18[0] = uVar12;\n    if (0xf < uVar12) {\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }\n    if (uVar12 == 1) {\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }\n    else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }\n    *(uint *)(this + 4) = uVar12;\n    *puVar1 = 0;\n    return;\n  }" if (parenthesized_expression "(param_1 != (undefined1 *)0x0)" ( (binary_expression "param_1 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar12 = param_2 - (int)param_1;\n    local_18[0] = uVar12;\n    if (0xf < uVar12) {\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }\n    if (uVar12 == 1) {\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }\n    else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }\n    *(uint *)(this + 4) = uVar12;\n    *puVar1 = 0;\n    return;\n  }" { (expression_statement "uVar12 = param_2 - (int)param_1;" (assignment_expression "uVar12 = param_2 - (int)param_1" identifier = (binary_expression "param_2 - (int)param_1" identifier - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_18[0] = uVar12;" (assignment_expression "local_18[0] = uVar12" (subscript_expression "local_18[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (0xf < uVar12) {\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }" if (parenthesized_expression "(0xf < uVar12)" ( (binary_expression "0xf < uVar12" number_literal < identifier) )) (compound_statement "{\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }" { (expression_statement "iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);" (assignment_expression "iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0)" identifier = (call_expression "(*(code *)PTR__M_create_004c141c)(this,local_18,0)" (parenthesized_expression "(*(code *)PTR__M_create_004c141c)" ( (pointer_expression "*(code *)PTR__M_create_004c141c" * (cast_expression "(code *)PTR__M_create_004c141c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(this,local_18,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(int *)this = iVar2;" (assignment_expression "*(int *)this = iVar2" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(uint *)(this + 8) = local_18[0];" (assignment_expression "*(uint *)(this + 8) = local_18[0]" (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (subscript_expression "local_18[0]" identifier [ number_literal ])) ;) (expression_statement "pcVar21 = *(code **)(iVar26 + -0x3698);" (assignment_expression "pcVar21 = *(code **)(iVar26 + -0x3698)" identifier = (pointer_expression "*(code **)(iVar26 + -0x3698)" * (cast_expression "(code **)(iVar26 + -0x3698)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar26 + -0x3698)" ( (binary_expression "iVar26 + -0x3698" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);" statement_identifier : (expression_statement "(*pcVar21)(iVar2,param_1,uVar12);" (call_expression "(*pcVar21)(iVar2,param_1,uVar12)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(iVar2,param_1,uVar12)" ( identifier , identifier , identifier ))) ;)) (expression_statement "*(uint *)(this + 4) = local_18[0];" (assignment_expression "*(uint *)(this + 4) = local_18[0]" (pointer_expression "*(uint *)(this + 4)" * (cast_expression "(uint *)(this + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (subscript_expression "local_18[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(*(int *)this + local_18[0]) = 0;" (assignment_expression "*(undefined1 *)(*(int *)this + local_18[0]) = 0" (pointer_expression "*(undefined1 *)(*(int *)this + local_18[0])" * (cast_expression "(undefined1 *)(*(int *)this + local_18[0])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)this + local_18[0])" ( (binary_expression "*(int *)this + local_18[0]" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (subscript_expression "local_18[0]" identifier [ number_literal ])) )))) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar12 == 1) {\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }\n    else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }" if (parenthesized_expression "(uVar12 == 1)" ( (binary_expression "uVar12 == 1" identifier == number_literal) )) (compound_statement "{\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }" { (expression_statement "**(undefined1 **)this = *param_1;" (assignment_expression "**(undefined1 **)this = *param_1" (pointer_expression "**(undefined1 **)this" * (pointer_expression "*(undefined1 **)this" * (cast_expression "(undefined1 **)this" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar1 = (undefined1 *)(*(int *)this + 1);" (assignment_expression "puVar1 = (undefined1 *)(*(int *)this + 1)" identifier = (cast_expression "(undefined1 *)(*(int *)this + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)this + 1)" ( (binary_expression "*(int *)this + 1" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) ;) }) (else_clause "else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }" else (compound_statement "{\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }" { (expression_statement "puVar1 = *(undefined1 **)this + uVar12;" (assignment_expression "puVar1 = *(undefined1 **)this + uVar12" identifier = (binary_expression "*(undefined1 **)this + uVar12" (pointer_expression "*(undefined1 **)this" * (cast_expression "(undefined1 **)this" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) + identifier)) ;) (if_statement "if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }" { (expression_statement "iVar2 = (int)puVar1 - uVar12;" (assignment_expression "iVar2 = (int)puVar1 - uVar12" identifier = (binary_expression "(int)puVar1 - uVar12" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "pcVar21 = (code *)PTR_memcpy_004c5ba8;" (assignment_expression "pcVar21 = (code *)PTR_memcpy_004c5ba8" identifier = (cast_expression "(code *)PTR_memcpy_004c5ba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (goto_statement "goto LAB_00151454;" goto statement_identifier ;) })) }))) (expression_statement "*(uint *)(this + 4) = uVar12;" (assignment_expression "*(uint *)(this + 4) = uVar12" (pointer_expression "*(uint *)(this + 4)" * (cast_expression "(uint *)(this + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (param_2 == 0) {\n    *(undefined4 *)(this + 4) = 0;\n    **(undefined1 **)this = 0;\n    return;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined4 *)(this + 4) = 0;\n    **(undefined1 **)this = 0;\n    return;\n  }" { (expression_statement "*(undefined4 *)(this + 4) = 0;" (assignment_expression "*(undefined4 *)(this + 4) = 0" (pointer_expression "*(undefined4 *)(this + 4)" * (cast_expression "(undefined4 *)(this + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(undefined1 **)this = 0;" (assignment_expression "**(undefined1 **)this = 0" (pointer_expression "**(undefined1 **)this" * (pointer_expression "*(undefined1 **)this" * (cast_expression "(undefined1 **)this" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "puVar9 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00;" (assignment_expression "puVar9 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00" identifier = (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00" identifier + number_literal)) ;) (expression_statement "puVar22 = PTR___throw_logic_error_004c12d8;" (assignment_expression "puVar22 = PTR___throw_logic_error_004c12d8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___throw_logic_error_004c12d8)();" (call_expression "(*(code *)PTR___throw_logic_error_004c12d8)()" (parenthesized_expression "(*(code *)PTR___throw_logic_error_004c12d8)" ( (pointer_expression "*(code *)PTR___throw_logic_error_004c12d8" * (cast_expression "(code *)PTR___throw_logic_error_004c12d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar24 = 1;" (assignment_expression "uVar24 = 1" identifier = number_literal) ;) (expression_statement "iVar2 = iVar26;" (assignment_expression "iVar2 = iVar26" identifier = identifier) ;) (expression_statement "piVar3 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20);" (assignment_expression "piVar3 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20)" identifier = (cast_expression "(int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20)" (parenthesized_expression "(**(code **)(puVar22 + 0x370690))" ( (pointer_expression "**(code **)(puVar22 + 0x370690)" * (pointer_expression "*(code **)(puVar22 + 0x370690)" * (cast_expression "(code **)(puVar22 + 0x370690)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x370690)" ( (binary_expression "puVar22 + 0x370690" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar9 + 0x24) + 0x20)" ( (binary_expression "*(int *)(puVar9 + 0x24) + 0x20" (pointer_expression "*(int *)(puVar9 + 0x24)" * (cast_expression "(int *)(puVar9 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x24)" ( (binary_expression "puVar9 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar12 = piVar3[1];" (assignment_expression "uVar12 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;) (if_statement "if (*piVar3 != 0) {\n    pcVar21 = *(code **)(puVar22 + 0x37054c);\n    iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;\n    (*pcVar21)(iVar2,0xc0);\n    uVar25 = 0;\n    uVar24 = 1;\n    iVar26 = param_2;\n    puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);\n    uVar12 = *puVar7;\n    puVar16 = puVar7 + 1;\n    puVar18 = puVar16 + uVar12;\n    uVar4 = (int)puVar7 + (param_2 - (int)puVar18);\n    (**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25);\n    uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;\n    if (uVar10 < uVar12) {\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }\n    else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }\n    uVar10 = 0;\n    if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }\n    iVar26 = *(int *)(iVar2 + 0x6c);\n    iVar6 = *(int *)(iVar2 + 100);\n    iVar15 = *(int *)(iVar2 + 0x70);\n    iVar19 = *(int *)(iVar2 + 0x68);\n    iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n    uVar4 = iVar8 - iVar19;\njoined_r0x00151ae4:\n    if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }\n    uVar12 = uVar12 + iVar19;\n    uVar4 = uVar12;\n    if ((int)uVar12 < 0) {\n      uVar4 = uVar12 + 0x1f;\n    }\n    iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;\n    if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }\n    if ((int)uVar12 < 0) {\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }\n    *(uint *)(iVar2 + 0x70) = uVar12;\n    *(int *)(iVar2 + 0x6c) = iVar6;\n    return;\n  }" if (parenthesized_expression "(*piVar3 != 0)" ( (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" * identifier) != number_literal) )) (compound_statement "{\n    pcVar21 = *(code **)(puVar22 + 0x37054c);\n    iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;\n    (*pcVar21)(iVar2,0xc0);\n    uVar25 = 0;\n    uVar24 = 1;\n    iVar26 = param_2;\n    puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);\n    uVar12 = *puVar7;\n    puVar16 = puVar7 + 1;\n    puVar18 = puVar16 + uVar12;\n    uVar4 = (int)puVar7 + (param_2 - (int)puVar18);\n    (**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25);\n    uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;\n    if (uVar10 < uVar12) {\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }\n    else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }\n    uVar10 = 0;\n    if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }\n    iVar26 = *(int *)(iVar2 + 0x6c);\n    iVar6 = *(int *)(iVar2 + 100);\n    iVar15 = *(int *)(iVar2 + 0x70);\n    iVar19 = *(int *)(iVar2 + 0x68);\n    iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n    uVar4 = iVar8 - iVar19;\njoined_r0x00151ae4:\n    if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }\n    uVar12 = uVar12 + iVar19;\n    uVar4 = uVar12;\n    if ((int)uVar12 < 0) {\n      uVar4 = uVar12 + 0x1f;\n    }\n    iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;\n    if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }\n    if ((int)uVar12 < 0) {\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }\n    *(uint *)(iVar2 + 0x70) = uVar12;\n    *(int *)(iVar2 + 0x6c) = iVar6;\n    return;\n  }" { (expression_statement "pcVar21 = *(code **)(puVar22 + 0x37054c);" (assignment_expression "pcVar21 = *(code **)(puVar22 + 0x37054c)" identifier = (pointer_expression "*(code **)(puVar22 + 0x37054c)" * (cast_expression "(code **)(puVar22 + 0x37054c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x37054c)" ( (binary_expression "puVar22 + 0x37054c" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;" (assignment_expression "iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584" identifier = (binary_expression "*(int *)(puVar22 + 0x36fd98) + 0x4584" (pointer_expression "*(int *)(puVar22 + 0x36fd98)" * (cast_expression "(int *)(puVar22 + 0x36fd98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x36fd98)" ( (binary_expression "puVar22 + 0x36fd98" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar21)(iVar2,0xc0);" (call_expression "(*pcVar21)(iVar2,0xc0)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(iVar2,0xc0)" ( identifier , number_literal ))) ;) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar24 = 1;" (assignment_expression "uVar24 = 1" identifier = number_literal) ;) (expression_statement "iVar26 = param_2;" (assignment_expression "iVar26 = param_2" identifier = identifier) ;) (expression_statement "puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);" (assignment_expression "puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20)" identifier = (cast_expression "(uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20)" (parenthesized_expression "(**(code **)(pcVar21 + 0x3702fc))" ( (pointer_expression "**(code **)(pcVar21 + 0x3702fc)" * (pointer_expression "*(code **)(pcVar21 + 0x3702fc)" * (cast_expression "(code **)(pcVar21 + 0x3702fc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x3702fc)" ( (binary_expression "pcVar21 + 0x3702fc" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar2 + 0x24) + 0x20)" ( (binary_expression "*(int *)(iVar2 + 0x24) + 0x20" (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar12 = *puVar7;" (assignment_expression "uVar12 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar16 = puVar7 + 1;" (assignment_expression "puVar16 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar16 + uVar12;" (assignment_expression "puVar18 = puVar16 + uVar12" identifier = (binary_expression "puVar16 + uVar12" identifier + identifier)) ;) (expression_statement "uVar4 = (int)puVar7 + (param_2 - (int)puVar18);" (assignment_expression "uVar4 = (int)puVar7 + (param_2 - (int)puVar18)" identifier = (binary_expression "(int)puVar7 + (param_2 - (int)puVar18)" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 - (int)puVar18)" ( (binary_expression "param_2 - (int)puVar18" identifier - (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "(**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25);" (call_expression "(**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25)" (parenthesized_expression "(**(code **)(pcVar21 + 0x370828))" ( (pointer_expression "**(code **)(pcVar21 + 0x370828)" * (pointer_expression "*(code **)(pcVar21 + 0x370828)" * (cast_expression "(code **)(pcVar21 + 0x370828)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x370828)" ( (binary_expression "pcVar21 + 0x370828" identifier + number_literal) ))))) )) (argument_list "(iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25)" ( (binary_expression "iVar2 + 0x34" identifier + number_literal) , number_literal , (pointer_expression "*(undefined4 *)(iVar2 + 0x38)" * (cast_expression "(undefined4 *)(iVar2 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x38)" ( (binary_expression "iVar2 + 0x38" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;" (assignment_expression "uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4" identifier = (binary_expression "*(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4" (binary_expression "*(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28)" (pointer_expression "*(int *)(iVar2 + 0x2c)" * (cast_expression "(int *)(iVar2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar2 + 0x28)" * (cast_expression "(int *)(iVar2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar10 < uVar12) {\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }\n    else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }" if (parenthesized_expression "(uVar10 < uVar12)" ( (binary_expression "uVar10 < uVar12" identifier < identifier) )) (compound_statement "{\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }" { (ERROR "vector<gold::" (binary_expression "vector<gold" identifier < identifier) : :) (labeled_statement "Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" statement_identifier (ERROR "::Armap_entry,std::allocator<gold:" : : (comma_expression "Armap_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" statement_identifier (ERROR "::Armap_entry>>::\n      _M_default_append((vector<gold:" : : identifier >> : : identifier ( ( (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" statement_identifier (ERROR "::Armap_entry,std::allocator<gold:" : : (comma_expression "Armap_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" statement_identifier : (ERROR ":" :) (expression_statement "Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" (comma_expression "Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10" (binary_expression "Armap_entry>>\n                         *)(iVar2 + 0x28" identifier >> (binary_expression "*)(iVar2 + 0x28" (pointer_expression "*)(iVar2" * (ERROR ")(" ) () identifier) + number_literal)) (ERROR ")" )) , (binary_expression "uVar12 - uVar10" identifier - identifier)) (ERROR ")" )) ;))))) }) (else_clause "else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }" else (if_statement "if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }" if (parenthesized_expression "((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26))" ( (binary_expression "(uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)" (parenthesized_expression "(uVar12 < uVar10)" ( (binary_expression "uVar12 < uVar10" identifier < identifier) )) && (parenthesized_expression "(iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)" ( (comma_expression "iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26" (assignment_expression "iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10" identifier = (binary_expression "*(int *)(iVar2 + 0x28) + uVar12 * 0x10" (pointer_expression "*(int *)(iVar2 + 0x28)" * (cast_expression "(int *)(iVar2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) )))) + (binary_expression "uVar12 * 0x10" identifier * number_literal))) , (binary_expression "*(int *)(iVar2 + 0x2c) != iVar26" (pointer_expression "*(int *)(iVar2 + 0x2c)" * (cast_expression "(int *)(iVar2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }" { (expression_statement "*(int *)(iVar2 + 0x2c) = iVar26;" (assignment_expression "*(int *)(iVar2 + 0x2c) = iVar26" (pointer_expression "*(int *)(iVar2 + 0x2c)" * (cast_expression "(int *)(iVar2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) )))) = identifier) ;) })))) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }" { (expression_statement "iVar26 = -1;" (assignment_expression "iVar26 = -1" identifier = number_literal) ;) (expression_statement "piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;" (assignment_expression "piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4" identifier = (binary_expression "*(int **)(iVar2 + 0x28) + uVar12 * 4" (pointer_expression "*(int **)(iVar2 + 0x28)" * (cast_expression "(int **)(iVar2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) )))) + (binary_expression "uVar12 * 4" identifier * number_literal))) ;) (expression_statement "piVar3 = *(int **)(iVar2 + 0x28);" (assignment_expression "piVar3 = *(int **)(iVar2 + 0x28)" identifier = (pointer_expression "*(int **)(iVar2 + 0x28)" * (cast_expression "(int **)(iVar2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = 0xffffffff;" (assignment_expression "uVar20 = 0xffffffff" identifier = number_literal) ;) (do_statement "do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);" do (compound_statement "{\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      }" { (while_statement "while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }" { (expression_statement "uVar14 = *puVar16;" (assignment_expression "uVar14 = *puVar16" identifier = (pointer_expression "*puVar16" * identifier)) ;) (expression_statement "pcVar23 = *(code **)(pcVar21 + 0x374324);" (assignment_expression "pcVar23 = *(code **)(pcVar21 + 0x374324)" identifier = (pointer_expression "*(code **)(pcVar21 + 0x374324)" * (cast_expression "(code **)(pcVar21 + 0x374324)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x374324)" ( (binary_expression "pcVar21 + 0x374324" identifier + number_literal) ))))) ;) (expression_statement "piVar3[1] = uVar10;" (assignment_expression "piVar3[1] = uVar10" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "*piVar3 = (int)uVar10 >> 0x1f;" (assignment_expression "*piVar3 = (int)uVar10 >> 0x1f" (pointer_expression "*piVar3" * identifier) = (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "piVar5 = piVar3 + 4;" (assignment_expression "piVar5 = piVar3 + 4" identifier = (binary_expression "piVar3 + 4" identifier + number_literal)) ;) (expression_statement "piVar3[2] = 0;" (assignment_expression "piVar3[2] = 0" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar3[3] = uVar14;" (assignment_expression "piVar3[3] = uVar14" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar6 = (*pcVar23)((int)puVar18 + uVar10);" (assignment_expression "iVar6 = (*pcVar23)((int)puVar18 + uVar10)" identifier = (call_expression "(*pcVar23)((int)puVar18 + uVar10)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "((int)puVar18 + uVar10)" ( (binary_expression "(int)puVar18 + uVar10" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar10 = iVar6 + 1 + uVar10;" (assignment_expression "uVar10 = iVar6 + 1 + uVar10" identifier = (binary_expression "iVar6 + 1 + uVar10" (binary_expression "iVar6 + 1" identifier + number_literal) + identifier)) ;) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" identifier = identifier) ;) (if_statement "if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;" if (parenthesized_expression "((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20))" ( (binary_expression "(iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)" (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar26 = 0, uVar14 != uVar20)" ( (comma_expression "iVar26 = 0, uVar14 != uVar20" (assignment_expression "iVar26 = 0" identifier = number_literal) , (binary_expression "uVar14 != uVar20" identifier != identifier)) ))) )) (break_statement "break;" break ;)) (expression_statement "uVar20 = uVar14;" (assignment_expression "uVar20 = uVar14" identifier = identifier) ;) (if_statement "if (piVar17 == piVar5) goto LAB_001519e0;" if (parenthesized_expression "(piVar17 == piVar5)" ( (binary_expression "piVar17 == piVar5" identifier == identifier) )) (goto_statement "goto LAB_001519e0;" goto statement_identifier ;)) })) (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;" (assignment_expression "*(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1" (pointer_expression "*(int *)(iVar2 + 0xd0)" * (cast_expression "(int *)(iVar2 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xd0)" ( (binary_expression "iVar2 + 0xd0" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar2 + 0xd0) + 1" (pointer_expression "*(int *)(iVar2 + 0xd0)" * (cast_expression "(int *)(iVar2 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xd0)" ( (binary_expression "iVar2 + 0xd0" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uVar20 = uVar14;" (assignment_expression "uVar20 = uVar14" identifier = identifier) ;) }) while (parenthesized_expression "(piVar17 != piVar5)" ( (binary_expression "piVar17 != piVar5" identifier != identifier) )) ;) (labeled_statement "LAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }" statement_identifier : (if_statement "if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }" if (parenthesized_expression "(uVar4 < uVar10)" ( (binary_expression "uVar4 < uVar10" identifier < identifier) )) (compound_statement "{\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }" { (expression_statement "uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);" (assignment_expression "uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0)" identifier = (call_expression "(**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0)" (parenthesized_expression "(**(code **)(pcVar21 + 0x3743b8))" ( (pointer_expression "**(code **)(pcVar21 + 0x3743b8)" * (pointer_expression "*(code **)(pcVar21 + 0x3743b8)" * (cast_expression "(code **)(pcVar21 + 0x3743b8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x3743b8)" ( (binary_expression "pcVar21 + 0x3743b8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar21 + 0x3701d8) + -0x15d0)" ( (binary_expression "*(int *)(pcVar21 + 0x3701d8) + -0x15d0" (pointer_expression "*(int *)(pcVar21 + 0x3701d8)" * (cast_expression "(int *)(pcVar21 + 0x3701d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x3701d8)" ( (binary_expression "pcVar21 + 0x3701d8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));" (call_expression "(**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc))" (parenthesized_expression "(**(code **)(pcVar21 + 0x3701b4))" ( (pointer_expression "**(code **)(pcVar21 + 0x3701b4)" * (pointer_expression "*(code **)(pcVar21 + 0x3701b4)" * (cast_expression "(code **)(pcVar21 + 0x3701b4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x3701b4)" ( (binary_expression "pcVar21 + 0x3701b4" identifier + number_literal) ))))) )) (argument_list "(uVar11,*(undefined4 *)(iVar2 + 0xc))" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "iVar26 = *(int *)(iVar2 + 0x6c);" (assignment_expression "iVar26 = *(int *)(iVar2 + 0x6c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x6c)" * (cast_expression "(int *)(iVar2 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x6c)" ( (binary_expression "iVar2 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar2 + 100);" (assignment_expression "iVar6 = *(int *)(iVar2 + 100)" identifier = (pointer_expression "*(int *)(iVar2 + 100)" * (cast_expression "(int *)(iVar2 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 100)" ( (binary_expression "iVar2 + 100" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(iVar2 + 0x70);" (assignment_expression "iVar15 = *(int *)(iVar2 + 0x70)" identifier = (pointer_expression "*(int *)(iVar2 + 0x70)" * (cast_expression "(int *)(iVar2 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x70)" ( (binary_expression "iVar2 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = *(int *)(iVar2 + 0x68);" (assignment_expression "iVar19 = *(int *)(iVar2 + 0x68)" identifier = (pointer_expression "*(int *)(iVar2 + 0x68)" * (cast_expression "(int *)(iVar2 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x68)" ( (binary_expression "iVar2 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = (iVar26 - iVar6) * 8 + iVar15;" (assignment_expression "iVar8 = (iVar26 - iVar6) * 8 + iVar15" identifier = (binary_expression "(iVar26 - iVar6) * 8 + iVar15" (binary_expression "(iVar26 - iVar6) * 8" (parenthesized_expression "(iVar26 - iVar6)" ( (binary_expression "iVar26 - iVar6" identifier - identifier) )) * number_literal) + identifier)) ;) (expression_statement "uVar4 = iVar8 - iVar19;" (assignment_expression "uVar4 = iVar8 - iVar19" identifier = (binary_expression "iVar8 - iVar19" identifier - identifier)) ;) (goto_statement "goto joined_r0x00151ae4;" goto statement_identifier ;) }))) })) (expression_statement "iVar26 = *(int *)(iVar2 + 0x6c);" (assignment_expression "iVar26 = *(int *)(iVar2 + 0x6c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x6c)" * (cast_expression "(int *)(iVar2 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x6c)" ( (binary_expression "iVar2 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar2 + 100);" (assignment_expression "iVar6 = *(int *)(iVar2 + 100)" identifier = (pointer_expression "*(int *)(iVar2 + 100)" * (cast_expression "(int *)(iVar2 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 100)" ( (binary_expression "iVar2 + 100" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(iVar2 + 0x70);" (assignment_expression "iVar15 = *(int *)(iVar2 + 0x70)" identifier = (pointer_expression "*(int *)(iVar2 + 0x70)" * (cast_expression "(int *)(iVar2 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x70)" ( (binary_expression "iVar2 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = *(int *)(iVar2 + 0x68);" (assignment_expression "iVar19 = *(int *)(iVar2 + 0x68)" identifier = (pointer_expression "*(int *)(iVar2 + 0x68)" * (cast_expression "(int *)(iVar2 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x68)" ( (binary_expression "iVar2 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = (iVar26 - iVar6) * 8 + iVar15;" (assignment_expression "iVar8 = (iVar26 - iVar6) * 8 + iVar15" identifier = (binary_expression "(iVar26 - iVar6) * 8 + iVar15" (binary_expression "(iVar26 - iVar6) * 8" (parenthesized_expression "(iVar26 - iVar6)" ( (binary_expression "iVar26 - iVar6" identifier - identifier) )) * number_literal) + identifier)) ;) (expression_statement "uVar4 = iVar8 - iVar19;" (assignment_expression "uVar4 = iVar8 - iVar19" identifier = (binary_expression "iVar8 - iVar19" identifier - identifier)) ;) (labeled_statement "joined_r0x00151ae4:\n    if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }" statement_identifier : (if_statement "if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }" if (parenthesized_expression "(uVar4 <= uVar12)" ( (binary_expression "uVar4 <= uVar12" identifier <= identifier) )) (compound_statement "{\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }" { (ERROR "vector<bool,std::" (comma_expression "vector<bool,std" (binary_expression "vector<bool" identifier < identifier) , identifier) : :) (expression_statement "allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);" (binary_expression "allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0)" identifier < (binary_expression "bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0)" identifier >> (ERROR "::" : :) (call_expression "_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0)" identifier (argument_list "(iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0)" ( (binary_expression "iVar2 + 100" identifier + number_literal) , identifier , identifier , (binary_expression "(iVar19 - iVar8) + uVar12" (parenthesized_expression "(iVar19 - iVar8)" ( (binary_expression "iVar19 - iVar8" identifier - identifier) )) + identifier) , number_literal ))))) ;) (return_statement "return;" return ;) }))) (expression_statement "uVar12 = uVar12 + iVar19;" (assignment_expression "uVar12 = uVar12 + iVar19" identifier = (binary_expression "uVar12 + iVar19" identifier + identifier)) ;) (expression_statement "uVar4 = uVar12;" (assignment_expression "uVar4 = uVar12" identifier = identifier) ;) (if_statement "if ((int)uVar12 < 0) {\n      uVar4 = uVar12 + 0x1f;\n    }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar4 = uVar12 + 0x1f;\n    }" { (expression_statement "uVar4 = uVar12 + 0x1f;" (assignment_expression "uVar4 = uVar12 + 0x1f" identifier = (binary_expression "uVar12 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;" (assignment_expression "iVar6 = iVar6 + ((int)uVar4 >> 5) * 4" identifier = (binary_expression "iVar6 + ((int)uVar4 >> 5) * 4" identifier + (binary_expression "((int)uVar4 >> 5) * 4" (parenthesized_expression "((int)uVar4 >> 5)" ( (binary_expression "(int)uVar4 >> 5" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * number_literal))) ;) (if_statement "if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }" { (expression_statement "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;" (assignment_expression "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" identifier = (binary_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" (parenthesized_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0)" ( (binary_expression "(uVar12 & 0x8000001f) - 1 | 0xffffffe0" (binary_expression "(uVar12 & 0x8000001f) - 1" (parenthesized_expression "(uVar12 & 0x8000001f)" ( (binary_expression "uVar12 & 0x8000001f" identifier & number_literal) )) - number_literal) | number_literal) )) + number_literal)) ;) }) (else_clause "else {\n      uVar12 = uVar12 & 0x8000001f;\n    }" else (compound_statement "{\n      uVar12 = uVar12 & 0x8000001f;\n    }" { (expression_statement "uVar12 = uVar12 & 0x8000001f;" (assignment_expression "uVar12 = uVar12 & 0x8000001f" identifier = (binary_expression "uVar12 & 0x8000001f" identifier & number_literal)) ;) }))) (if_statement "if ((int)uVar12 < 0) {\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }" { (expression_statement "*(uint *)(iVar2 + 0x70) = uVar12 + 0x20;" (assignment_expression "*(uint *)(iVar2 + 0x70) = uVar12 + 0x20" (pointer_expression "*(uint *)(iVar2 + 0x70)" * (cast_expression "(uint *)(iVar2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x70)" ( (binary_expression "iVar2 + 0x70" identifier + number_literal) )))) = (binary_expression "uVar12 + 0x20" identifier + number_literal)) ;) (expression_statement "*(int *)(iVar2 + 0x6c) = iVar6 + -4;" (assignment_expression "*(int *)(iVar2 + 0x6c) = iVar6 + -4" (pointer_expression "*(int *)(iVar2 + 0x6c)" * (cast_expression "(int *)(iVar2 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x6c)" ( (binary_expression "iVar2 + 0x6c" identifier + number_literal) )))) = (binary_expression "iVar6 + -4" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "*(uint *)(iVar2 + 0x70) = uVar12;" (assignment_expression "*(uint *)(iVar2 + 0x70) = uVar12" (pointer_expression "*(uint *)(iVar2 + 0x70)" * (cast_expression "(uint *)(iVar2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x70)" ( (binary_expression "iVar2 + 0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar2 + 0x6c) = iVar6;" (assignment_expression "*(int *)(iVar2 + 0x6c) = iVar6" (pointer_expression "*(int *)(iVar2 + 0x6c)" * (cast_expression "(int *)(iVar2 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x6c)" ( (binary_expression "iVar2 + 0x6c" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "piVar17 = piVar3 + 2 + uVar12 * 2;" (assignment_expression "piVar17 = piVar3 + 2 + uVar12 * 2" identifier = (binary_expression "piVar3 + 2 + uVar12 * 2" (binary_expression "piVar3 + 2" identifier + number_literal) + (binary_expression "uVar12 * 2" identifier * number_literal))) ;) (expression_statement "uVar4 = (int)piVar3 + (iVar26 - (int)piVar17);" (assignment_expression "uVar4 = (int)piVar3 + (iVar26 - (int)piVar17)" identifier = (binary_expression "(int)piVar3 + (iVar26 - (int)piVar17)" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(iVar26 - (int)piVar17)" ( (binary_expression "iVar26 - (int)piVar17" identifier - (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "(**(code **)(puVar22 + 0x370bbc))\n            (puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,\n             uVar25);" (call_expression "(**(code **)(puVar22 + 0x370bbc))\n            (puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,\n             uVar25)" (parenthesized_expression "(**(code **)(puVar22 + 0x370bbc))" ( (pointer_expression "**(code **)(puVar22 + 0x370bbc)" * (pointer_expression "*(code **)(puVar22 + 0x370bbc)" * (cast_expression "(code **)(puVar22 + 0x370bbc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x370bbc)" ( (binary_expression "puVar22 + 0x370bbc" identifier + number_literal) ))))) )) (argument_list "(puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,\n             uVar25)" ( (binary_expression "puVar9 + 0x34" identifier + number_literal) , number_literal , (pointer_expression "*(undefined4 *)(puVar9 + 0x38)" * (cast_expression "(undefined4 *)(puVar9 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x38)" ( (binary_expression "puVar9 + 0x38" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar10 = *(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4;" (assignment_expression "uVar10 = *(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4" identifier = (binary_expression "*(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4" (binary_expression "*(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28)" (pointer_expression "*(int *)(puVar9 + 0x2c)" * (cast_expression "(int *)(puVar9 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x2c)" ( (binary_expression "puVar9 + 0x2c" identifier + number_literal) )))) - (pointer_expression "*(int *)(puVar9 + 0x28)" * (cast_expression "(int *)(puVar9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x28)" ( (binary_expression "puVar9 + 0x28" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar10 < uVar12) {\n    vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);\n  }\n  else if ((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }" if (parenthesized_expression "(uVar10 < uVar12)" ( (binary_expression "uVar10 < uVar12" identifier < identifier) )) (compound_statement "{\n    vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);\n  }" { (ERROR "vector<gold::" (binary_expression "vector<gold" identifier < identifier) : :) (labeled_statement "Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" statement_identifier (ERROR "::Armap_entry,std::allocator<gold:" : : (comma_expression "Armap_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" statement_identifier (ERROR "::Armap_entry>>::_M_default_append\n              ((vector<gold:" : : identifier >> : : identifier ( ( (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" statement_identifier (ERROR "::Armap_entry,std::allocator<gold:" : : (comma_expression "Armap_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" statement_identifier : (ERROR ":" :) (expression_statement "Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" (comma_expression "Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10" (binary_expression "Armap_entry>> *)\n               (puVar9 + 0x28)" identifier >> (pointer_expression "*)\n               (puVar9 + 0x28)" * (ERROR ")" )) (parenthesized_expression "(puVar9 + 0x28)" ( (binary_expression "puVar9 + 0x28" identifier + number_literal) )))) , (binary_expression "uVar12 - uVar10" identifier - identifier)) (ERROR ")" )) ;))))) }) (else_clause "else if ((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }" else (if_statement "if ((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }" if (parenthesized_expression "((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26))" ( (binary_expression "(uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)" (parenthesized_expression "(uVar12 < uVar10)" ( (binary_expression "uVar12 < uVar10" identifier < identifier) )) && (parenthesized_expression "(iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)" ( (comma_expression "iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26" (assignment_expression "iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10" identifier = (binary_expression "*(int *)(puVar9 + 0x28) + uVar12 * 0x10" (pointer_expression "*(int *)(puVar9 + 0x28)" * (cast_expression "(int *)(puVar9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x28)" ( (binary_expression "puVar9 + 0x28" identifier + number_literal) )))) + (binary_expression "uVar12 * 0x10" identifier * number_literal))) , (binary_expression "*(int *)(puVar9 + 0x2c) != iVar26" (pointer_expression "*(int *)(puVar9 + 0x2c)" * (cast_expression "(int *)(puVar9 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x2c)" ( (binary_expression "puVar9 + 0x2c" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }" { (expression_statement "*(int *)(puVar9 + 0x2c) = iVar26;" (assignment_expression "*(int *)(puVar9 + 0x2c) = iVar26" (pointer_expression "*(int *)(puVar9 + 0x2c)" * (cast_expression "(int *)(puVar9 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x2c)" ( (binary_expression "puVar9 + 0x2c" identifier + number_literal) )))) = identifier) ;) })))) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 != 0) {\n    piVar13 = *(int **)(puVar9 + 0x28);\n    piVar5 = piVar13 + uVar12 * 4;\n    piVar3 = piVar3 + 2;\n    iVar26 = -1;\n    iVar2 = -1;\n    do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    } while (piVar5 != piVar13);\nLAB_00151668:\n    if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }\n  }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n    piVar13 = *(int **)(puVar9 + 0x28);\n    piVar5 = piVar13 + uVar12 * 4;\n    piVar3 = piVar3 + 2;\n    iVar26 = -1;\n    iVar2 = -1;\n    do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    } while (piVar5 != piVar13);\nLAB_00151668:\n    if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }\n  }" { (expression_statement "piVar13 = *(int **)(puVar9 + 0x28);" (assignment_expression "piVar13 = *(int **)(puVar9 + 0x28)" identifier = (pointer_expression "*(int **)(puVar9 + 0x28)" * (cast_expression "(int **)(puVar9 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x28)" ( (binary_expression "puVar9 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = piVar13 + uVar12 * 4;" (assignment_expression "piVar5 = piVar13 + uVar12 * 4" identifier = (binary_expression "piVar13 + uVar12 * 4" identifier + (binary_expression "uVar12 * 4" identifier * number_literal))) ;) (expression_statement "piVar3 = piVar3 + 2;" (assignment_expression "piVar3 = piVar3 + 2" identifier = (binary_expression "piVar3 + 2" identifier + number_literal)) ;) (expression_statement "iVar26 = -1;" (assignment_expression "iVar26 = -1" identifier = number_literal) ;) (expression_statement "iVar2 = -1;" (assignment_expression "iVar2 = -1" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    } while (piVar5 != piVar13);" do (compound_statement "{\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    }" { (while_statement "while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }" { (expression_statement "pcVar21 = *(code **)(puVar22 + 0x3746b8);" (assignment_expression "pcVar21 = *(code **)(puVar22 + 0x3746b8)" identifier = (pointer_expression "*(code **)(puVar22 + 0x3746b8)" * (cast_expression "(code **)(puVar22 + 0x3746b8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x3746b8)" ( (binary_expression "puVar22 + 0x3746b8" identifier + number_literal) ))))) ;) (expression_statement "piVar13[1] = uVar10;" (assignment_expression "piVar13[1] = uVar10" (subscript_expression "piVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar13 = (int)uVar10 >> 0x1f;" (assignment_expression "*piVar13 = (int)uVar10 >> 0x1f" (pointer_expression "*piVar13" * identifier) = (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iVar15 = *piVar3;" (assignment_expression "iVar15 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "iVar19 = piVar3[1];" (assignment_expression "iVar19 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;) (expression_statement "piVar13[2] = iVar15;" (assignment_expression "piVar13[2] = iVar15" (subscript_expression "piVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13[3] = iVar19;" (assignment_expression "piVar13[3] = iVar19" (subscript_expression "piVar13[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar6 = (*pcVar21)((int)piVar17 + uVar10);" (assignment_expression "iVar6 = (*pcVar21)((int)piVar17 + uVar10)" identifier = (call_expression "(*pcVar21)((int)piVar17 + uVar10)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "((int)piVar17 + uVar10)" ( (binary_expression "(int)piVar17 + uVar10" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar10 = iVar6 + 1 + uVar10;" (assignment_expression "uVar10 = iVar6 + 1 + uVar10" identifier = (binary_expression "iVar6 + 1 + uVar10" (binary_expression "iVar6 + 1" identifier + number_literal) + identifier)) ;) (if_statement "if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;" if (parenthesized_expression "((iVar15 != iVar2) || (iVar19 != iVar26))" ( (binary_expression "(iVar15 != iVar2) || (iVar19 != iVar26)" (parenthesized_expression "(iVar15 != iVar2)" ( (binary_expression "iVar15 != iVar2" identifier != identifier) )) || (parenthesized_expression "(iVar19 != iVar26)" ( (binary_expression "iVar19 != iVar26" identifier != identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "piVar13 = piVar13 + 4;" (assignment_expression "piVar13 = piVar13 + 4" identifier = (binary_expression "piVar13 + 4" identifier + number_literal)) ;) (expression_statement "piVar3 = piVar3 + 2;" (assignment_expression "piVar3 = piVar3 + 2" identifier = (binary_expression "piVar3 + 2" identifier + number_literal)) ;) (expression_statement "iVar26 = iVar19;" (assignment_expression "iVar26 = iVar19" identifier = identifier) ;) (expression_statement "iVar2 = iVar15;" (assignment_expression "iVar2 = iVar15" identifier = identifier) ;) (if_statement "if (piVar5 == piVar13) goto LAB_00151668;" if (parenthesized_expression "(piVar5 == piVar13)" ( (binary_expression "piVar5 == piVar13" identifier == identifier) )) (goto_statement "goto LAB_00151668;" goto statement_identifier ;)) })) (expression_statement "piVar13 = piVar13 + 4;" (assignment_expression "piVar13 = piVar13 + 4" identifier = (binary_expression "piVar13 + 4" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;" (assignment_expression "*(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1" (pointer_expression "*(int *)(puVar9 + 0xd0)" * (cast_expression "(int *)(puVar9 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0xd0)" ( (binary_expression "puVar9 + 0xd0" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar9 + 0xd0) + 1" (pointer_expression "*(int *)(puVar9 + 0xd0)" * (cast_expression "(int *)(puVar9 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0xd0)" ( (binary_expression "puVar9 + 0xd0" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar3 = piVar3 + 2;" (assignment_expression "piVar3 = piVar3 + 2" identifier = (binary_expression "piVar3 + 2" identifier + number_literal)) ;) (expression_statement "iVar26 = iVar19;" (assignment_expression "iVar26 = iVar19" identifier = identifier) ;) (expression_statement "iVar2 = iVar15;" (assignment_expression "iVar2 = iVar15" identifier = identifier) ;) }) while (parenthesized_expression "(piVar5 != piVar13)" ( (binary_expression "piVar5 != piVar13" identifier != identifier) )) ;) (labeled_statement "LAB_00151668:\n    if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }" statement_identifier : (if_statement "if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }" if (parenthesized_expression "(uVar4 < uVar10)" ( (binary_expression "uVar4 < uVar10" identifier < identifier) )) (compound_statement "{\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }" { (expression_statement "uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);" (assignment_expression "uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0)" identifier = (call_expression "(**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0)" (parenthesized_expression "(**(code **)(puVar22 + 0x37474c))" ( (pointer_expression "**(code **)(puVar22 + 0x37474c)" * (pointer_expression "*(code **)(puVar22 + 0x37474c)" * (cast_expression "(code **)(puVar22 + 0x37474c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x37474c)" ( (binary_expression "puVar22 + 0x37474c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar22 + 0x37056c) + -0x15d0)" ( (binary_expression "*(int *)(puVar22 + 0x37056c) + -0x15d0" (pointer_expression "*(int *)(puVar22 + 0x37056c)" * (cast_expression "(int *)(puVar22 + 0x37056c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x37056c)" ( (binary_expression "puVar22 + 0x37056c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x370548))" ( (pointer_expression "**(code **)(puVar22 + 0x370548)" * (pointer_expression "*(code **)(puVar22 + 0x370548)" * (cast_expression "(code **)(puVar22 + 0x370548)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x370548)" ( (binary_expression "puVar22 + 0x370548" identifier + number_literal) ))))) )) (argument_list "(uVar11,*(undefined4 *)(puVar9 + 0xc))" ( identifier , (pointer_expression "*(undefined4 *)(puVar9 + 0xc)" * (cast_expression "(undefined4 *)(puVar9 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0xc)" ( (binary_expression "puVar9 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "iVar26 = *(int *)(puVar9 + 0x6c);" (assignment_expression "iVar26 = *(int *)(puVar9 + 0x6c)" identifier = (pointer_expression "*(int *)(puVar9 + 0x6c)" * (cast_expression "(int *)(puVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x6c)" ( (binary_expression "puVar9 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(puVar9 + 100);" (assignment_expression "iVar2 = *(int *)(puVar9 + 100)" identifier = (pointer_expression "*(int *)(puVar9 + 100)" * (cast_expression "(int *)(puVar9 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 100)" ( (binary_expression "puVar9 + 100" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(puVar9 + 0x70);" (assignment_expression "iVar6 = *(int *)(puVar9 + 0x70)" identifier = (pointer_expression "*(int *)(puVar9 + 0x70)" * (cast_expression "(int *)(puVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x70)" ( (binary_expression "puVar9 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(puVar9 + 0x68);" (assignment_expression "iVar15 = *(int *)(puVar9 + 0x68)" identifier = (pointer_expression "*(int *)(puVar9 + 0x68)" * (cast_expression "(int *)(puVar9 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x68)" ( (binary_expression "puVar9 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = (iVar26 - iVar2) * 8 + iVar6;" (assignment_expression "iVar19 = (iVar26 - iVar2) * 8 + iVar6" identifier = (binary_expression "(iVar26 - iVar2) * 8 + iVar6" (binary_expression "(iVar26 - iVar2) * 8" (parenthesized_expression "(iVar26 - iVar2)" ( (binary_expression "iVar26 - iVar2" identifier - identifier) )) * number_literal) + identifier)) ;) (expression_statement "uVar4 = iVar19 - iVar15;" (assignment_expression "uVar4 = iVar19 - iVar15" identifier = (binary_expression "iVar19 - iVar15" identifier - identifier)) ;) (goto_statement "goto joined_r0x001516a0;" goto statement_identifier ;) }))) })) (expression_statement "iVar26 = *(int *)(puVar9 + 0x6c);" (assignment_expression "iVar26 = *(int *)(puVar9 + 0x6c)" identifier = (pointer_expression "*(int *)(puVar9 + 0x6c)" * (cast_expression "(int *)(puVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x6c)" ( (binary_expression "puVar9 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(puVar9 + 100);" (assignment_expression "iVar2 = *(int *)(puVar9 + 100)" identifier = (pointer_expression "*(int *)(puVar9 + 100)" * (cast_expression "(int *)(puVar9 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 100)" ( (binary_expression "puVar9 + 100" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(puVar9 + 0x70);" (assignment_expression "iVar6 = *(int *)(puVar9 + 0x70)" identifier = (pointer_expression "*(int *)(puVar9 + 0x70)" * (cast_expression "(int *)(puVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x70)" ( (binary_expression "puVar9 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(puVar9 + 0x68);" (assignment_expression "iVar15 = *(int *)(puVar9 + 0x68)" identifier = (pointer_expression "*(int *)(puVar9 + 0x68)" * (cast_expression "(int *)(puVar9 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x68)" ( (binary_expression "puVar9 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = (iVar26 - iVar2) * 8 + iVar6;" (assignment_expression "iVar19 = (iVar26 - iVar2) * 8 + iVar6" identifier = (binary_expression "(iVar26 - iVar2) * 8 + iVar6" (binary_expression "(iVar26 - iVar2) * 8" (parenthesized_expression "(iVar26 - iVar2)" ( (binary_expression "iVar26 - iVar2" identifier - identifier) )) * number_literal) + identifier)) ;) (expression_statement "uVar4 = iVar19 - iVar15;" (assignment_expression "uVar4 = iVar19 - iVar15" identifier = (binary_expression "iVar19 - iVar15" identifier - identifier)) ;) (labeled_statement "joined_r0x001516a0:\n  if (uVar4 <= uVar12) {\n    vector<bool,std::allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);\n    return;\n  }" statement_identifier : (if_statement "if (uVar4 <= uVar12) {\n    vector<bool,std::allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);\n    return;\n  }" if (parenthesized_expression "(uVar4 <= uVar12)" ( (binary_expression "uVar4 <= uVar12" identifier <= identifier) )) (compound_statement "{\n    vector<bool,std::allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);\n    return;\n  }" { (ERROR "vector<bool,std::" (comma_expression "vector<bool,std" (binary_expression "vector<bool" identifier < identifier) , identifier) : :) (expression_statement "allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);" (binary_expression "allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0)" identifier < (binary_expression "bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0)" identifier >> (ERROR "::" : :) (call_expression "_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0)" identifier (argument_list "(puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0)" ( (binary_expression "puVar9 + 100" identifier + number_literal) , identifier , identifier , (binary_expression "(iVar15 - iVar19) + uVar12" (parenthesized_expression "(iVar15 - iVar19)" ( (binary_expression "iVar15 - iVar19" identifier - identifier) )) + identifier) , number_literal ))))) ;) (return_statement "return;" return ;) }))) (expression_statement "uVar12 = uVar12 + iVar15;" (assignment_expression "uVar12 = uVar12 + iVar15" identifier = (binary_expression "uVar12 + iVar15" identifier + identifier)) ;) (expression_statement "uVar4 = uVar12;" (assignment_expression "uVar4 = uVar12" identifier = identifier) ;) (if_statement "if ((int)uVar12 < 0) {\n    uVar4 = uVar12 + 0x1f;\n  }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar4 = uVar12 + 0x1f;\n  }" { (expression_statement "uVar4 = uVar12 + 0x1f;" (assignment_expression "uVar4 = uVar12 + 0x1f" identifier = (binary_expression "uVar12 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "iVar2 = iVar2 + ((int)uVar4 >> 5) * 4;" (assignment_expression "iVar2 = iVar2 + ((int)uVar4 >> 5) * 4" identifier = (binary_expression "iVar2 + ((int)uVar4 >> 5) * 4" identifier + (binary_expression "((int)uVar4 >> 5) * 4" (parenthesized_expression "((int)uVar4 >> 5)" ( (binary_expression "(int)uVar4 >> 5" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * number_literal))) ;) (if_statement "if ((int)uVar12 < 0) {\n    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n  }\n  else {\n    uVar12 = uVar12 & 0x8000001f;\n  }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n  }" { (expression_statement "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;" (assignment_expression "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" identifier = (binary_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" (parenthesized_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0)" ( (binary_expression "(uVar12 & 0x8000001f) - 1 | 0xffffffe0" (binary_expression "(uVar12 & 0x8000001f) - 1" (parenthesized_expression "(uVar12 & 0x8000001f)" ( (binary_expression "uVar12 & 0x8000001f" identifier & number_literal) )) - number_literal) | number_literal) )) + number_literal)) ;) }) (else_clause "else {\n    uVar12 = uVar12 & 0x8000001f;\n  }" else (compound_statement "{\n    uVar12 = uVar12 & 0x8000001f;\n  }" { (expression_statement "uVar12 = uVar12 & 0x8000001f;" (assignment_expression "uVar12 = uVar12 & 0x8000001f" identifier = (binary_expression "uVar12 & 0x8000001f" identifier & number_literal)) ;) }))) (if_statement "if ((int)uVar12 < 0) {\n    *(uint *)(puVar9 + 0x70) = uVar12 + 0x20;\n    *(int *)(puVar9 + 0x6c) = iVar2 + -4;\n    return;\n  }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    *(uint *)(puVar9 + 0x70) = uVar12 + 0x20;\n    *(int *)(puVar9 + 0x6c) = iVar2 + -4;\n    return;\n  }" { (expression_statement "*(uint *)(puVar9 + 0x70) = uVar12 + 0x20;" (assignment_expression "*(uint *)(puVar9 + 0x70) = uVar12 + 0x20" (pointer_expression "*(uint *)(puVar9 + 0x70)" * (cast_expression "(uint *)(puVar9 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x70)" ( (binary_expression "puVar9 + 0x70" identifier + number_literal) )))) = (binary_expression "uVar12 + 0x20" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar9 + 0x6c) = iVar2 + -4;" (assignment_expression "*(int *)(puVar9 + 0x6c) = iVar2 + -4" (pointer_expression "*(int *)(puVar9 + 0x6c)" * (cast_expression "(int *)(puVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x6c)" ( (binary_expression "puVar9 + 0x6c" identifier + number_literal) )))) = (binary_expression "iVar2 + -4" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "*(uint *)(puVar9 + 0x70) = uVar12;" (assignment_expression "*(uint *)(puVar9 + 0x70) = uVar12" (pointer_expression "*(uint *)(puVar9 + 0x70)" * (cast_expression "(uint *)(puVar9 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x70)" ( (binary_expression "puVar9 + 0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar9 + 0x6c) = iVar2;" (assignment_expression "*(int *)(puVar9 + 0x6c) = iVar2" (pointer_expression "*(int *)(puVar9 + 0x6c)" * (cast_expression "(int *)(puVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x6c)" ( (binary_expression "puVar9 + 0x6c" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* DWARF original prototype: void\n   _M_construct<char*>(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> * this,\n   char * __beg, char * __end, forward_iterator_tag param_4) */\n\nvoid __thiscall\nstd::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n          (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *this,char *__beg,\n          int __end,uint param_4)\n\n{\n  iterator __position;\n  iterator __position_00;\n  pointer pcVar1;\n  int *piVar2;\n  uint uVar3;\n  int *piVar4;\n  int iVar5;\n  uint *puVar6;\n  undefined *puVar7;\n  uint uVar8;\n  size_type sVar9;\n  int iVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  int *piVar13;\n  uint uVar14;\n  int iVar15;\n  uint *puVar16;\n  int *piVar17;\n  uint *puVar18;\n  int iVar19;\n  uint uVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined4 uVar24;\n  undefined4 uVar25;\n  int iVar26;\n  uint in_stack_ffffffe4;\n  size_type __dnew;\n  \n  iVar26 = 0x4c9240;\n  if (__beg != (char *)0x0) {\n    uVar12 = __end - (int)__beg;\n    __dnew = uVar12;\n    if (0xf < uVar12) {\n      pcVar1 = (pointer)(*(code *)PTR__M_create_004c141c)(this,&__dnew,0);\n      (this->_M_dataplus)._M_p = pcVar1;\n      (this->field_2)._M_allocated_capacity = __dnew;\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(pcVar1,__beg,uVar12);\n      pcVar1 = (this->_M_dataplus)._M_p;\n      this->_M_string_length = __dnew;\n      pcVar1[__dnew] = '\0';\n      return;\n    }\n    pcVar1 = (this->_M_dataplus)._M_p;\n    if (uVar12 == 1) {\n      *pcVar1 = *__beg;\n      pcVar1 = (this->_M_dataplus)._M_p + 1;\n    }\n    else {\n      pcVar1 = pcVar1 + uVar12;\n      if (uVar12 != 0) {\n        pcVar1 = pcVar1 + -uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }\n    this->_M_string_length = uVar12;\n    *pcVar1 = '\0';\n    return;\n  }\n  if (__end == 0) {\n    pcVar1 = (this->_M_dataplus)._M_p;\n    this->_M_string_length = 0;\n    *pcVar1 = '\0';\n    return;\n  }\n  puVar7 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00;\n  puVar22 = PTR___throw_logic_error_004c12d8;\n  (*(code *)PTR___throw_logic_error_004c12d8)();\n  uVar11 = 0;\n  uVar25 = 0;\n  uVar24 = 1;\n  iVar10 = iVar26;\n  piVar2 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar7 + 0x24) + 0x20);\n  uVar12 = piVar2[1];\n  if (*piVar2 != 0) {\n    pcVar21 = *(code **)(puVar22 + 0x37054c);\n    iVar10 = *(int *)(puVar22 + 0x36fd98) + 0x4584;\n    (*pcVar21)(iVar10,0xc0);\n    uVar25 = 0;\n    uVar24 = 1;\n    iVar26 = __end;\n    puVar6 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar10 + 0x24) + 0x20);\n    uVar12 = *puVar6;\n    puVar16 = puVar6 + 1;\n    puVar18 = puVar16 + uVar12;\n    uVar3 = (int)puVar6 + (__end - (int)puVar18);\n    (**(code **)(pcVar21 + 0x370828))\n              (iVar10 + 0x34,0,*(undefined4 *)(iVar10 + 0x38),puVar18,uVar3,uVar11,iVar26,uVar24,\n               uVar25);\n    uVar8 = *(int *)(iVar10 + 0x2c) - *(int *)(iVar10 + 0x28) >> 4;\n    if (uVar8 < uVar12) {\n      vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n      _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                         *)(iVar10 + 0x28),uVar12 - uVar8);\n    }\n    else if ((uVar12 < uVar8) &&\n            (iVar26 = *(int *)(iVar10 + 0x28) + uVar12 * 0x10, *(int *)(iVar10 + 0x2c) != iVar26)) {\n      *(int *)(iVar10 + 0x2c) = iVar26;\n    }\n    uVar8 = 0;\n    if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar10 + 0x28) + uVar12 * 4;\n      piVar2 = *(int **)(iVar10 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar2[1] = uVar8;\n          puVar16 = puVar16 + 1;\n          *piVar2 = (int)uVar8 >> 0x1f;\n          piVar4 = piVar2 + 4;\n          piVar2[2] = 0;\n          piVar2[3] = uVar14;\n          iVar5 = (*pcVar23)((int)puVar18 + uVar8);\n          uVar8 = iVar5 + 1 + uVar8;\n          piVar2 = piVar4;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar4) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar10 + 0xd0) = *(int *)(iVar10 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar4);\nLAB_001519e0:\n      if (uVar3 < uVar8) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar10 + 0xc));\n        sVar9 = *(size_type *)(iVar10 + 0x6c);\n        iVar26 = *(int *)(iVar10 + 100);\n        iVar5 = *(int *)(iVar10 + 0x70);\n        iVar15 = *(int *)(iVar10 + 0x68);\n        uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;\n        goto joined_r0x00151ae4;\n      }\n    }\n    sVar9 = *(size_type *)(iVar10 + 0x6c);\n    iVar26 = *(int *)(iVar10 + 100);\n    iVar5 = *(int *)(iVar10 + 0x70);\n    iVar15 = *(int *)(iVar10 + 0x68);\n    uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;\njoined_r0x00151ae4:\n    if (uVar3 <= uVar12) {\n      __position.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;\n      __position.super__Bit_iterator_base._M_offset = param_4;\n      vector<bool,_std::allocator<bool>_>::_M_fill_insert\n                ((vector<bool,_std::allocator<bool>_> *)(iVar10 + 100),__position,sVar9,\n                 SUB41(iVar5,0));\n      return;\n    }\n    uVar12 = uVar12 + iVar15;\n    uVar3 = uVar12;\n    if ((int)uVar12 < 0) {\n      uVar3 = uVar12 + 0x1f;\n    }\n    iVar26 = iVar26 + ((int)uVar3 >> 5) * 4;\n    if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }\n    if ((int)uVar12 < 0) {\n      *(uint *)(iVar10 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar10 + 0x6c) = iVar26 + -4;\n      return;\n    }\n    *(uint *)(iVar10 + 0x70) = uVar12;\n    *(int *)(iVar10 + 0x6c) = iVar26;\n    return;\n  }\n  piVar17 = piVar2 + 2 + uVar12 * 2;\n  uVar3 = (int)piVar2 + (iVar26 - (int)piVar17);\n  (**(code **)(puVar22 + 0x370bbc))\n            (puVar7 + 0x34,0,*(undefined4 *)(puVar7 + 0x38),piVar17,uVar3,param_4,iVar10,uVar24,\n             uVar25);\n  uVar8 = *(int *)(puVar7 + 0x2c) - *(int *)(puVar7 + 0x28) >> 4;\n  if (uVar8 < uVar12) {\n    vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n    _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                       *)(puVar7 + 0x28),uVar12 - uVar8);\n  }\n  else if ((uVar12 < uVar8) &&\n          (iVar26 = *(int *)(puVar7 + 0x28) + uVar12 * 0x10, *(int *)(puVar7 + 0x2c) != iVar26)) {\n    *(int *)(puVar7 + 0x2c) = iVar26;\n  }\n  uVar8 = 0;\n  if (uVar12 != 0) {\n    piVar13 = *(int **)(puVar7 + 0x28);\n    piVar4 = piVar13 + uVar12 * 4;\n    piVar2 = piVar2 + 2;\n    iVar26 = -1;\n    iVar10 = -1;\n    do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar8;\n        *piVar13 = (int)uVar8 >> 0x1f;\n        iVar15 = *piVar2;\n        iVar19 = piVar2[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar5 = (*pcVar21)((int)piVar17 + uVar8);\n        uVar8 = iVar5 + 1 + uVar8;\n        if ((iVar15 != iVar10) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar2 = piVar2 + 2;\n        iVar26 = iVar19;\n        iVar10 = iVar15;\n        if (piVar4 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar7 + 0xd0) = *(int *)(puVar7 + 0xd0) + 1;\n      piVar2 = piVar2 + 2;\n      iVar26 = iVar19;\n      iVar10 = iVar15;\n    } while (piVar4 != piVar13);\nLAB_00151668:\n    if (uVar3 < uVar8) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar7 + 0xc));\n      sVar9 = *(size_type *)(puVar7 + 0x6c);\n      iVar26 = *(int *)(puVar7 + 100);\n      iVar10 = *(int *)(puVar7 + 0x70);\n      iVar5 = *(int *)(puVar7 + 0x68);\n      uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5;\n      goto joined_r0x001516a0;\n    }\n  }\n  sVar9 = *(size_type *)(puVar7 + 0x6c);\n  iVar26 = *(int *)(puVar7 + 100);\n  iVar10 = *(int *)(puVar7 + 0x70);\n  iVar5 = *(int *)(puVar7 + 0x68);\n  uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5;\njoined_r0x001516a0:\n  if (uVar3 <= uVar12) {\n    __position_00.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;\n    __position_00.super__Bit_iterator_base._M_offset = in_stack_ffffffe4;\n    vector<bool,_std::allocator<bool>_>::_M_fill_insert\n              ((vector<bool,_std::allocator<bool>_> *)(puVar7 + 100),__position_00,sVar9,\n               SUB41(iVar10,0));\n    return;\n  }\n  uVar12 = uVar12 + iVar5;\n  uVar3 = uVar12;\n  if ((int)uVar12 < 0) {\n    uVar3 = uVar12 + 0x1f;\n  }\n  iVar26 = iVar26 + ((int)uVar3 >> 5) * 4;\n  if ((int)uVar12 < 0) {\n    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n  }\n  else {\n    uVar12 = uVar12 & 0x8000001f;\n  }\n  if ((int)uVar12 < 0) {\n    *(uint *)(puVar7 + 0x70) = uVar12 + 0x20;\n    *(int *)(puVar7 + 0x6c) = iVar26 + -4;\n    return;\n  }\n  *(uint *)(puVar7 + 0x70) = uVar12;\n  *(int *)(puVar7 + 0x6c) = iVar26;\n  return;\n}\n\n" comment comment comment comment comment comment comment (declaration "void __thiscall\nstd::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n          (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *this,char *__beg,\n          int __end,uint param_4)\n\n{\n  iterator __position;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::__cxx11::" identifier : : identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>,_std::allocator<char>_>::_M_construct<char*>\n          (basic_string<char" < primitive_type > , (ERROR "_std::allocator<char>_>::_M_construct<char" identifier : : identifier < primitive_type > identifier > : : identifier < primitive_type) * (ERROR ">" >) ( identifier < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>_>" identifier : : identifier < primitive_type > identifier >) (pointer_declarator "*this" * identifier) , (ERROR "char" identifier) (pointer_declarator "*__beg" * identifier) , (ERROR "int" identifier) identifier , (ERROR "uint param_4)\n\n{\n  iterator" identifier identifier ) { identifier) identifier ;) (declaration "iterator __position_00;" type_identifier identifier ;) (declaration "pointer pcVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "size_type sVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "code *pcVar23;" type_identifier (pointer_declarator "*pcVar23" * identifier) ;) (declaration "undefined4 uVar24;" type_identifier identifier ;) (declaration "undefined4 uVar25;" type_identifier identifier ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "uint in_stack_ffffffe4;" type_identifier identifier ;) (declaration "size_type __dnew;" type_identifier identifier ;) (expression_statement "iVar26 = 0x4c9240;" (assignment_expression "iVar26 = 0x4c9240" identifier = number_literal) ;) (if_statement "if (__beg != (char *)0x0) {\n    uVar12 = __end - (int)__beg;\n    __dnew = uVar12;\n    if (0xf < uVar12) {\n      pcVar1 = (pointer)(*(code *)PTR__M_create_004c141c)(this,&__dnew,0);\n      (this->_M_dataplus)._M_p = pcVar1;\n      (this->field_2)._M_allocated_capacity = __dnew;\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(pcVar1,__beg,uVar12);\n      pcVar1 = (this->_M_dataplus)._M_p;\n      this->_M_string_length = __dnew;\n      pcVar1[__dnew] = '\0';\n      return;\n    }\n    pcVar1 = (this->_M_dataplus)._M_p;\n    if (uVar12 == 1) {\n      *pcVar1 = *__beg;\n      pcVar1 = (this->_M_dataplus)._M_p + 1;\n    }\n    else {\n      pcVar1 = pcVar1 + uVar12;\n      if (uVar12 != 0) {\n        pcVar1 = pcVar1 + -uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }\n    this->_M_string_length = uVar12;\n    *pcVar1 = '\0';\n    return;\n  }" if (parenthesized_expression "(__beg != (char *)0x0)" ( (binary_expression "__beg != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar12 = __end - (int)__beg;\n    __dnew = uVar12;\n    if (0xf < uVar12) {\n      pcVar1 = (pointer)(*(code *)PTR__M_create_004c141c)(this,&__dnew,0);\n      (this->_M_dataplus)._M_p = pcVar1;\n      (this->field_2)._M_allocated_capacity = __dnew;\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(pcVar1,__beg,uVar12);\n      pcVar1 = (this->_M_dataplus)._M_p;\n      this->_M_string_length = __dnew;\n      pcVar1[__dnew] = '\0';\n      return;\n    }\n    pcVar1 = (this->_M_dataplus)._M_p;\n    if (uVar12 == 1) {\n      *pcVar1 = *__beg;\n      pcVar1 = (this->_M_dataplus)._M_p + 1;\n    }\n    else {\n      pcVar1 = pcVar1 + uVar12;\n      if (uVar12 != 0) {\n        pcVar1 = pcVar1 + -uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }\n    this->_M_string_length = uVar12;\n    *pcVar1 = '\0';\n    return;\n  }" { (expression_statement "uVar12 = __end - (int)__beg;" (assignment_expression "uVar12 = __end - (int)__beg" identifier = (binary_expression "__end - (int)__beg" identifier - (cast_expression "(int)__beg" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "__dnew = uVar12;" (assignment_expression "__dnew = uVar12" identifier = identifier) ;) (if_statement "if (0xf < uVar12) {\n      pcVar1 = (pointer)(*(code *)PTR__M_create_004c141c)(this,&__dnew,0);\n      (this->_M_dataplus)._M_p = pcVar1;\n      (this->field_2)._M_allocated_capacity = __dnew;\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(pcVar1,__beg,uVar12);\n      pcVar1 = (this->_M_dataplus)._M_p;\n      this->_M_string_length = __dnew;\n      pcVar1[__dnew] = '\0';\n      return;\n    }" if (parenthesized_expression "(0xf < uVar12)" ( (binary_expression "0xf < uVar12" number_literal < identifier) )) (compound_statement "{\n      pcVar1 = (pointer)(*(code *)PTR__M_create_004c141c)(this,&__dnew,0);\n      (this->_M_dataplus)._M_p = pcVar1;\n      (this->field_2)._M_allocated_capacity = __dnew;\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(pcVar1,__beg,uVar12);\n      pcVar1 = (this->_M_dataplus)._M_p;\n      this->_M_string_length = __dnew;\n      pcVar1[__dnew] = '\0';\n      return;\n    }" { (expression_statement "pcVar1 = (pointer)(*(code *)PTR__M_create_004c141c)(this,&__dnew,0);" (assignment_expression "pcVar1 = (pointer)(*(code *)PTR__M_create_004c141c)(this,&__dnew,0)" identifier = (call_expression "(pointer)(*(code *)PTR__M_create_004c141c)(this,&__dnew,0)" (call_expression "(pointer)(*(code *)PTR__M_create_004c141c)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "(*(code *)PTR__M_create_004c141c)" ( (pointer_expression "*(code *)PTR__M_create_004c141c" * (cast_expression "(code *)PTR__M_create_004c141c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(this,&__dnew,0)" ( identifier , (pointer_expression "&__dnew" & identifier) , number_literal )))) ;) (expression_statement "(this->_M_dataplus)._M_p = pcVar1;" (assignment_expression "(this->_M_dataplus)._M_p = pcVar1" (field_expression "(this->_M_dataplus)._M_p" (parenthesized_expression "(this->_M_dataplus)" ( (field_expression "this->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(this->field_2)._M_allocated_capacity = __dnew;" (assignment_expression "(this->field_2)._M_allocated_capacity = __dnew" (field_expression "(this->field_2)._M_allocated_capacity" (parenthesized_expression "(this->field_2)" ( (field_expression "this->field_2" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "pcVar21 = *(code **)(iVar26 + -0x3698);" (assignment_expression "pcVar21 = *(code **)(iVar26 + -0x3698)" identifier = (pointer_expression "*(code **)(iVar26 + -0x3698)" * (cast_expression "(code **)(iVar26 + -0x3698)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar26 + -0x3698)" ( (binary_expression "iVar26 + -0x3698" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00151454:\n      (*pcVar21)(pcVar1,__beg,uVar12);" statement_identifier : (expression_statement "(*pcVar21)(pcVar1,__beg,uVar12);" (call_expression "(*pcVar21)(pcVar1,__beg,uVar12)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(pcVar1,__beg,uVar12)" ( identifier , identifier , identifier ))) ;)) (expression_statement "pcVar1 = (this->_M_dataplus)._M_p;" (assignment_expression "pcVar1 = (this->_M_dataplus)._M_p" identifier = (field_expression "(this->_M_dataplus)._M_p" (parenthesized_expression "(this->_M_dataplus)" ( (field_expression "this->_M_dataplus" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "this->_M_string_length = __dnew;" (assignment_expression "this->_M_string_length = __dnew" (field_expression "this->_M_string_length" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar1[__dnew] = '\0';" (assignment_expression "pcVar1[__dnew] = '\0'" (subscript_expression "pcVar1[__dnew]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar1 = (this->_M_dataplus)._M_p;" (assignment_expression "pcVar1 = (this->_M_dataplus)._M_p" identifier = (field_expression "(this->_M_dataplus)._M_p" (parenthesized_expression "(this->_M_dataplus)" ( (field_expression "this->_M_dataplus" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (uVar12 == 1) {\n      *pcVar1 = *__beg;\n      pcVar1 = (this->_M_dataplus)._M_p + 1;\n    }\n    else {\n      pcVar1 = pcVar1 + uVar12;\n      if (uVar12 != 0) {\n        pcVar1 = pcVar1 + -uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }" if (parenthesized_expression "(uVar12 == 1)" ( (binary_expression "uVar12 == 1" identifier == number_literal) )) (compound_statement "{\n      *pcVar1 = *__beg;\n      pcVar1 = (this->_M_dataplus)._M_p + 1;\n    }" { (expression_statement "*pcVar1 = *__beg;" (assignment_expression "*pcVar1 = *__beg" (pointer_expression "*pcVar1" * identifier) = (pointer_expression "*__beg" * identifier)) ;) (expression_statement "pcVar1 = (this->_M_dataplus)._M_p + 1;" (assignment_expression "pcVar1 = (this->_M_dataplus)._M_p + 1" identifier = (binary_expression "(this->_M_dataplus)._M_p + 1" (field_expression "(this->_M_dataplus)._M_p" (parenthesized_expression "(this->_M_dataplus)" ( (field_expression "this->_M_dataplus" identifier -> field_identifier) )) . field_identifier) + number_literal)) ;) }) (else_clause "else {\n      pcVar1 = pcVar1 + uVar12;\n      if (uVar12 != 0) {\n        pcVar1 = pcVar1 + -uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }" else (compound_statement "{\n      pcVar1 = pcVar1 + uVar12;\n      if (uVar12 != 0) {\n        pcVar1 = pcVar1 + -uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }" { (expression_statement "pcVar1 = pcVar1 + uVar12;" (assignment_expression "pcVar1 = pcVar1 + uVar12" identifier = (binary_expression "pcVar1 + uVar12" identifier + identifier)) ;) (if_statement "if (uVar12 != 0) {\n        pcVar1 = pcVar1 + -uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n        pcVar1 = pcVar1 + -uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }" { (expression_statement "pcVar1 = pcVar1 + -uVar12;" (assignment_expression "pcVar1 = pcVar1 + -uVar12" identifier = (binary_expression "pcVar1 + -uVar12" identifier + (unary_expression "-uVar12" - identifier))) ;) (expression_statement "pcVar21 = (code *)PTR_memcpy_004c5ba8;" (assignment_expression "pcVar21 = (code *)PTR_memcpy_004c5ba8" identifier = (cast_expression "(code *)PTR_memcpy_004c5ba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (goto_statement "goto LAB_00151454;" goto statement_identifier ;) })) }))) (expression_statement "this->_M_string_length = uVar12;" (assignment_expression "this->_M_string_length = uVar12" (field_expression "this->_M_string_length" identifier -> field_identifier) = identifier) ;) (expression_statement "*pcVar1 = '\0';" (assignment_expression "*pcVar1 = '\0'" (pointer_expression "*pcVar1" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })) (if_statement "if (__end == 0) {\n    pcVar1 = (this->_M_dataplus)._M_p;\n    this->_M_string_length = 0;\n    *pcVar1 = '\0';\n    return;\n  }" if (parenthesized_expression "(__end == 0)" ( (binary_expression "__end == 0" identifier == number_literal) )) (compound_statement "{\n    pcVar1 = (this->_M_dataplus)._M_p;\n    this->_M_string_length = 0;\n    *pcVar1 = '\0';\n    return;\n  }" { (expression_statement "pcVar1 = (this->_M_dataplus)._M_p;" (assignment_expression "pcVar1 = (this->_M_dataplus)._M_p" identifier = (field_expression "(this->_M_dataplus)._M_p" (parenthesized_expression "(this->_M_dataplus)" ( (field_expression "this->_M_dataplus" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "this->_M_string_length = 0;" (assignment_expression "this->_M_string_length = 0" (field_expression "this->_M_string_length" identifier -> field_identifier) = number_literal) ;) (expression_statement "*pcVar1 = '\0';" (assignment_expression "*pcVar1 = '\0'" (pointer_expression "*pcVar1" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })) (expression_statement "puVar7 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00;" (assignment_expression "puVar7 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00" identifier = (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00" identifier + number_literal)) ;) (expression_statement "puVar22 = PTR___throw_logic_error_004c12d8;" (assignment_expression "puVar22 = PTR___throw_logic_error_004c12d8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___throw_logic_error_004c12d8)();" (call_expression "(*(code *)PTR___throw_logic_error_004c12d8)()" (parenthesized_expression "(*(code *)PTR___throw_logic_error_004c12d8)" ( (pointer_expression "*(code *)PTR___throw_logic_error_004c12d8" * (cast_expression "(code *)PTR___throw_logic_error_004c12d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar24 = 1;" (assignment_expression "uVar24 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = iVar26;" (assignment_expression "iVar10 = iVar26" identifier = identifier) ;) (expression_statement "piVar2 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar7 + 0x24) + 0x20);" (assignment_expression "piVar2 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar7 + 0x24) + 0x20)" identifier = (cast_expression "(int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar7 + 0x24) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x370690))(*(int *)(puVar7 + 0x24) + 0x20)" (parenthesized_expression "(**(code **)(puVar22 + 0x370690))" ( (pointer_expression "**(code **)(puVar22 + 0x370690)" * (pointer_expression "*(code **)(puVar22 + 0x370690)" * (cast_expression "(code **)(puVar22 + 0x370690)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x370690)" ( (binary_expression "puVar22 + 0x370690" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar7 + 0x24) + 0x20)" ( (binary_expression "*(int *)(puVar7 + 0x24) + 0x20" (pointer_expression "*(int *)(puVar7 + 0x24)" * (cast_expression "(int *)(puVar7 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x24)" ( (binary_expression "puVar7 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar12 = piVar2[1];" (assignment_expression "uVar12 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (if_statement "if (*piVar2 != 0) {\n    pcVar21 = *(code **)(puVar22 + 0x37054c);\n    iVar10 = *(int *)(puVar22 + 0x36fd98) + 0x4584;\n    (*pcVar21)(iVar10,0xc0);\n    uVar25 = 0;\n    uVar24 = 1;\n    iVar26 = __end;\n    puVar6 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar10 + 0x24) + 0x20);\n    uVar12 = *puVar6;\n    puVar16 = puVar6 + 1;\n    puVar18 = puVar16 + uVar12;\n    uVar3 = (int)puVar6 + (__end - (int)puVar18);\n    (**(code **)(pcVar21 + 0x370828))\n              (iVar10 + 0x34,0,*(undefined4 *)(iVar10 + 0x38),puVar18,uVar3,uVar11,iVar26,uVar24,\n               uVar25);\n    uVar8 = *(int *)(iVar10 + 0x2c) - *(int *)(iVar10 + 0x28) >> 4;\n    if (uVar8 < uVar12) {\n      vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n      _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                         *)(iVar10 + 0x28),uVar12 - uVar8);\n    }\n    else if ((uVar12 < uVar8) &&\n            (iVar26 = *(int *)(iVar10 + 0x28) + uVar12 * 0x10, *(int *)(iVar10 + 0x2c) != iVar26)) {\n      *(int *)(iVar10 + 0x2c) = iVar26;\n    }\n    uVar8 = 0;\n    if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar10 + 0x28) + uVar12 * 4;\n      piVar2 = *(int **)(iVar10 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar2[1] = uVar8;\n          puVar16 = puVar16 + 1;\n          *piVar2 = (int)uVar8 >> 0x1f;\n          piVar4 = piVar2 + 4;\n          piVar2[2] = 0;\n          piVar2[3] = uVar14;\n          iVar5 = (*pcVar23)((int)puVar18 + uVar8);\n          uVar8 = iVar5 + 1 + uVar8;\n          piVar2 = piVar4;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar4) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar10 + 0xd0) = *(int *)(iVar10 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar4);\nLAB_001519e0:\n      if (uVar3 < uVar8) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar10 + 0xc));\n        sVar9 = *(size_type *)(iVar10 + 0x6c);\n        iVar26 = *(int *)(iVar10 + 100);\n        iVar5 = *(int *)(iVar10 + 0x70);\n        iVar15 = *(int *)(iVar10 + 0x68);\n        uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;\n        goto joined_r0x00151ae4;\n      }\n    }\n    sVar9 = *(size_type *)(iVar10 + 0x6c);\n    iVar26 = *(int *)(iVar10 + 100);\n    iVar5 = *(int *)(iVar10 + 0x70);\n    iVar15 = *(int *)(iVar10 + 0x68);\n    uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;\njoined_r0x00151ae4:\n    if (uVar3 <= uVar12) {\n      __position.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;\n      __position.super__Bit_iterator_base._M_offset = param_4;\n      vector<bool,_std::allocator<bool>_>::_M_fill_insert\n                ((vector<bool,_std::allocator<bool>_> *)(iVar10 + 100),__position,sVar9,\n                 SUB41(iVar5,0));\n      return;\n    }\n    uVar12 = uVar12 + iVar15;\n    uVar3 = uVar12;\n    if ((int)uVar12 < 0) {\n      uVar3 = uVar12 + 0x1f;\n    }\n    iVar26 = iVar26 + ((int)uVar3 >> 5) * 4;\n    if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }\n    if ((int)uVar12 < 0) {\n      *(uint *)(iVar10 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar10 + 0x6c) = iVar26 + -4;\n      return;\n    }\n    *(uint *)(iVar10 + 0x70) = uVar12;\n    *(int *)(iVar10 + 0x6c) = iVar26;\n    return;\n  }" if (parenthesized_expression "(*piVar2 != 0)" ( (binary_expression "*piVar2 != 0" (pointer_expression "*piVar2" * identifier) != number_literal) )) (compound_statement "{\n    pcVar21 = *(code **)(puVar22 + 0x37054c);\n    iVar10 = *(int *)(puVar22 + 0x36fd98) + 0x4584;\n    (*pcVar21)(iVar10,0xc0);\n    uVar25 = 0;\n    uVar24 = 1;\n    iVar26 = __end;\n    puVar6 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar10 + 0x24) + 0x20);\n    uVar12 = *puVar6;\n    puVar16 = puVar6 + 1;\n    puVar18 = puVar16 + uVar12;\n    uVar3 = (int)puVar6 + (__end - (int)puVar18);\n    (**(code **)(pcVar21 + 0x370828))\n              (iVar10 + 0x34,0,*(undefined4 *)(iVar10 + 0x38),puVar18,uVar3,uVar11,iVar26,uVar24,\n               uVar25);\n    uVar8 = *(int *)(iVar10 + 0x2c) - *(int *)(iVar10 + 0x28) >> 4;\n    if (uVar8 < uVar12) {\n      vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n      _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                         *)(iVar10 + 0x28),uVar12 - uVar8);\n    }\n    else if ((uVar12 < uVar8) &&\n            (iVar26 = *(int *)(iVar10 + 0x28) + uVar12 * 0x10, *(int *)(iVar10 + 0x2c) != iVar26)) {\n      *(int *)(iVar10 + 0x2c) = iVar26;\n    }\n    uVar8 = 0;\n    if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar10 + 0x28) + uVar12 * 4;\n      piVar2 = *(int **)(iVar10 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar2[1] = uVar8;\n          puVar16 = puVar16 + 1;\n          *piVar2 = (int)uVar8 >> 0x1f;\n          piVar4 = piVar2 + 4;\n          piVar2[2] = 0;\n          piVar2[3] = uVar14;\n          iVar5 = (*pcVar23)((int)puVar18 + uVar8);\n          uVar8 = iVar5 + 1 + uVar8;\n          piVar2 = piVar4;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar4) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar10 + 0xd0) = *(int *)(iVar10 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar4);\nLAB_001519e0:\n      if (uVar3 < uVar8) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar10 + 0xc));\n        sVar9 = *(size_type *)(iVar10 + 0x6c);\n        iVar26 = *(int *)(iVar10 + 100);\n        iVar5 = *(int *)(iVar10 + 0x70);\n        iVar15 = *(int *)(iVar10 + 0x68);\n        uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;\n        goto joined_r0x00151ae4;\n      }\n    }\n    sVar9 = *(size_type *)(iVar10 + 0x6c);\n    iVar26 = *(int *)(iVar10 + 100);\n    iVar5 = *(int *)(iVar10 + 0x70);\n    iVar15 = *(int *)(iVar10 + 0x68);\n    uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;\njoined_r0x00151ae4:\n    if (uVar3 <= uVar12) {\n      __position.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;\n      __position.super__Bit_iterator_base._M_offset = param_4;\n      vector<bool,_std::allocator<bool>_>::_M_fill_insert\n                ((vector<bool,_std::allocator<bool>_> *)(iVar10 + 100),__position,sVar9,\n                 SUB41(iVar5,0));\n      return;\n    }\n    uVar12 = uVar12 + iVar15;\n    uVar3 = uVar12;\n    if ((int)uVar12 < 0) {\n      uVar3 = uVar12 + 0x1f;\n    }\n    iVar26 = iVar26 + ((int)uVar3 >> 5) * 4;\n    if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }\n    if ((int)uVar12 < 0) {\n      *(uint *)(iVar10 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar10 + 0x6c) = iVar26 + -4;\n      return;\n    }\n    *(uint *)(iVar10 + 0x70) = uVar12;\n    *(int *)(iVar10 + 0x6c) = iVar26;\n    return;\n  }" { (expression_statement "pcVar21 = *(code **)(puVar22 + 0x37054c);" (assignment_expression "pcVar21 = *(code **)(puVar22 + 0x37054c)" identifier = (pointer_expression "*(code **)(puVar22 + 0x37054c)" * (cast_expression "(code **)(puVar22 + 0x37054c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x37054c)" ( (binary_expression "puVar22 + 0x37054c" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(puVar22 + 0x36fd98) + 0x4584;" (assignment_expression "iVar10 = *(int *)(puVar22 + 0x36fd98) + 0x4584" identifier = (binary_expression "*(int *)(puVar22 + 0x36fd98) + 0x4584" (pointer_expression "*(int *)(puVar22 + 0x36fd98)" * (cast_expression "(int *)(puVar22 + 0x36fd98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x36fd98)" ( (binary_expression "puVar22 + 0x36fd98" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar21)(iVar10,0xc0);" (call_expression "(*pcVar21)(iVar10,0xc0)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(iVar10,0xc0)" ( identifier , number_literal ))) ;) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar24 = 1;" (assignment_expression "uVar24 = 1" identifier = number_literal) ;) (expression_statement "iVar26 = __end;" (assignment_expression "iVar26 = __end" identifier = identifier) ;) (expression_statement "puVar6 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar10 + 0x24) + 0x20);" (assignment_expression "puVar6 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar10 + 0x24) + 0x20)" identifier = (cast_expression "(uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar10 + 0x24) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar10 + 0x24) + 0x20)" (parenthesized_expression "(**(code **)(pcVar21 + 0x3702fc))" ( (pointer_expression "**(code **)(pcVar21 + 0x3702fc)" * (pointer_expression "*(code **)(pcVar21 + 0x3702fc)" * (cast_expression "(code **)(pcVar21 + 0x3702fc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x3702fc)" ( (binary_expression "pcVar21 + 0x3702fc" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar10 + 0x24) + 0x20)" ( (binary_expression "*(int *)(iVar10 + 0x24) + 0x20" (pointer_expression "*(int *)(iVar10 + 0x24)" * (cast_expression "(int *)(iVar10 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x24)" ( (binary_expression "iVar10 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar12 = *puVar6;" (assignment_expression "uVar12 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar16 = puVar6 + 1;" (assignment_expression "puVar16 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar16 + uVar12;" (assignment_expression "puVar18 = puVar16 + uVar12" identifier = (binary_expression "puVar16 + uVar12" identifier + identifier)) ;) (expression_statement "uVar3 = (int)puVar6 + (__end - (int)puVar18);" (assignment_expression "uVar3 = (int)puVar6 + (__end - (int)puVar18)" identifier = (binary_expression "(int)puVar6 + (__end - (int)puVar18)" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(__end - (int)puVar18)" ( (binary_expression "__end - (int)puVar18" identifier - (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "(**(code **)(pcVar21 + 0x370828))\n              (iVar10 + 0x34,0,*(undefined4 *)(iVar10 + 0x38),puVar18,uVar3,uVar11,iVar26,uVar24,\n               uVar25);" (call_expression "(**(code **)(pcVar21 + 0x370828))\n              (iVar10 + 0x34,0,*(undefined4 *)(iVar10 + 0x38),puVar18,uVar3,uVar11,iVar26,uVar24,\n               uVar25)" (parenthesized_expression "(**(code **)(pcVar21 + 0x370828))" ( (pointer_expression "**(code **)(pcVar21 + 0x370828)" * (pointer_expression "*(code **)(pcVar21 + 0x370828)" * (cast_expression "(code **)(pcVar21 + 0x370828)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x370828)" ( (binary_expression "pcVar21 + 0x370828" identifier + number_literal) ))))) )) (argument_list "(iVar10 + 0x34,0,*(undefined4 *)(iVar10 + 0x38),puVar18,uVar3,uVar11,iVar26,uVar24,\n               uVar25)" ( (binary_expression "iVar10 + 0x34" identifier + number_literal) , number_literal , (pointer_expression "*(undefined4 *)(iVar10 + 0x38)" * (cast_expression "(undefined4 *)(iVar10 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x38)" ( (binary_expression "iVar10 + 0x38" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar8 = *(int *)(iVar10 + 0x2c) - *(int *)(iVar10 + 0x28) >> 4;" (assignment_expression "uVar8 = *(int *)(iVar10 + 0x2c) - *(int *)(iVar10 + 0x28) >> 4" identifier = (binary_expression "*(int *)(iVar10 + 0x2c) - *(int *)(iVar10 + 0x28) >> 4" (binary_expression "*(int *)(iVar10 + 0x2c) - *(int *)(iVar10 + 0x28)" (pointer_expression "*(int *)(iVar10 + 0x2c)" * (cast_expression "(int *)(iVar10 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x2c)" ( (binary_expression "iVar10 + 0x2c" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar10 + 0x28)" * (cast_expression "(int *)(iVar10 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x28)" ( (binary_expression "iVar10 + 0x28" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar8 < uVar12) {\n      vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n      _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                         *)(iVar10 + 0x28),uVar12 - uVar8);\n    }\n    else if ((uVar12 < uVar8) &&\n            (iVar26 = *(int *)(iVar10 + 0x28) + uVar12 * 0x10, *(int *)(iVar10 + 0x2c) != iVar26)) {\n      *(int *)(iVar10 + 0x2c) = iVar26;\n    }" if (parenthesized_expression "(uVar8 < uVar12)" ( (binary_expression "uVar8 < uVar12" identifier < identifier) )) (compound_statement "{\n      vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n      _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                         *)(iVar10 + 0x28),uVar12 - uVar8);\n    }" { (ERROR "vector<gold::" (binary_expression "vector<gold" identifier < identifier) : :) (labeled_statement "Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n      _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                         *)(iVar10 + 0x28),uVar12 - uVar8);" statement_identifier (ERROR "::Armap_entry,_std::allocator<gold:" : : (comma_expression "Armap_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>_>::\n      _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                         *)(iVar10 + 0x28),uVar12 - uVar8);" statement_identifier (ERROR "::Armap_entry>_>::\n      _M_default_append((vector<gold:" : : (binary_expression "Armap_entry>_" identifier > identifier) > : : identifier ( ( (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                         *)(iVar10 + 0x28),uVar12 - uVar8);" statement_identifier (ERROR "::Armap_entry,_std::allocator<gold:" : : (comma_expression "Armap_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>_>\n                         *)(iVar10 + 0x28),uVar12 - uVar8);" statement_identifier : (ERROR ":" :) (expression_statement "Armap_entry>_>\n                         *)(iVar10 + 0x28),uVar12 - uVar8);" (comma_expression "Armap_entry>_>\n                         *)(iVar10 + 0x28),uVar12 - uVar8" (binary_expression "Armap_entry>_>\n                         *)(iVar10 + 0x28" (binary_expression "Armap_entry>_" identifier > identifier) > (binary_expression "*)(iVar10 + 0x28" (pointer_expression "*)(iVar10" * (ERROR ")(" ) () identifier) + number_literal)) (ERROR ")" )) , (binary_expression "uVar12 - uVar8" identifier - identifier)) (ERROR ")" )) ;))))) }) (else_clause "else if ((uVar12 < uVar8) &&\n            (iVar26 = *(int *)(iVar10 + 0x28) + uVar12 * 0x10, *(int *)(iVar10 + 0x2c) != iVar26)) {\n      *(int *)(iVar10 + 0x2c) = iVar26;\n    }" else (if_statement "if ((uVar12 < uVar8) &&\n            (iVar26 = *(int *)(iVar10 + 0x28) + uVar12 * 0x10, *(int *)(iVar10 + 0x2c) != iVar26)) {\n      *(int *)(iVar10 + 0x2c) = iVar26;\n    }" if (parenthesized_expression "((uVar12 < uVar8) &&\n            (iVar26 = *(int *)(iVar10 + 0x28) + uVar12 * 0x10, *(int *)(iVar10 + 0x2c) != iVar26))" ( (binary_expression "(uVar12 < uVar8) &&\n            (iVar26 = *(int *)(iVar10 + 0x28) + uVar12 * 0x10, *(int *)(iVar10 + 0x2c) != iVar26)" (parenthesized_expression "(uVar12 < uVar8)" ( (binary_expression "uVar12 < uVar8" identifier < identifier) )) && (parenthesized_expression "(iVar26 = *(int *)(iVar10 + 0x28) + uVar12 * 0x10, *(int *)(iVar10 + 0x2c) != iVar26)" ( (comma_expression "iVar26 = *(int *)(iVar10 + 0x28) + uVar12 * 0x10, *(int *)(iVar10 + 0x2c) != iVar26" (assignment_expression "iVar26 = *(int *)(iVar10 + 0x28) + uVar12 * 0x10" identifier = (binary_expression "*(int *)(iVar10 + 0x28) + uVar12 * 0x10" (pointer_expression "*(int *)(iVar10 + 0x28)" * (cast_expression "(int *)(iVar10 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x28)" ( (binary_expression "iVar10 + 0x28" identifier + number_literal) )))) + (binary_expression "uVar12 * 0x10" identifier * number_literal))) , (binary_expression "*(int *)(iVar10 + 0x2c) != iVar26" (pointer_expression "*(int *)(iVar10 + 0x2c)" * (cast_expression "(int *)(iVar10 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x2c)" ( (binary_expression "iVar10 + 0x2c" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n      *(int *)(iVar10 + 0x2c) = iVar26;\n    }" { (expression_statement "*(int *)(iVar10 + 0x2c) = iVar26;" (assignment_expression "*(int *)(iVar10 + 0x2c) = iVar26" (pointer_expression "*(int *)(iVar10 + 0x2c)" * (cast_expression "(int *)(iVar10 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x2c)" ( (binary_expression "iVar10 + 0x2c" identifier + number_literal) )))) = identifier) ;) })))) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar10 + 0x28) + uVar12 * 4;\n      piVar2 = *(int **)(iVar10 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar2[1] = uVar8;\n          puVar16 = puVar16 + 1;\n          *piVar2 = (int)uVar8 >> 0x1f;\n          piVar4 = piVar2 + 4;\n          piVar2[2] = 0;\n          piVar2[3] = uVar14;\n          iVar5 = (*pcVar23)((int)puVar18 + uVar8);\n          uVar8 = iVar5 + 1 + uVar8;\n          piVar2 = piVar4;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar4) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar10 + 0xd0) = *(int *)(iVar10 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar4);\nLAB_001519e0:\n      if (uVar3 < uVar8) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar10 + 0xc));\n        sVar9 = *(size_type *)(iVar10 + 0x6c);\n        iVar26 = *(int *)(iVar10 + 100);\n        iVar5 = *(int *)(iVar10 + 0x70);\n        iVar15 = *(int *)(iVar10 + 0x68);\n        uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;\n        goto joined_r0x00151ae4;\n      }\n    }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar10 + 0x28) + uVar12 * 4;\n      piVar2 = *(int **)(iVar10 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar2[1] = uVar8;\n          puVar16 = puVar16 + 1;\n          *piVar2 = (int)uVar8 >> 0x1f;\n          piVar4 = piVar2 + 4;\n          piVar2[2] = 0;\n          piVar2[3] = uVar14;\n          iVar5 = (*pcVar23)((int)puVar18 + uVar8);\n          uVar8 = iVar5 + 1 + uVar8;\n          piVar2 = piVar4;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar4) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar10 + 0xd0) = *(int *)(iVar10 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar4);\nLAB_001519e0:\n      if (uVar3 < uVar8) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar10 + 0xc));\n        sVar9 = *(size_type *)(iVar10 + 0x6c);\n        iVar26 = *(int *)(iVar10 + 100);\n        iVar5 = *(int *)(iVar10 + 0x70);\n        iVar15 = *(int *)(iVar10 + 0x68);\n        uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;\n        goto joined_r0x00151ae4;\n      }\n    }" { (expression_statement "iVar26 = -1;" (assignment_expression "iVar26 = -1" identifier = number_literal) ;) (expression_statement "piVar17 = *(int **)(iVar10 + 0x28) + uVar12 * 4;" (assignment_expression "piVar17 = *(int **)(iVar10 + 0x28) + uVar12 * 4" identifier = (binary_expression "*(int **)(iVar10 + 0x28) + uVar12 * 4" (pointer_expression "*(int **)(iVar10 + 0x28)" * (cast_expression "(int **)(iVar10 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x28)" ( (binary_expression "iVar10 + 0x28" identifier + number_literal) )))) + (binary_expression "uVar12 * 4" identifier * number_literal))) ;) (expression_statement "piVar2 = *(int **)(iVar10 + 0x28);" (assignment_expression "piVar2 = *(int **)(iVar10 + 0x28)" identifier = (pointer_expression "*(int **)(iVar10 + 0x28)" * (cast_expression "(int **)(iVar10 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 0x28)" ( (binary_expression "iVar10 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = 0xffffffff;" (assignment_expression "uVar20 = 0xffffffff" identifier = number_literal) ;) (do_statement "do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar2[1] = uVar8;\n          puVar16 = puVar16 + 1;\n          *piVar2 = (int)uVar8 >> 0x1f;\n          piVar4 = piVar2 + 4;\n          piVar2[2] = 0;\n          piVar2[3] = uVar14;\n          iVar5 = (*pcVar23)((int)puVar18 + uVar8);\n          uVar8 = iVar5 + 1 + uVar8;\n          piVar2 = piVar4;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar4) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar10 + 0xd0) = *(int *)(iVar10 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar4);" do (compound_statement "{\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar2[1] = uVar8;\n          puVar16 = puVar16 + 1;\n          *piVar2 = (int)uVar8 >> 0x1f;\n          piVar4 = piVar2 + 4;\n          piVar2[2] = 0;\n          piVar2[3] = uVar14;\n          iVar5 = (*pcVar23)((int)puVar18 + uVar8);\n          uVar8 = iVar5 + 1 + uVar8;\n          piVar2 = piVar4;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar4) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar10 + 0xd0) = *(int *)(iVar10 + 0xd0) + 1;\n        uVar20 = uVar14;\n      }" { (while_statement "while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar2[1] = uVar8;\n          puVar16 = puVar16 + 1;\n          *piVar2 = (int)uVar8 >> 0x1f;\n          piVar4 = piVar2 + 4;\n          piVar2[2] = 0;\n          piVar2[3] = uVar14;\n          iVar5 = (*pcVar23)((int)puVar18 + uVar8);\n          uVar8 = iVar5 + 1 + uVar8;\n          piVar2 = piVar4;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar4) goto LAB_001519e0;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar2[1] = uVar8;\n          puVar16 = puVar16 + 1;\n          *piVar2 = (int)uVar8 >> 0x1f;\n          piVar4 = piVar2 + 4;\n          piVar2[2] = 0;\n          piVar2[3] = uVar14;\n          iVar5 = (*pcVar23)((int)puVar18 + uVar8);\n          uVar8 = iVar5 + 1 + uVar8;\n          piVar2 = piVar4;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar4) goto LAB_001519e0;\n        }" { (expression_statement "uVar14 = *puVar16;" (assignment_expression "uVar14 = *puVar16" identifier = (pointer_expression "*puVar16" * identifier)) ;) (expression_statement "pcVar23 = *(code **)(pcVar21 + 0x374324);" (assignment_expression "pcVar23 = *(code **)(pcVar21 + 0x374324)" identifier = (pointer_expression "*(code **)(pcVar21 + 0x374324)" * (cast_expression "(code **)(pcVar21 + 0x374324)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x374324)" ( (binary_expression "pcVar21 + 0x374324" identifier + number_literal) ))))) ;) (expression_statement "piVar2[1] = uVar8;" (assignment_expression "piVar2[1] = uVar8" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "*piVar2 = (int)uVar8 >> 0x1f;" (assignment_expression "*piVar2 = (int)uVar8 >> 0x1f" (pointer_expression "*piVar2" * identifier) = (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "piVar4 = piVar2 + 4;" (assignment_expression "piVar4 = piVar2 + 4" identifier = (binary_expression "piVar2 + 4" identifier + number_literal)) ;) (expression_statement "piVar2[2] = 0;" (assignment_expression "piVar2[2] = 0" (subscript_expression "piVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar2[3] = uVar14;" (assignment_expression "piVar2[3] = uVar14" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar5 = (*pcVar23)((int)puVar18 + uVar8);" (assignment_expression "iVar5 = (*pcVar23)((int)puVar18 + uVar8)" identifier = (call_expression "(*pcVar23)((int)puVar18 + uVar8)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "((int)puVar18 + uVar8)" ( (binary_expression "(int)puVar18 + uVar8" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar8 = iVar5 + 1 + uVar8;" (assignment_expression "uVar8 = iVar5 + 1 + uVar8" identifier = (binary_expression "iVar5 + 1 + uVar8" (binary_expression "iVar5 + 1" identifier + number_literal) + identifier)) ;) (expression_statement "piVar2 = piVar4;" (assignment_expression "piVar2 = piVar4" identifier = identifier) ;) (if_statement "if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;" if (parenthesized_expression "((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20))" ( (binary_expression "(iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)" (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar26 = 0, uVar14 != uVar20)" ( (comma_expression "iVar26 = 0, uVar14 != uVar20" (assignment_expression "iVar26 = 0" identifier = number_literal) , (binary_expression "uVar14 != uVar20" identifier != identifier)) ))) )) (break_statement "break;" break ;)) (expression_statement "uVar20 = uVar14;" (assignment_expression "uVar20 = uVar14" identifier = identifier) ;) (if_statement "if (piVar17 == piVar4) goto LAB_001519e0;" if (parenthesized_expression "(piVar17 == piVar4)" ( (binary_expression "piVar17 == piVar4" identifier == identifier) )) (goto_statement "goto LAB_001519e0;" goto statement_identifier ;)) })) (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(iVar10 + 0xd0) = *(int *)(iVar10 + 0xd0) + 1;" (assignment_expression "*(int *)(iVar10 + 0xd0) = *(int *)(iVar10 + 0xd0) + 1" (pointer_expression "*(int *)(iVar10 + 0xd0)" * (cast_expression "(int *)(iVar10 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0xd0)" ( (binary_expression "iVar10 + 0xd0" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar10 + 0xd0) + 1" (pointer_expression "*(int *)(iVar10 + 0xd0)" * (cast_expression "(int *)(iVar10 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0xd0)" ( (binary_expression "iVar10 + 0xd0" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uVar20 = uVar14;" (assignment_expression "uVar20 = uVar14" identifier = identifier) ;) }) while (parenthesized_expression "(piVar17 != piVar4)" ( (binary_expression "piVar17 != piVar4" identifier != identifier) )) ;) (labeled_statement "LAB_001519e0:\n      if (uVar3 < uVar8) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar10 + 0xc));\n        sVar9 = *(size_type *)(iVar10 + 0x6c);\n        iVar26 = *(int *)(iVar10 + 100);\n        iVar5 = *(int *)(iVar10 + 0x70);\n        iVar15 = *(int *)(iVar10 + 0x68);\n        uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;\n        goto joined_r0x00151ae4;\n      }" statement_identifier : (if_statement "if (uVar3 < uVar8) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar10 + 0xc));\n        sVar9 = *(size_type *)(iVar10 + 0x6c);\n        iVar26 = *(int *)(iVar10 + 100);\n        iVar5 = *(int *)(iVar10 + 0x70);\n        iVar15 = *(int *)(iVar10 + 0x68);\n        uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;\n        goto joined_r0x00151ae4;\n      }" if (parenthesized_expression "(uVar3 < uVar8)" ( (binary_expression "uVar3 < uVar8" identifier < identifier) )) (compound_statement "{\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar10 + 0xc));\n        sVar9 = *(size_type *)(iVar10 + 0x6c);\n        iVar26 = *(int *)(iVar10 + 100);\n        iVar5 = *(int *)(iVar10 + 0x70);\n        iVar15 = *(int *)(iVar10 + 0x68);\n        uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;\n        goto joined_r0x00151ae4;\n      }" { (expression_statement "uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);" (assignment_expression "uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0)" identifier = (call_expression "(**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0)" (parenthesized_expression "(**(code **)(pcVar21 + 0x3743b8))" ( (pointer_expression "**(code **)(pcVar21 + 0x3743b8)" * (pointer_expression "*(code **)(pcVar21 + 0x3743b8)" * (cast_expression "(code **)(pcVar21 + 0x3743b8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x3743b8)" ( (binary_expression "pcVar21 + 0x3743b8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar21 + 0x3701d8) + -0x15d0)" ( (binary_expression "*(int *)(pcVar21 + 0x3701d8) + -0x15d0" (pointer_expression "*(int *)(pcVar21 + 0x3701d8)" * (cast_expression "(int *)(pcVar21 + 0x3701d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x3701d8)" ( (binary_expression "pcVar21 + 0x3701d8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar10 + 0xc));" (call_expression "(**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar10 + 0xc))" (parenthesized_expression "(**(code **)(pcVar21 + 0x3701b4))" ( (pointer_expression "**(code **)(pcVar21 + 0x3701b4)" * (pointer_expression "*(code **)(pcVar21 + 0x3701b4)" * (cast_expression "(code **)(pcVar21 + 0x3701b4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x3701b4)" ( (binary_expression "pcVar21 + 0x3701b4" identifier + number_literal) ))))) )) (argument_list "(uVar11,*(undefined4 *)(iVar10 + 0xc))" ( identifier , (pointer_expression "*(undefined4 *)(iVar10 + 0xc)" * (cast_expression "(undefined4 *)(iVar10 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0xc)" ( (binary_expression "iVar10 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "sVar9 = *(size_type *)(iVar10 + 0x6c);" (assignment_expression "sVar9 = *(size_type *)(iVar10 + 0x6c)" identifier = (pointer_expression "*(size_type *)(iVar10 + 0x6c)" * (cast_expression "(size_type *)(iVar10 + 0x6c)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x6c)" ( (binary_expression "iVar10 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar26 = *(int *)(iVar10 + 100);" (assignment_expression "iVar26 = *(int *)(iVar10 + 100)" identifier = (pointer_expression "*(int *)(iVar10 + 100)" * (cast_expression "(int *)(iVar10 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 100)" ( (binary_expression "iVar10 + 100" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(iVar10 + 0x70);" (assignment_expression "iVar5 = *(int *)(iVar10 + 0x70)" identifier = (pointer_expression "*(int *)(iVar10 + 0x70)" * (cast_expression "(int *)(iVar10 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x70)" ( (binary_expression "iVar10 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(iVar10 + 0x68);" (assignment_expression "iVar15 = *(int *)(iVar10 + 0x68)" identifier = (pointer_expression "*(int *)(iVar10 + 0x68)" * (cast_expression "(int *)(iVar10 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x68)" ( (binary_expression "iVar10 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;" (assignment_expression "uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15" identifier = (binary_expression "((sVar9 - iVar26) * 8 + iVar5) - iVar15" (parenthesized_expression "((sVar9 - iVar26) * 8 + iVar5)" ( (binary_expression "(sVar9 - iVar26) * 8 + iVar5" (binary_expression "(sVar9 - iVar26) * 8" (parenthesized_expression "(sVar9 - iVar26)" ( (binary_expression "sVar9 - iVar26" identifier - identifier) )) * number_literal) + identifier) )) - identifier)) ;) (goto_statement "goto joined_r0x00151ae4;" goto statement_identifier ;) }))) })) (expression_statement "sVar9 = *(size_type *)(iVar10 + 0x6c);" (assignment_expression "sVar9 = *(size_type *)(iVar10 + 0x6c)" identifier = (pointer_expression "*(size_type *)(iVar10 + 0x6c)" * (cast_expression "(size_type *)(iVar10 + 0x6c)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x6c)" ( (binary_expression "iVar10 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar26 = *(int *)(iVar10 + 100);" (assignment_expression "iVar26 = *(int *)(iVar10 + 100)" identifier = (pointer_expression "*(int *)(iVar10 + 100)" * (cast_expression "(int *)(iVar10 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 100)" ( (binary_expression "iVar10 + 100" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(iVar10 + 0x70);" (assignment_expression "iVar5 = *(int *)(iVar10 + 0x70)" identifier = (pointer_expression "*(int *)(iVar10 + 0x70)" * (cast_expression "(int *)(iVar10 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x70)" ( (binary_expression "iVar10 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(iVar10 + 0x68);" (assignment_expression "iVar15 = *(int *)(iVar10 + 0x68)" identifier = (pointer_expression "*(int *)(iVar10 + 0x68)" * (cast_expression "(int *)(iVar10 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x68)" ( (binary_expression "iVar10 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15;" (assignment_expression "uVar3 = ((sVar9 - iVar26) * 8 + iVar5) - iVar15" identifier = (binary_expression "((sVar9 - iVar26) * 8 + iVar5) - iVar15" (parenthesized_expression "((sVar9 - iVar26) * 8 + iVar5)" ( (binary_expression "(sVar9 - iVar26) * 8 + iVar5" (binary_expression "(sVar9 - iVar26) * 8" (parenthesized_expression "(sVar9 - iVar26)" ( (binary_expression "sVar9 - iVar26" identifier - identifier) )) * number_literal) + identifier) )) - identifier)) ;) (labeled_statement "joined_r0x00151ae4:\n    if (uVar3 <= uVar12) {\n      __position.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;\n      __position.super__Bit_iterator_base._M_offset = param_4;\n      vector<bool,_std::allocator<bool>_>::_M_fill_insert\n                ((vector<bool,_std::allocator<bool>_> *)(iVar10 + 100),__position,sVar9,\n                 SUB41(iVar5,0));\n      return;\n    }" statement_identifier : (if_statement "if (uVar3 <= uVar12) {\n      __position.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;\n      __position.super__Bit_iterator_base._M_offset = param_4;\n      vector<bool,_std::allocator<bool>_>::_M_fill_insert\n                ((vector<bool,_std::allocator<bool>_> *)(iVar10 + 100),__position,sVar9,\n                 SUB41(iVar5,0));\n      return;\n    }" if (parenthesized_expression "(uVar3 <= uVar12)" ( (binary_expression "uVar3 <= uVar12" identifier <= identifier) )) (compound_statement "{\n      __position.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;\n      __position.super__Bit_iterator_base._M_offset = param_4;\n      vector<bool,_std::allocator<bool>_>::_M_fill_insert\n                ((vector<bool,_std::allocator<bool>_> *)(iVar10 + 100),__position,sVar9,\n                 SUB41(iVar5,0));\n      return;\n    }" { (expression_statement "__position.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;" (assignment_expression "__position.super__Bit_iterator_base._M_p = (_Bit_type *)0x0" (field_expression "__position.super__Bit_iterator_base._M_p" (field_expression "__position.super__Bit_iterator_base" identifier . field_identifier) . field_identifier) = (cast_expression "(_Bit_type *)0x0" ( (type_descriptor "_Bit_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__position.super__Bit_iterator_base._M_offset = param_4;" (assignment_expression "__position.super__Bit_iterator_base._M_offset = param_4" (field_expression "__position.super__Bit_iterator_base._M_offset" (field_expression "__position.super__Bit_iterator_base" identifier . field_identifier) . field_identifier) = identifier) ;) (ERROR "vector<bool,_std::" (comma_expression "vector<bool,_std" (binary_expression "vector<bool" identifier < identifier) , identifier) : :) (expression_statement "allocator<bool>_>::_M_fill_insert\n                ((vector<bool,_std::allocator<bool>_> *)(iVar10 + 100),__position,sVar9,\n                 SUB41(iVar5,0));" (binary_expression "allocator<bool>_>::_M_fill_insert\n                ((vector<bool,_std::allocator<bool>_> *)(iVar10 + 100),__position,sVar9,\n                 SUB41(iVar5,0))" (binary_expression "allocator<bool>_" (binary_expression "allocator<bool" identifier < identifier) > identifier) > (ERROR "::" : :) (call_expression "_M_fill_insert\n                ((vector<bool,_std::allocator<bool>_> *)(iVar10 + 100),__position,sVar9,\n                 SUB41(iVar5,0))" identifier (argument_list "((vector<bool,_std::allocator<bool>_> *)(iVar10 + 100),__position,sVar9,\n                 SUB41(iVar5,0))" ( (call_expression "(vector<bool,_std::allocator<bool>_> *)(iVar10 + 100)" (parenthesized_expression "(vector<bool,_std::allocator<bool>_> *)" ( (ERROR "vector<bool,_std::" (comma_expression "vector<bool,_std" (binary_expression "vector<bool" identifier < identifier) , identifier) : :) (binary_expression "allocator<bool>_> *" (binary_expression "allocator<bool>_" (binary_expression "allocator<bool" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(iVar10 + 100)" ( (binary_expression "iVar10 + 100" identifier + number_literal) ))) , identifier , identifier , (call_expression "SUB41(iVar5,0)" identifier (argument_list "(iVar5,0)" ( identifier , number_literal ))) )))) ;) (return_statement "return;" return ;) }))) (expression_statement "uVar12 = uVar12 + iVar15;" (assignment_expression "uVar12 = uVar12 + iVar15" identifier = (binary_expression "uVar12 + iVar15" identifier + identifier)) ;) (expression_statement "uVar3 = uVar12;" (assignment_expression "uVar3 = uVar12" identifier = identifier) ;) (if_statement "if ((int)uVar12 < 0) {\n      uVar3 = uVar12 + 0x1f;\n    }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar3 = uVar12 + 0x1f;\n    }" { (expression_statement "uVar3 = uVar12 + 0x1f;" (assignment_expression "uVar3 = uVar12 + 0x1f" identifier = (binary_expression "uVar12 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "iVar26 = iVar26 + ((int)uVar3 >> 5) * 4;" (assignment_expression "iVar26 = iVar26 + ((int)uVar3 >> 5) * 4" identifier = (binary_expression "iVar26 + ((int)uVar3 >> 5) * 4" identifier + (binary_expression "((int)uVar3 >> 5) * 4" (parenthesized_expression "((int)uVar3 >> 5)" ( (binary_expression "(int)uVar3 >> 5" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * number_literal))) ;) (if_statement "if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }" { (expression_statement "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;" (assignment_expression "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" identifier = (binary_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" (parenthesized_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0)" ( (binary_expression "(uVar12 & 0x8000001f) - 1 | 0xffffffe0" (binary_expression "(uVar12 & 0x8000001f) - 1" (parenthesized_expression "(uVar12 & 0x8000001f)" ( (binary_expression "uVar12 & 0x8000001f" identifier & number_literal) )) - number_literal) | number_literal) )) + number_literal)) ;) }) (else_clause "else {\n      uVar12 = uVar12 & 0x8000001f;\n    }" else (compound_statement "{\n      uVar12 = uVar12 & 0x8000001f;\n    }" { (expression_statement "uVar12 = uVar12 & 0x8000001f;" (assignment_expression "uVar12 = uVar12 & 0x8000001f" identifier = (binary_expression "uVar12 & 0x8000001f" identifier & number_literal)) ;) }))) (if_statement "if ((int)uVar12 < 0) {\n      *(uint *)(iVar10 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar10 + 0x6c) = iVar26 + -4;\n      return;\n    }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      *(uint *)(iVar10 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar10 + 0x6c) = iVar26 + -4;\n      return;\n    }" { (expression_statement "*(uint *)(iVar10 + 0x70) = uVar12 + 0x20;" (assignment_expression "*(uint *)(iVar10 + 0x70) = uVar12 + 0x20" (pointer_expression "*(uint *)(iVar10 + 0x70)" * (cast_expression "(uint *)(iVar10 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x70)" ( (binary_expression "iVar10 + 0x70" identifier + number_literal) )))) = (binary_expression "uVar12 + 0x20" identifier + number_literal)) ;) (expression_statement "*(int *)(iVar10 + 0x6c) = iVar26 + -4;" (assignment_expression "*(int *)(iVar10 + 0x6c) = iVar26 + -4" (pointer_expression "*(int *)(iVar10 + 0x6c)" * (cast_expression "(int *)(iVar10 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x6c)" ( (binary_expression "iVar10 + 0x6c" identifier + number_literal) )))) = (binary_expression "iVar26 + -4" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "*(uint *)(iVar10 + 0x70) = uVar12;" (assignment_expression "*(uint *)(iVar10 + 0x70) = uVar12" (pointer_expression "*(uint *)(iVar10 + 0x70)" * (cast_expression "(uint *)(iVar10 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x70)" ( (binary_expression "iVar10 + 0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar10 + 0x6c) = iVar26;" (assignment_expression "*(int *)(iVar10 + 0x6c) = iVar26" (pointer_expression "*(int *)(iVar10 + 0x6c)" * (cast_expression "(int *)(iVar10 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x6c)" ( (binary_expression "iVar10 + 0x6c" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "piVar17 = piVar2 + 2 + uVar12 * 2;" (assignment_expression "piVar17 = piVar2 + 2 + uVar12 * 2" identifier = (binary_expression "piVar2 + 2 + uVar12 * 2" (binary_expression "piVar2 + 2" identifier + number_literal) + (binary_expression "uVar12 * 2" identifier * number_literal))) ;) (expression_statement "uVar3 = (int)piVar2 + (iVar26 - (int)piVar17);" (assignment_expression "uVar3 = (int)piVar2 + (iVar26 - (int)piVar17)" identifier = (binary_expression "(int)piVar2 + (iVar26 - (int)piVar17)" (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(iVar26 - (int)piVar17)" ( (binary_expression "iVar26 - (int)piVar17" identifier - (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "(**(code **)(puVar22 + 0x370bbc))\n            (puVar7 + 0x34,0,*(undefined4 *)(puVar7 + 0x38),piVar17,uVar3,param_4,iVar10,uVar24,\n             uVar25);" (call_expression "(**(code **)(puVar22 + 0x370bbc))\n            (puVar7 + 0x34,0,*(undefined4 *)(puVar7 + 0x38),piVar17,uVar3,param_4,iVar10,uVar24,\n             uVar25)" (parenthesized_expression "(**(code **)(puVar22 + 0x370bbc))" ( (pointer_expression "**(code **)(puVar22 + 0x370bbc)" * (pointer_expression "*(code **)(puVar22 + 0x370bbc)" * (cast_expression "(code **)(puVar22 + 0x370bbc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x370bbc)" ( (binary_expression "puVar22 + 0x370bbc" identifier + number_literal) ))))) )) (argument_list "(puVar7 + 0x34,0,*(undefined4 *)(puVar7 + 0x38),piVar17,uVar3,param_4,iVar10,uVar24,\n             uVar25)" ( (binary_expression "puVar7 + 0x34" identifier + number_literal) , number_literal , (pointer_expression "*(undefined4 *)(puVar7 + 0x38)" * (cast_expression "(undefined4 *)(puVar7 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x38)" ( (binary_expression "puVar7 + 0x38" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar8 = *(int *)(puVar7 + 0x2c) - *(int *)(puVar7 + 0x28) >> 4;" (assignment_expression "uVar8 = *(int *)(puVar7 + 0x2c) - *(int *)(puVar7 + 0x28) >> 4" identifier = (binary_expression "*(int *)(puVar7 + 0x2c) - *(int *)(puVar7 + 0x28) >> 4" (binary_expression "*(int *)(puVar7 + 0x2c) - *(int *)(puVar7 + 0x28)" (pointer_expression "*(int *)(puVar7 + 0x2c)" * (cast_expression "(int *)(puVar7 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x2c)" ( (binary_expression "puVar7 + 0x2c" identifier + number_literal) )))) - (pointer_expression "*(int *)(puVar7 + 0x28)" * (cast_expression "(int *)(puVar7 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x28)" ( (binary_expression "puVar7 + 0x28" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar8 < uVar12) {\n    vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n    _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                       *)(puVar7 + 0x28),uVar12 - uVar8);\n  }\n  else if ((uVar12 < uVar8) &&\n          (iVar26 = *(int *)(puVar7 + 0x28) + uVar12 * 0x10, *(int *)(puVar7 + 0x2c) != iVar26)) {\n    *(int *)(puVar7 + 0x2c) = iVar26;\n  }" if (parenthesized_expression "(uVar8 < uVar12)" ( (binary_expression "uVar8 < uVar12" identifier < identifier) )) (compound_statement "{\n    vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n    _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                       *)(puVar7 + 0x28),uVar12 - uVar8);\n  }" { (ERROR "vector<gold::" (binary_expression "vector<gold" identifier < identifier) : :) (labeled_statement "Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>::\n    _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                       *)(puVar7 + 0x28),uVar12 - uVar8);" statement_identifier (ERROR "::Armap_entry,_std::allocator<gold:" : : (comma_expression "Armap_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>_>::\n    _M_default_append((vector<gold::Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                       *)(puVar7 + 0x28),uVar12 - uVar8);" statement_identifier (ERROR "::Armap_entry>_>::\n    _M_default_append((vector<gold:" : : (binary_expression "Armap_entry>_" identifier > identifier) > : : identifier ( ( (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry,_std::allocator<gold::Archive::Armap_entry>_>\n                       *)(puVar7 + 0x28),uVar12 - uVar8);" statement_identifier (ERROR "::Armap_entry,_std::allocator<gold:" : : (comma_expression "Armap_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>_>\n                       *)(puVar7 + 0x28),uVar12 - uVar8);" statement_identifier : (ERROR ":" :) (expression_statement "Armap_entry>_>\n                       *)(puVar7 + 0x28),uVar12 - uVar8);" (comma_expression "Armap_entry>_>\n                       *)(puVar7 + 0x28),uVar12 - uVar8" (binary_expression "Armap_entry>_>\n                       *)(puVar7 + 0x28" (binary_expression "Armap_entry>_" identifier > identifier) > (binary_expression "*)(puVar7 + 0x28" (pointer_expression "*)(puVar7" * (ERROR ")(" ) () identifier) + number_literal)) (ERROR ")" )) , (binary_expression "uVar12 - uVar8" identifier - identifier)) (ERROR ")" )) ;))))) }) (else_clause "else if ((uVar12 < uVar8) &&\n          (iVar26 = *(int *)(puVar7 + 0x28) + uVar12 * 0x10, *(int *)(puVar7 + 0x2c) != iVar26)) {\n    *(int *)(puVar7 + 0x2c) = iVar26;\n  }" else (if_statement "if ((uVar12 < uVar8) &&\n          (iVar26 = *(int *)(puVar7 + 0x28) + uVar12 * 0x10, *(int *)(puVar7 + 0x2c) != iVar26)) {\n    *(int *)(puVar7 + 0x2c) = iVar26;\n  }" if (parenthesized_expression "((uVar12 < uVar8) &&\n          (iVar26 = *(int *)(puVar7 + 0x28) + uVar12 * 0x10, *(int *)(puVar7 + 0x2c) != iVar26))" ( (binary_expression "(uVar12 < uVar8) &&\n          (iVar26 = *(int *)(puVar7 + 0x28) + uVar12 * 0x10, *(int *)(puVar7 + 0x2c) != iVar26)" (parenthesized_expression "(uVar12 < uVar8)" ( (binary_expression "uVar12 < uVar8" identifier < identifier) )) && (parenthesized_expression "(iVar26 = *(int *)(puVar7 + 0x28) + uVar12 * 0x10, *(int *)(puVar7 + 0x2c) != iVar26)" ( (comma_expression "iVar26 = *(int *)(puVar7 + 0x28) + uVar12 * 0x10, *(int *)(puVar7 + 0x2c) != iVar26" (assignment_expression "iVar26 = *(int *)(puVar7 + 0x28) + uVar12 * 0x10" identifier = (binary_expression "*(int *)(puVar7 + 0x28) + uVar12 * 0x10" (pointer_expression "*(int *)(puVar7 + 0x28)" * (cast_expression "(int *)(puVar7 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x28)" ( (binary_expression "puVar7 + 0x28" identifier + number_literal) )))) + (binary_expression "uVar12 * 0x10" identifier * number_literal))) , (binary_expression "*(int *)(puVar7 + 0x2c) != iVar26" (pointer_expression "*(int *)(puVar7 + 0x2c)" * (cast_expression "(int *)(puVar7 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x2c)" ( (binary_expression "puVar7 + 0x2c" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n    *(int *)(puVar7 + 0x2c) = iVar26;\n  }" { (expression_statement "*(int *)(puVar7 + 0x2c) = iVar26;" (assignment_expression "*(int *)(puVar7 + 0x2c) = iVar26" (pointer_expression "*(int *)(puVar7 + 0x2c)" * (cast_expression "(int *)(puVar7 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x2c)" ( (binary_expression "puVar7 + 0x2c" identifier + number_literal) )))) = identifier) ;) })))) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 != 0) {\n    piVar13 = *(int **)(puVar7 + 0x28);\n    piVar4 = piVar13 + uVar12 * 4;\n    piVar2 = piVar2 + 2;\n    iVar26 = -1;\n    iVar10 = -1;\n    do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar8;\n        *piVar13 = (int)uVar8 >> 0x1f;\n        iVar15 = *piVar2;\n        iVar19 = piVar2[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar5 = (*pcVar21)((int)piVar17 + uVar8);\n        uVar8 = iVar5 + 1 + uVar8;\n        if ((iVar15 != iVar10) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar2 = piVar2 + 2;\n        iVar26 = iVar19;\n        iVar10 = iVar15;\n        if (piVar4 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar7 + 0xd0) = *(int *)(puVar7 + 0xd0) + 1;\n      piVar2 = piVar2 + 2;\n      iVar26 = iVar19;\n      iVar10 = iVar15;\n    } while (piVar4 != piVar13);\nLAB_00151668:\n    if (uVar3 < uVar8) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar7 + 0xc));\n      sVar9 = *(size_type *)(puVar7 + 0x6c);\n      iVar26 = *(int *)(puVar7 + 100);\n      iVar10 = *(int *)(puVar7 + 0x70);\n      iVar5 = *(int *)(puVar7 + 0x68);\n      uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5;\n      goto joined_r0x001516a0;\n    }\n  }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n    piVar13 = *(int **)(puVar7 + 0x28);\n    piVar4 = piVar13 + uVar12 * 4;\n    piVar2 = piVar2 + 2;\n    iVar26 = -1;\n    iVar10 = -1;\n    do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar8;\n        *piVar13 = (int)uVar8 >> 0x1f;\n        iVar15 = *piVar2;\n        iVar19 = piVar2[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar5 = (*pcVar21)((int)piVar17 + uVar8);\n        uVar8 = iVar5 + 1 + uVar8;\n        if ((iVar15 != iVar10) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar2 = piVar2 + 2;\n        iVar26 = iVar19;\n        iVar10 = iVar15;\n        if (piVar4 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar7 + 0xd0) = *(int *)(puVar7 + 0xd0) + 1;\n      piVar2 = piVar2 + 2;\n      iVar26 = iVar19;\n      iVar10 = iVar15;\n    } while (piVar4 != piVar13);\nLAB_00151668:\n    if (uVar3 < uVar8) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar7 + 0xc));\n      sVar9 = *(size_type *)(puVar7 + 0x6c);\n      iVar26 = *(int *)(puVar7 + 100);\n      iVar10 = *(int *)(puVar7 + 0x70);\n      iVar5 = *(int *)(puVar7 + 0x68);\n      uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5;\n      goto joined_r0x001516a0;\n    }\n  }" { (expression_statement "piVar13 = *(int **)(puVar7 + 0x28);" (assignment_expression "piVar13 = *(int **)(puVar7 + 0x28)" identifier = (pointer_expression "*(int **)(puVar7 + 0x28)" * (cast_expression "(int **)(puVar7 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0x28)" ( (binary_expression "puVar7 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "piVar4 = piVar13 + uVar12 * 4;" (assignment_expression "piVar4 = piVar13 + uVar12 * 4" identifier = (binary_expression "piVar13 + uVar12 * 4" identifier + (binary_expression "uVar12 * 4" identifier * number_literal))) ;) (expression_statement "piVar2 = piVar2 + 2;" (assignment_expression "piVar2 = piVar2 + 2" identifier = (binary_expression "piVar2 + 2" identifier + number_literal)) ;) (expression_statement "iVar26 = -1;" (assignment_expression "iVar26 = -1" identifier = number_literal) ;) (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar8;\n        *piVar13 = (int)uVar8 >> 0x1f;\n        iVar15 = *piVar2;\n        iVar19 = piVar2[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar5 = (*pcVar21)((int)piVar17 + uVar8);\n        uVar8 = iVar5 + 1 + uVar8;\n        if ((iVar15 != iVar10) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar2 = piVar2 + 2;\n        iVar26 = iVar19;\n        iVar10 = iVar15;\n        if (piVar4 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar7 + 0xd0) = *(int *)(puVar7 + 0xd0) + 1;\n      piVar2 = piVar2 + 2;\n      iVar26 = iVar19;\n      iVar10 = iVar15;\n    } while (piVar4 != piVar13);" do (compound_statement "{\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar8;\n        *piVar13 = (int)uVar8 >> 0x1f;\n        iVar15 = *piVar2;\n        iVar19 = piVar2[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar5 = (*pcVar21)((int)piVar17 + uVar8);\n        uVar8 = iVar5 + 1 + uVar8;\n        if ((iVar15 != iVar10) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar2 = piVar2 + 2;\n        iVar26 = iVar19;\n        iVar10 = iVar15;\n        if (piVar4 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar7 + 0xd0) = *(int *)(puVar7 + 0xd0) + 1;\n      piVar2 = piVar2 + 2;\n      iVar26 = iVar19;\n      iVar10 = iVar15;\n    }" { (while_statement "while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar8;\n        *piVar13 = (int)uVar8 >> 0x1f;\n        iVar15 = *piVar2;\n        iVar19 = piVar2[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar5 = (*pcVar21)((int)piVar17 + uVar8);\n        uVar8 = iVar5 + 1 + uVar8;\n        if ((iVar15 != iVar10) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar2 = piVar2 + 2;\n        iVar26 = iVar19;\n        iVar10 = iVar15;\n        if (piVar4 == piVar13) goto LAB_00151668;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar8;\n        *piVar13 = (int)uVar8 >> 0x1f;\n        iVar15 = *piVar2;\n        iVar19 = piVar2[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar5 = (*pcVar21)((int)piVar17 + uVar8);\n        uVar8 = iVar5 + 1 + uVar8;\n        if ((iVar15 != iVar10) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar2 = piVar2 + 2;\n        iVar26 = iVar19;\n        iVar10 = iVar15;\n        if (piVar4 == piVar13) goto LAB_00151668;\n      }" { (expression_statement "pcVar21 = *(code **)(puVar22 + 0x3746b8);" (assignment_expression "pcVar21 = *(code **)(puVar22 + 0x3746b8)" identifier = (pointer_expression "*(code **)(puVar22 + 0x3746b8)" * (cast_expression "(code **)(puVar22 + 0x3746b8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x3746b8)" ( (binary_expression "puVar22 + 0x3746b8" identifier + number_literal) ))))) ;) (expression_statement "piVar13[1] = uVar8;" (assignment_expression "piVar13[1] = uVar8" (subscript_expression "piVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar13 = (int)uVar8 >> 0x1f;" (assignment_expression "*piVar13 = (int)uVar8 >> 0x1f" (pointer_expression "*piVar13" * identifier) = (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iVar15 = *piVar2;" (assignment_expression "iVar15 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "iVar19 = piVar2[1];" (assignment_expression "iVar19 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar13[2] = iVar15;" (assignment_expression "piVar13[2] = iVar15" (subscript_expression "piVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13[3] = iVar19;" (assignment_expression "piVar13[3] = iVar19" (subscript_expression "piVar13[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar5 = (*pcVar21)((int)piVar17 + uVar8);" (assignment_expression "iVar5 = (*pcVar21)((int)piVar17 + uVar8)" identifier = (call_expression "(*pcVar21)((int)piVar17 + uVar8)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "((int)piVar17 + uVar8)" ( (binary_expression "(int)piVar17 + uVar8" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar8 = iVar5 + 1 + uVar8;" (assignment_expression "uVar8 = iVar5 + 1 + uVar8" identifier = (binary_expression "iVar5 + 1 + uVar8" (binary_expression "iVar5 + 1" identifier + number_literal) + identifier)) ;) (if_statement "if ((iVar15 != iVar10) || (iVar19 != iVar26)) break;" if (parenthesized_expression "((iVar15 != iVar10) || (iVar19 != iVar26))" ( (binary_expression "(iVar15 != iVar10) || (iVar19 != iVar26)" (parenthesized_expression "(iVar15 != iVar10)" ( (binary_expression "iVar15 != iVar10" identifier != identifier) )) || (parenthesized_expression "(iVar19 != iVar26)" ( (binary_expression "iVar19 != iVar26" identifier != identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "piVar13 = piVar13 + 4;" (assignment_expression "piVar13 = piVar13 + 4" identifier = (binary_expression "piVar13 + 4" identifier + number_literal)) ;) (expression_statement "piVar2 = piVar2 + 2;" (assignment_expression "piVar2 = piVar2 + 2" identifier = (binary_expression "piVar2 + 2" identifier + number_literal)) ;) (expression_statement "iVar26 = iVar19;" (assignment_expression "iVar26 = iVar19" identifier = identifier) ;) (expression_statement "iVar10 = iVar15;" (assignment_expression "iVar10 = iVar15" identifier = identifier) ;) (if_statement "if (piVar4 == piVar13) goto LAB_00151668;" if (parenthesized_expression "(piVar4 == piVar13)" ( (binary_expression "piVar4 == piVar13" identifier == identifier) )) (goto_statement "goto LAB_00151668;" goto statement_identifier ;)) })) (expression_statement "piVar13 = piVar13 + 4;" (assignment_expression "piVar13 = piVar13 + 4" identifier = (binary_expression "piVar13 + 4" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar7 + 0xd0) = *(int *)(puVar7 + 0xd0) + 1;" (assignment_expression "*(int *)(puVar7 + 0xd0) = *(int *)(puVar7 + 0xd0) + 1" (pointer_expression "*(int *)(puVar7 + 0xd0)" * (cast_expression "(int *)(puVar7 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0xd0)" ( (binary_expression "puVar7 + 0xd0" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar7 + 0xd0) + 1" (pointer_expression "*(int *)(puVar7 + 0xd0)" * (cast_expression "(int *)(puVar7 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0xd0)" ( (binary_expression "puVar7 + 0xd0" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar2 = piVar2 + 2;" (assignment_expression "piVar2 = piVar2 + 2" identifier = (binary_expression "piVar2 + 2" identifier + number_literal)) ;) (expression_statement "iVar26 = iVar19;" (assignment_expression "iVar26 = iVar19" identifier = identifier) ;) (expression_statement "iVar10 = iVar15;" (assignment_expression "iVar10 = iVar15" identifier = identifier) ;) }) while (parenthesized_expression "(piVar4 != piVar13)" ( (binary_expression "piVar4 != piVar13" identifier != identifier) )) ;) (labeled_statement "LAB_00151668:\n    if (uVar3 < uVar8) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar7 + 0xc));\n      sVar9 = *(size_type *)(puVar7 + 0x6c);\n      iVar26 = *(int *)(puVar7 + 100);\n      iVar10 = *(int *)(puVar7 + 0x70);\n      iVar5 = *(int *)(puVar7 + 0x68);\n      uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5;\n      goto joined_r0x001516a0;\n    }" statement_identifier : (if_statement "if (uVar3 < uVar8) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar7 + 0xc));\n      sVar9 = *(size_type *)(puVar7 + 0x6c);\n      iVar26 = *(int *)(puVar7 + 100);\n      iVar10 = *(int *)(puVar7 + 0x70);\n      iVar5 = *(int *)(puVar7 + 0x68);\n      uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5;\n      goto joined_r0x001516a0;\n    }" if (parenthesized_expression "(uVar3 < uVar8)" ( (binary_expression "uVar3 < uVar8" identifier < identifier) )) (compound_statement "{\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar7 + 0xc));\n      sVar9 = *(size_type *)(puVar7 + 0x6c);\n      iVar26 = *(int *)(puVar7 + 100);\n      iVar10 = *(int *)(puVar7 + 0x70);\n      iVar5 = *(int *)(puVar7 + 0x68);\n      uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5;\n      goto joined_r0x001516a0;\n    }" { (expression_statement "uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);" (assignment_expression "uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0)" identifier = (call_expression "(**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0)" (parenthesized_expression "(**(code **)(puVar22 + 0x37474c))" ( (pointer_expression "**(code **)(puVar22 + 0x37474c)" * (pointer_expression "*(code **)(puVar22 + 0x37474c)" * (cast_expression "(code **)(puVar22 + 0x37474c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x37474c)" ( (binary_expression "puVar22 + 0x37474c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar22 + 0x37056c) + -0x15d0)" ( (binary_expression "*(int *)(puVar22 + 0x37056c) + -0x15d0" (pointer_expression "*(int *)(puVar22 + 0x37056c)" * (cast_expression "(int *)(puVar22 + 0x37056c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x37056c)" ( (binary_expression "puVar22 + 0x37056c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar7 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar7 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x370548))" ( (pointer_expression "**(code **)(puVar22 + 0x370548)" * (pointer_expression "*(code **)(puVar22 + 0x370548)" * (cast_expression "(code **)(puVar22 + 0x370548)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x370548)" ( (binary_expression "puVar22 + 0x370548" identifier + number_literal) ))))) )) (argument_list "(uVar11,*(undefined4 *)(puVar7 + 0xc))" ( identifier , (pointer_expression "*(undefined4 *)(puVar7 + 0xc)" * (cast_expression "(undefined4 *)(puVar7 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0xc)" ( (binary_expression "puVar7 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "sVar9 = *(size_type *)(puVar7 + 0x6c);" (assignment_expression "sVar9 = *(size_type *)(puVar7 + 0x6c)" identifier = (pointer_expression "*(size_type *)(puVar7 + 0x6c)" * (cast_expression "(size_type *)(puVar7 + 0x6c)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x6c)" ( (binary_expression "puVar7 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar26 = *(int *)(puVar7 + 100);" (assignment_expression "iVar26 = *(int *)(puVar7 + 100)" identifier = (pointer_expression "*(int *)(puVar7 + 100)" * (cast_expression "(int *)(puVar7 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 100)" ( (binary_expression "puVar7 + 100" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(puVar7 + 0x70);" (assignment_expression "iVar10 = *(int *)(puVar7 + 0x70)" identifier = (pointer_expression "*(int *)(puVar7 + 0x70)" * (cast_expression "(int *)(puVar7 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x70)" ( (binary_expression "puVar7 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(puVar7 + 0x68);" (assignment_expression "iVar5 = *(int *)(puVar7 + 0x68)" identifier = (pointer_expression "*(int *)(puVar7 + 0x68)" * (cast_expression "(int *)(puVar7 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x68)" ( (binary_expression "puVar7 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5;" (assignment_expression "uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5" identifier = (binary_expression "((sVar9 - iVar26) * 8 + iVar10) - iVar5" (parenthesized_expression "((sVar9 - iVar26) * 8 + iVar10)" ( (binary_expression "(sVar9 - iVar26) * 8 + iVar10" (binary_expression "(sVar9 - iVar26) * 8" (parenthesized_expression "(sVar9 - iVar26)" ( (binary_expression "sVar9 - iVar26" identifier - identifier) )) * number_literal) + identifier) )) - identifier)) ;) (goto_statement "goto joined_r0x001516a0;" goto statement_identifier ;) }))) })) (expression_statement "sVar9 = *(size_type *)(puVar7 + 0x6c);" (assignment_expression "sVar9 = *(size_type *)(puVar7 + 0x6c)" identifier = (pointer_expression "*(size_type *)(puVar7 + 0x6c)" * (cast_expression "(size_type *)(puVar7 + 0x6c)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x6c)" ( (binary_expression "puVar7 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar26 = *(int *)(puVar7 + 100);" (assignment_expression "iVar26 = *(int *)(puVar7 + 100)" identifier = (pointer_expression "*(int *)(puVar7 + 100)" * (cast_expression "(int *)(puVar7 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 100)" ( (binary_expression "puVar7 + 100" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(puVar7 + 0x70);" (assignment_expression "iVar10 = *(int *)(puVar7 + 0x70)" identifier = (pointer_expression "*(int *)(puVar7 + 0x70)" * (cast_expression "(int *)(puVar7 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x70)" ( (binary_expression "puVar7 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(puVar7 + 0x68);" (assignment_expression "iVar5 = *(int *)(puVar7 + 0x68)" identifier = (pointer_expression "*(int *)(puVar7 + 0x68)" * (cast_expression "(int *)(puVar7 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x68)" ( (binary_expression "puVar7 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5;" (assignment_expression "uVar3 = ((sVar9 - iVar26) * 8 + iVar10) - iVar5" identifier = (binary_expression "((sVar9 - iVar26) * 8 + iVar10) - iVar5" (parenthesized_expression "((sVar9 - iVar26) * 8 + iVar10)" ( (binary_expression "(sVar9 - iVar26) * 8 + iVar10" (binary_expression "(sVar9 - iVar26) * 8" (parenthesized_expression "(sVar9 - iVar26)" ( (binary_expression "sVar9 - iVar26" identifier - identifier) )) * number_literal) + identifier) )) - identifier)) ;) (labeled_statement "joined_r0x001516a0:\n  if (uVar3 <= uVar12) {\n    __position_00.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;\n    __position_00.super__Bit_iterator_base._M_offset = in_stack_ffffffe4;\n    vector<bool,_std::allocator<bool>_>::_M_fill_insert\n              ((vector<bool,_std::allocator<bool>_> *)(puVar7 + 100),__position_00,sVar9,\n               SUB41(iVar10,0));\n    return;\n  }" statement_identifier : (if_statement "if (uVar3 <= uVar12) {\n    __position_00.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;\n    __position_00.super__Bit_iterator_base._M_offset = in_stack_ffffffe4;\n    vector<bool,_std::allocator<bool>_>::_M_fill_insert\n              ((vector<bool,_std::allocator<bool>_> *)(puVar7 + 100),__position_00,sVar9,\n               SUB41(iVar10,0));\n    return;\n  }" if (parenthesized_expression "(uVar3 <= uVar12)" ( (binary_expression "uVar3 <= uVar12" identifier <= identifier) )) (compound_statement "{\n    __position_00.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;\n    __position_00.super__Bit_iterator_base._M_offset = in_stack_ffffffe4;\n    vector<bool,_std::allocator<bool>_>::_M_fill_insert\n              ((vector<bool,_std::allocator<bool>_> *)(puVar7 + 100),__position_00,sVar9,\n               SUB41(iVar10,0));\n    return;\n  }" { (expression_statement "__position_00.super__Bit_iterator_base._M_p = (_Bit_type *)0x0;" (assignment_expression "__position_00.super__Bit_iterator_base._M_p = (_Bit_type *)0x0" (field_expression "__position_00.super__Bit_iterator_base._M_p" (field_expression "__position_00.super__Bit_iterator_base" identifier . field_identifier) . field_identifier) = (cast_expression "(_Bit_type *)0x0" ( (type_descriptor "_Bit_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__position_00.super__Bit_iterator_base._M_offset = in_stack_ffffffe4;" (assignment_expression "__position_00.super__Bit_iterator_base._M_offset = in_stack_ffffffe4" (field_expression "__position_00.super__Bit_iterator_base._M_offset" (field_expression "__position_00.super__Bit_iterator_base" identifier . field_identifier) . field_identifier) = identifier) ;) (ERROR "vector<bool,_std::" (comma_expression "vector<bool,_std" (binary_expression "vector<bool" identifier < identifier) , identifier) : :) (expression_statement "allocator<bool>_>::_M_fill_insert\n              ((vector<bool,_std::allocator<bool>_> *)(puVar7 + 100),__position_00,sVar9,\n               SUB41(iVar10,0));" (binary_expression "allocator<bool>_>::_M_fill_insert\n              ((vector<bool,_std::allocator<bool>_> *)(puVar7 + 100),__position_00,sVar9,\n               SUB41(iVar10,0))" (binary_expression "allocator<bool>_" (binary_expression "allocator<bool" identifier < identifier) > identifier) > (ERROR "::" : :) (call_expression "_M_fill_insert\n              ((vector<bool,_std::allocator<bool>_> *)(puVar7 + 100),__position_00,sVar9,\n               SUB41(iVar10,0))" identifier (argument_list "((vector<bool,_std::allocator<bool>_> *)(puVar7 + 100),__position_00,sVar9,\n               SUB41(iVar10,0))" ( (call_expression "(vector<bool,_std::allocator<bool>_> *)(puVar7 + 100)" (parenthesized_expression "(vector<bool,_std::allocator<bool>_> *)" ( (ERROR "vector<bool,_std::" (comma_expression "vector<bool,_std" (binary_expression "vector<bool" identifier < identifier) , identifier) : :) (binary_expression "allocator<bool>_> *" (binary_expression "allocator<bool>_" (binary_expression "allocator<bool" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(puVar7 + 100)" ( (binary_expression "puVar7 + 100" identifier + number_literal) ))) , identifier , identifier , (call_expression "SUB41(iVar10,0)" identifier (argument_list "(iVar10,0)" ( identifier , number_literal ))) )))) ;) (return_statement "return;" return ;) }))) (expression_statement "uVar12 = uVar12 + iVar5;" (assignment_expression "uVar12 = uVar12 + iVar5" identifier = (binary_expression "uVar12 + iVar5" identifier + identifier)) ;) (expression_statement "uVar3 = uVar12;" (assignment_expression "uVar3 = uVar12" identifier = identifier) ;) (if_statement "if ((int)uVar12 < 0) {\n    uVar3 = uVar12 + 0x1f;\n  }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar3 = uVar12 + 0x1f;\n  }" { (expression_statement "uVar3 = uVar12 + 0x1f;" (assignment_expression "uVar3 = uVar12 + 0x1f" identifier = (binary_expression "uVar12 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "iVar26 = iVar26 + ((int)uVar3 >> 5) * 4;" (assignment_expression "iVar26 = iVar26 + ((int)uVar3 >> 5) * 4" identifier = (binary_expression "iVar26 + ((int)uVar3 >> 5) * 4" identifier + (binary_expression "((int)uVar3 >> 5) * 4" (parenthesized_expression "((int)uVar3 >> 5)" ( (binary_expression "(int)uVar3 >> 5" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * number_literal))) ;) (if_statement "if ((int)uVar12 < 0) {\n    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n  }\n  else {\n    uVar12 = uVar12 & 0x8000001f;\n  }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n  }" { (expression_statement "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;" (assignment_expression "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" identifier = (binary_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" (parenthesized_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0)" ( (binary_expression "(uVar12 & 0x8000001f) - 1 | 0xffffffe0" (binary_expression "(uVar12 & 0x8000001f) - 1" (parenthesized_expression "(uVar12 & 0x8000001f)" ( (binary_expression "uVar12 & 0x8000001f" identifier & number_literal) )) - number_literal) | number_literal) )) + number_literal)) ;) }) (else_clause "else {\n    uVar12 = uVar12 & 0x8000001f;\n  }" else (compound_statement "{\n    uVar12 = uVar12 & 0x8000001f;\n  }" { (expression_statement "uVar12 = uVar12 & 0x8000001f;" (assignment_expression "uVar12 = uVar12 & 0x8000001f" identifier = (binary_expression "uVar12 & 0x8000001f" identifier & number_literal)) ;) }))) (if_statement "if ((int)uVar12 < 0) {\n    *(uint *)(puVar7 + 0x70) = uVar12 + 0x20;\n    *(int *)(puVar7 + 0x6c) = iVar26 + -4;\n    return;\n  }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    *(uint *)(puVar7 + 0x70) = uVar12 + 0x20;\n    *(int *)(puVar7 + 0x6c) = iVar26 + -4;\n    return;\n  }" { (expression_statement "*(uint *)(puVar7 + 0x70) = uVar12 + 0x20;" (assignment_expression "*(uint *)(puVar7 + 0x70) = uVar12 + 0x20" (pointer_expression "*(uint *)(puVar7 + 0x70)" * (cast_expression "(uint *)(puVar7 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x70)" ( (binary_expression "puVar7 + 0x70" identifier + number_literal) )))) = (binary_expression "uVar12 + 0x20" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar7 + 0x6c) = iVar26 + -4;" (assignment_expression "*(int *)(puVar7 + 0x6c) = iVar26 + -4" (pointer_expression "*(int *)(puVar7 + 0x6c)" * (cast_expression "(int *)(puVar7 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x6c)" ( (binary_expression "puVar7 + 0x6c" identifier + number_literal) )))) = (binary_expression "iVar26 + -4" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "*(uint *)(puVar7 + 0x70) = uVar12;" (assignment_expression "*(uint *)(puVar7 + 0x70) = uVar12" (pointer_expression "*(uint *)(puVar7 + 0x70)" * (cast_expression "(uint *)(puVar7 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x70)" ( (binary_expression "puVar7 + 0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar7 + 0x6c) = iVar26;" (assignment_expression "*(int *)(puVar7 + 0x6c) = iVar26" (pointer_expression "*(int *)(puVar7 + 0x6c)" * (cast_expression "(int *)(puVar7 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x6c)" ( (binary_expression "puVar7 + 0x6c" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void __thiscall\nstd::string::_M_construct<char*>(string *this,undefined1 *param_1,int param_2,undefined4 param_4)\n\n{\n  undefined1 *puVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  uint *puVar7;\n  int iVar8;\n  undefined *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  int *piVar13;\n  uint uVar14;\n  int iVar15;\n  uint *puVar16;\n  int *piVar17;\n  uint *puVar18;\n  int iVar19;\n  uint uVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined4 uVar24;\n  undefined4 uVar25;\n  int iVar26;\n  uint local_18 [2];\n  \n  iVar26 = 0x4c9240;\n  if (param_1 != (undefined1 *)0x0) {\n    uVar12 = param_2 - (int)param_1;\n    local_18[0] = uVar12;\n    if (0xf < uVar12) {\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }\n    if (uVar12 == 1) {\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }\n    else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }\n    *(uint *)(this + 4) = uVar12;\n    *puVar1 = 0;\n    return;\n  }\n  if (param_2 == 0) {\n    *(undefined4 *)(this + 4) = 0;\n    **(undefined1 **)this = 0;\n    return;\n  }\n  puVar9 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00;\n  puVar22 = PTR___throw_logic_error_004c12d8;\n  (*(code *)PTR___throw_logic_error_004c12d8)();\n  uVar11 = 0;\n  uVar25 = 0;\n  uVar24 = 1;\n  iVar2 = iVar26;\n  piVar3 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20);\n  uVar12 = piVar3[1];\n  if (*piVar3 != 0) {\n    pcVar21 = *(code **)(puVar22 + 0x37054c);\n    iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;\n    (*pcVar21)(iVar2,0xc0);\n    uVar25 = 0;\n    uVar24 = 1;\n    iVar26 = param_2;\n    puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);\n    uVar12 = *puVar7;\n    puVar16 = puVar7 + 1;\n    puVar18 = puVar16 + uVar12;\n    uVar4 = (int)puVar7 + (param_2 - (int)puVar18);\n    (**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25);\n    uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;\n    if (uVar10 < uVar12) {\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }\n    else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }\n    uVar10 = 0;\n    if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }\n    iVar26 = *(int *)(iVar2 + 0x6c);\n    iVar6 = *(int *)(iVar2 + 100);\n    iVar15 = *(int *)(iVar2 + 0x70);\n    iVar19 = *(int *)(iVar2 + 0x68);\n    iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n    uVar4 = iVar8 - iVar19;\njoined_r0x00151ae4:\n    if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }\n    uVar12 = uVar12 + iVar19;\n    uVar4 = uVar12;\n    if ((int)uVar12 < 0) {\n      uVar4 = uVar12 + 0x1f;\n    }\n    iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;\n    if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }\n    if ((int)uVar12 < 0) {\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }\n    *(uint *)(iVar2 + 0x70) = uVar12;\n    *(int *)(iVar2 + 0x6c) = iVar6;\n    return;\n  }\n  piVar17 = piVar3 + 2 + uVar12 * 2;\n  uVar4 = (int)piVar3 + (iVar26 - (int)piVar17);\n  (**(code **)(puVar22 + 0x370bbc))\n            (puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,\n             uVar25);\n  uVar10 = *(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4;\n  if (uVar10 < uVar12) {\n    vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);\n  }\n  else if ((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }\n  uVar10 = 0;\n  if (uVar12 != 0) {\n    piVar13 = *(int **)(puVar9 + 0x28);\n    piVar5 = piVar13 + uVar12 * 4;\n    piVar3 = piVar3 + 2;\n    iVar26 = -1;\n    iVar2 = -1;\n    do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    } while (piVar5 != piVar13);\nLAB_00151668:\n    if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }\n  }\n  iVar26 = *(int *)(puVar9 + 0x6c);\n  iVar2 = *(int *)(puVar9 + 100);\n  iVar6 = *(int *)(puVar9 + 0x70);\n  iVar15 = *(int *)(puVar9 + 0x68);\n  iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n  uVar4 = iVar19 - iVar15;\njoined_r0x001516a0:\n  if (uVar4 <= uVar12) {\n    vector<bool,std::allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);\n    return;\n  }\n  uVar12 = uVar12 + iVar15;\n  uVar4 = uVar12;\n  if ((int)uVar12 < 0) {\n    uVar4 = uVar12 + 0x1f;\n  }\n  iVar2 = iVar2 + ((int)uVar4 >> 5) * 4;\n  if ((int)uVar12 < 0) {\n    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n  }\n  else {\n    uVar12 = uVar12 & 0x8000001f;\n  }\n  if ((int)uVar12 < 0) {\n    *(uint *)(puVar9 + 0x70) = uVar12 + 0x20;\n    *(int *)(puVar9 + 0x6c) = iVar2 + -4;\n    return;\n  }\n  *(uint *)(puVar9 + 0x70) = uVar12;\n  *(int *)(puVar9 + 0x6c) = iVar2;\n  return;\n}\n\n" (declaration "void __thiscall\nstd::string::_M_construct<char*>(string *this,undefined1 *param_1,int param_2,undefined4 param_4)\n\n{\n  undefined1 *puVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::string::_M_construct<char" identifier : : identifier : : identifier < primitive_type) (pointer_declarator "*>(string *this" * (ERROR ">(string" > ( identifier) (pointer_declarator "*this" * identifier)) , (ERROR "undefined1" identifier) (pointer_declarator "*param_1" * identifier) , (ERROR "int" identifier) identifier , (ERROR "undefined4 param_4)\n\n{\n  undefined1" identifier identifier ) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "code *pcVar23;" type_identifier (pointer_declarator "*pcVar23" * identifier) ;) (declaration "undefined4 uVar24;" type_identifier identifier ;) (declaration "undefined4 uVar25;" type_identifier identifier ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "uint local_18 [2];" type_identifier (array_declarator "local_18 [2]" identifier [ number_literal ]) ;) (expression_statement "iVar26 = 0x4c9240;" (assignment_expression "iVar26 = 0x4c9240" identifier = number_literal) ;) (if_statement "if (param_1 != (undefined1 *)0x0) {\n    uVar12 = param_2 - (int)param_1;\n    local_18[0] = uVar12;\n    if (0xf < uVar12) {\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }\n    if (uVar12 == 1) {\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }\n    else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }\n    *(uint *)(this + 4) = uVar12;\n    *puVar1 = 0;\n    return;\n  }" if (parenthesized_expression "(param_1 != (undefined1 *)0x0)" ( (binary_expression "param_1 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar12 = param_2 - (int)param_1;\n    local_18[0] = uVar12;\n    if (0xf < uVar12) {\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }\n    if (uVar12 == 1) {\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }\n    else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }\n    *(uint *)(this + 4) = uVar12;\n    *puVar1 = 0;\n    return;\n  }" { (expression_statement "uVar12 = param_2 - (int)param_1;" (assignment_expression "uVar12 = param_2 - (int)param_1" identifier = (binary_expression "param_2 - (int)param_1" identifier - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_18[0] = uVar12;" (assignment_expression "local_18[0] = uVar12" (subscript_expression "local_18[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (0xf < uVar12) {\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }" if (parenthesized_expression "(0xf < uVar12)" ( (binary_expression "0xf < uVar12" number_literal < identifier) )) (compound_statement "{\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }" { (expression_statement "iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);" (assignment_expression "iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0)" identifier = (call_expression "(*(code *)PTR__M_create_004c141c)(this,local_18,0)" (parenthesized_expression "(*(code *)PTR__M_create_004c141c)" ( (pointer_expression "*(code *)PTR__M_create_004c141c" * (cast_expression "(code *)PTR__M_create_004c141c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(this,local_18,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(int *)this = iVar2;" (assignment_expression "*(int *)this = iVar2" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(uint *)(this + 8) = local_18[0];" (assignment_expression "*(uint *)(this + 8) = local_18[0]" (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (subscript_expression "local_18[0]" identifier [ number_literal ])) ;) (expression_statement "pcVar21 = *(code **)(iVar26 + -0x3698);" (assignment_expression "pcVar21 = *(code **)(iVar26 + -0x3698)" identifier = (pointer_expression "*(code **)(iVar26 + -0x3698)" * (cast_expression "(code **)(iVar26 + -0x3698)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar26 + -0x3698)" ( (binary_expression "iVar26 + -0x3698" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);" statement_identifier : (expression_statement "(*pcVar21)(iVar2,param_1,uVar12);" (call_expression "(*pcVar21)(iVar2,param_1,uVar12)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(iVar2,param_1,uVar12)" ( identifier , identifier , identifier ))) ;)) (expression_statement "*(uint *)(this + 4) = local_18[0];" (assignment_expression "*(uint *)(this + 4) = local_18[0]" (pointer_expression "*(uint *)(this + 4)" * (cast_expression "(uint *)(this + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (subscript_expression "local_18[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(*(int *)this + local_18[0]) = 0;" (assignment_expression "*(undefined1 *)(*(int *)this + local_18[0]) = 0" (pointer_expression "*(undefined1 *)(*(int *)this + local_18[0])" * (cast_expression "(undefined1 *)(*(int *)this + local_18[0])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)this + local_18[0])" ( (binary_expression "*(int *)this + local_18[0]" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (subscript_expression "local_18[0]" identifier [ number_literal ])) )))) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar12 == 1) {\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }\n    else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }" if (parenthesized_expression "(uVar12 == 1)" ( (binary_expression "uVar12 == 1" identifier == number_literal) )) (compound_statement "{\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }" { (expression_statement "**(undefined1 **)this = *param_1;" (assignment_expression "**(undefined1 **)this = *param_1" (pointer_expression "**(undefined1 **)this" * (pointer_expression "*(undefined1 **)this" * (cast_expression "(undefined1 **)this" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar1 = (undefined1 *)(*(int *)this + 1);" (assignment_expression "puVar1 = (undefined1 *)(*(int *)this + 1)" identifier = (cast_expression "(undefined1 *)(*(int *)this + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)this + 1)" ( (binary_expression "*(int *)this + 1" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) ;) }) (else_clause "else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }" else (compound_statement "{\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }" { (expression_statement "puVar1 = *(undefined1 **)this + uVar12;" (assignment_expression "puVar1 = *(undefined1 **)this + uVar12" identifier = (binary_expression "*(undefined1 **)this + uVar12" (pointer_expression "*(undefined1 **)this" * (cast_expression "(undefined1 **)this" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) + identifier)) ;) (if_statement "if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }" { (expression_statement "iVar2 = (int)puVar1 - uVar12;" (assignment_expression "iVar2 = (int)puVar1 - uVar12" identifier = (binary_expression "(int)puVar1 - uVar12" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "pcVar21 = (code *)PTR_memcpy_004c5ba8;" (assignment_expression "pcVar21 = (code *)PTR_memcpy_004c5ba8" identifier = (cast_expression "(code *)PTR_memcpy_004c5ba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (goto_statement "goto LAB_00151454;" goto statement_identifier ;) })) }))) (expression_statement "*(uint *)(this + 4) = uVar12;" (assignment_expression "*(uint *)(this + 4) = uVar12" (pointer_expression "*(uint *)(this + 4)" * (cast_expression "(uint *)(this + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (param_2 == 0) {\n    *(undefined4 *)(this + 4) = 0;\n    **(undefined1 **)this = 0;\n    return;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined4 *)(this + 4) = 0;\n    **(undefined1 **)this = 0;\n    return;\n  }" { (expression_statement "*(undefined4 *)(this + 4) = 0;" (assignment_expression "*(undefined4 *)(this + 4) = 0" (pointer_expression "*(undefined4 *)(this + 4)" * (cast_expression "(undefined4 *)(this + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(undefined1 **)this = 0;" (assignment_expression "**(undefined1 **)this = 0" (pointer_expression "**(undefined1 **)this" * (pointer_expression "*(undefined1 **)this" * (cast_expression "(undefined1 **)this" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "puVar9 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00;" (assignment_expression "puVar9 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00" identifier = (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00" identifier + number_literal)) ;) (expression_statement "puVar22 = PTR___throw_logic_error_004c12d8;" (assignment_expression "puVar22 = PTR___throw_logic_error_004c12d8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___throw_logic_error_004c12d8)();" (call_expression "(*(code *)PTR___throw_logic_error_004c12d8)()" (parenthesized_expression "(*(code *)PTR___throw_logic_error_004c12d8)" ( (pointer_expression "*(code *)PTR___throw_logic_error_004c12d8" * (cast_expression "(code *)PTR___throw_logic_error_004c12d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar24 = 1;" (assignment_expression "uVar24 = 1" identifier = number_literal) ;) (expression_statement "iVar2 = iVar26;" (assignment_expression "iVar2 = iVar26" identifier = identifier) ;) (expression_statement "piVar3 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20);" (assignment_expression "piVar3 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20)" identifier = (cast_expression "(int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20)" (parenthesized_expression "(**(code **)(puVar22 + 0x370690))" ( (pointer_expression "**(code **)(puVar22 + 0x370690)" * (pointer_expression "*(code **)(puVar22 + 0x370690)" * (cast_expression "(code **)(puVar22 + 0x370690)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x370690)" ( (binary_expression "puVar22 + 0x370690" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar9 + 0x24) + 0x20)" ( (binary_expression "*(int *)(puVar9 + 0x24) + 0x20" (pointer_expression "*(int *)(puVar9 + 0x24)" * (cast_expression "(int *)(puVar9 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x24)" ( (binary_expression "puVar9 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar12 = piVar3[1];" (assignment_expression "uVar12 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;) (if_statement "if (*piVar3 != 0) {\n    pcVar21 = *(code **)(puVar22 + 0x37054c);\n    iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;\n    (*pcVar21)(iVar2,0xc0);\n    uVar25 = 0;\n    uVar24 = 1;\n    iVar26 = param_2;\n    puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);\n    uVar12 = *puVar7;\n    puVar16 = puVar7 + 1;\n    puVar18 = puVar16 + uVar12;\n    uVar4 = (int)puVar7 + (param_2 - (int)puVar18);\n    (**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25);\n    uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;\n    if (uVar10 < uVar12) {\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }\n    else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }\n    uVar10 = 0;\n    if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }\n    iVar26 = *(int *)(iVar2 + 0x6c);\n    iVar6 = *(int *)(iVar2 + 100);\n    iVar15 = *(int *)(iVar2 + 0x70);\n    iVar19 = *(int *)(iVar2 + 0x68);\n    iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n    uVar4 = iVar8 - iVar19;\njoined_r0x00151ae4:\n    if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }\n    uVar12 = uVar12 + iVar19;\n    uVar4 = uVar12;\n    if ((int)uVar12 < 0) {\n      uVar4 = uVar12 + 0x1f;\n    }\n    iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;\n    if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }\n    if ((int)uVar12 < 0) {\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }\n    *(uint *)(iVar2 + 0x70) = uVar12;\n    *(int *)(iVar2 + 0x6c) = iVar6;\n    return;\n  }" if (parenthesized_expression "(*piVar3 != 0)" ( (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" * identifier) != number_literal) )) (compound_statement "{\n    pcVar21 = *(code **)(puVar22 + 0x37054c);\n    iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;\n    (*pcVar21)(iVar2,0xc0);\n    uVar25 = 0;\n    uVar24 = 1;\n    iVar26 = param_2;\n    puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);\n    uVar12 = *puVar7;\n    puVar16 = puVar7 + 1;\n    puVar18 = puVar16 + uVar12;\n    uVar4 = (int)puVar7 + (param_2 - (int)puVar18);\n    (**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25);\n    uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;\n    if (uVar10 < uVar12) {\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }\n    else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }\n    uVar10 = 0;\n    if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }\n    iVar26 = *(int *)(iVar2 + 0x6c);\n    iVar6 = *(int *)(iVar2 + 100);\n    iVar15 = *(int *)(iVar2 + 0x70);\n    iVar19 = *(int *)(iVar2 + 0x68);\n    iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n    uVar4 = iVar8 - iVar19;\njoined_r0x00151ae4:\n    if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }\n    uVar12 = uVar12 + iVar19;\n    uVar4 = uVar12;\n    if ((int)uVar12 < 0) {\n      uVar4 = uVar12 + 0x1f;\n    }\n    iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;\n    if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }\n    if ((int)uVar12 < 0) {\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }\n    *(uint *)(iVar2 + 0x70) = uVar12;\n    *(int *)(iVar2 + 0x6c) = iVar6;\n    return;\n  }" { (expression_statement "pcVar21 = *(code **)(puVar22 + 0x37054c);" (assignment_expression "pcVar21 = *(code **)(puVar22 + 0x37054c)" identifier = (pointer_expression "*(code **)(puVar22 + 0x37054c)" * (cast_expression "(code **)(puVar22 + 0x37054c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x37054c)" ( (binary_expression "puVar22 + 0x37054c" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;" (assignment_expression "iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584" identifier = (binary_expression "*(int *)(puVar22 + 0x36fd98) + 0x4584" (pointer_expression "*(int *)(puVar22 + 0x36fd98)" * (cast_expression "(int *)(puVar22 + 0x36fd98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x36fd98)" ( (binary_expression "puVar22 + 0x36fd98" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar21)(iVar2,0xc0);" (call_expression "(*pcVar21)(iVar2,0xc0)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(iVar2,0xc0)" ( identifier , number_literal ))) ;) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar24 = 1;" (assignment_expression "uVar24 = 1" identifier = number_literal) ;) (expression_statement "iVar26 = param_2;" (assignment_expression "iVar26 = param_2" identifier = identifier) ;) (expression_statement "puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);" (assignment_expression "puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20)" identifier = (cast_expression "(uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20)" (parenthesized_expression "(**(code **)(pcVar21 + 0x3702fc))" ( (pointer_expression "**(code **)(pcVar21 + 0x3702fc)" * (pointer_expression "*(code **)(pcVar21 + 0x3702fc)" * (cast_expression "(code **)(pcVar21 + 0x3702fc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x3702fc)" ( (binary_expression "pcVar21 + 0x3702fc" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar2 + 0x24) + 0x20)" ( (binary_expression "*(int *)(iVar2 + 0x24) + 0x20" (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar12 = *puVar7;" (assignment_expression "uVar12 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar16 = puVar7 + 1;" (assignment_expression "puVar16 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar16 + uVar12;" (assignment_expression "puVar18 = puVar16 + uVar12" identifier = (binary_expression "puVar16 + uVar12" identifier + identifier)) ;) (expression_statement "uVar4 = (int)puVar7 + (param_2 - (int)puVar18);" (assignment_expression "uVar4 = (int)puVar7 + (param_2 - (int)puVar18)" identifier = (binary_expression "(int)puVar7 + (param_2 - (int)puVar18)" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(param_2 - (int)puVar18)" ( (binary_expression "param_2 - (int)puVar18" identifier - (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "(**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25);" (call_expression "(**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25)" (parenthesized_expression "(**(code **)(pcVar21 + 0x370828))" ( (pointer_expression "**(code **)(pcVar21 + 0x370828)" * (pointer_expression "*(code **)(pcVar21 + 0x370828)" * (cast_expression "(code **)(pcVar21 + 0x370828)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x370828)" ( (binary_expression "pcVar21 + 0x370828" identifier + number_literal) ))))) )) (argument_list "(iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25)" ( (binary_expression "iVar2 + 0x34" identifier + number_literal) , number_literal , (pointer_expression "*(undefined4 *)(iVar2 + 0x38)" * (cast_expression "(undefined4 *)(iVar2 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x38)" ( (binary_expression "iVar2 + 0x38" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;" (assignment_expression "uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4" identifier = (binary_expression "*(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4" (binary_expression "*(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28)" (pointer_expression "*(int *)(iVar2 + 0x2c)" * (cast_expression "(int *)(iVar2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar2 + 0x28)" * (cast_expression "(int *)(iVar2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar10 < uVar12) {\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }\n    else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }" if (parenthesized_expression "(uVar10 < uVar12)" ( (binary_expression "uVar10 < uVar12" identifier < identifier) )) (compound_statement "{\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }" { (ERROR "vector<gold::" (binary_expression "vector<gold" identifier < identifier) : :) (labeled_statement "Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" statement_identifier (ERROR "::Armap_entry,std::allocator<gold:" : : (comma_expression "Armap_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" statement_identifier (ERROR "::Armap_entry>>::\n      _M_default_append((vector<gold:" : : identifier >> : : identifier ( ( (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" statement_identifier (ERROR "::Armap_entry,std::allocator<gold:" : : (comma_expression "Armap_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" statement_identifier : (ERROR ":" :) (expression_statement "Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" (comma_expression "Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10" (binary_expression "Armap_entry>>\n                         *)(iVar2 + 0x28" identifier >> (binary_expression "*)(iVar2 + 0x28" (pointer_expression "*)(iVar2" * (ERROR ")(" ) () identifier) + number_literal)) (ERROR ")" )) , (binary_expression "uVar12 - uVar10" identifier - identifier)) (ERROR ")" )) ;))))) }) (else_clause "else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }" else (if_statement "if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }" if (parenthesized_expression "((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26))" ( (binary_expression "(uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)" (parenthesized_expression "(uVar12 < uVar10)" ( (binary_expression "uVar12 < uVar10" identifier < identifier) )) && (parenthesized_expression "(iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)" ( (comma_expression "iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26" (assignment_expression "iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10" identifier = (binary_expression "*(int *)(iVar2 + 0x28) + uVar12 * 0x10" (pointer_expression "*(int *)(iVar2 + 0x28)" * (cast_expression "(int *)(iVar2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) )))) + (binary_expression "uVar12 * 0x10" identifier * number_literal))) , (binary_expression "*(int *)(iVar2 + 0x2c) != iVar26" (pointer_expression "*(int *)(iVar2 + 0x2c)" * (cast_expression "(int *)(iVar2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }" { (expression_statement "*(int *)(iVar2 + 0x2c) = iVar26;" (assignment_expression "*(int *)(iVar2 + 0x2c) = iVar26" (pointer_expression "*(int *)(iVar2 + 0x2c)" * (cast_expression "(int *)(iVar2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) )))) = identifier) ;) })))) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }" { (expression_statement "iVar26 = -1;" (assignment_expression "iVar26 = -1" identifier = number_literal) ;) (expression_statement "piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;" (assignment_expression "piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4" identifier = (binary_expression "*(int **)(iVar2 + 0x28) + uVar12 * 4" (pointer_expression "*(int **)(iVar2 + 0x28)" * (cast_expression "(int **)(iVar2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) )))) + (binary_expression "uVar12 * 4" identifier * number_literal))) ;) (expression_statement "piVar3 = *(int **)(iVar2 + 0x28);" (assignment_expression "piVar3 = *(int **)(iVar2 + 0x28)" identifier = (pointer_expression "*(int **)(iVar2 + 0x28)" * (cast_expression "(int **)(iVar2 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = 0xffffffff;" (assignment_expression "uVar20 = 0xffffffff" identifier = number_literal) ;) (do_statement "do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);" do (compound_statement "{\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      }" { (while_statement "while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }" { (expression_statement "uVar14 = *puVar16;" (assignment_expression "uVar14 = *puVar16" identifier = (pointer_expression "*puVar16" * identifier)) ;) (expression_statement "pcVar23 = *(code **)(pcVar21 + 0x374324);" (assignment_expression "pcVar23 = *(code **)(pcVar21 + 0x374324)" identifier = (pointer_expression "*(code **)(pcVar21 + 0x374324)" * (cast_expression "(code **)(pcVar21 + 0x374324)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x374324)" ( (binary_expression "pcVar21 + 0x374324" identifier + number_literal) ))))) ;) (expression_statement "piVar3[1] = uVar10;" (assignment_expression "piVar3[1] = uVar10" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "*piVar3 = (int)uVar10 >> 0x1f;" (assignment_expression "*piVar3 = (int)uVar10 >> 0x1f" (pointer_expression "*piVar3" * identifier) = (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "piVar5 = piVar3 + 4;" (assignment_expression "piVar5 = piVar3 + 4" identifier = (binary_expression "piVar3 + 4" identifier + number_literal)) ;) (expression_statement "piVar3[2] = 0;" (assignment_expression "piVar3[2] = 0" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar3[3] = uVar14;" (assignment_expression "piVar3[3] = uVar14" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar6 = (*pcVar23)((int)puVar18 + uVar10);" (assignment_expression "iVar6 = (*pcVar23)((int)puVar18 + uVar10)" identifier = (call_expression "(*pcVar23)((int)puVar18 + uVar10)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "((int)puVar18 + uVar10)" ( (binary_expression "(int)puVar18 + uVar10" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar10 = iVar6 + 1 + uVar10;" (assignment_expression "uVar10 = iVar6 + 1 + uVar10" identifier = (binary_expression "iVar6 + 1 + uVar10" (binary_expression "iVar6 + 1" identifier + number_literal) + identifier)) ;) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" identifier = identifier) ;) (if_statement "if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;" if (parenthesized_expression "((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20))" ( (binary_expression "(iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)" (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar26 = 0, uVar14 != uVar20)" ( (comma_expression "iVar26 = 0, uVar14 != uVar20" (assignment_expression "iVar26 = 0" identifier = number_literal) , (binary_expression "uVar14 != uVar20" identifier != identifier)) ))) )) (break_statement "break;" break ;)) (expression_statement "uVar20 = uVar14;" (assignment_expression "uVar20 = uVar14" identifier = identifier) ;) (if_statement "if (piVar17 == piVar5) goto LAB_001519e0;" if (parenthesized_expression "(piVar17 == piVar5)" ( (binary_expression "piVar17 == piVar5" identifier == identifier) )) (goto_statement "goto LAB_001519e0;" goto statement_identifier ;)) })) (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;" (assignment_expression "*(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1" (pointer_expression "*(int *)(iVar2 + 0xd0)" * (cast_expression "(int *)(iVar2 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xd0)" ( (binary_expression "iVar2 + 0xd0" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar2 + 0xd0) + 1" (pointer_expression "*(int *)(iVar2 + 0xd0)" * (cast_expression "(int *)(iVar2 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xd0)" ( (binary_expression "iVar2 + 0xd0" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uVar20 = uVar14;" (assignment_expression "uVar20 = uVar14" identifier = identifier) ;) }) while (parenthesized_expression "(piVar17 != piVar5)" ( (binary_expression "piVar17 != piVar5" identifier != identifier) )) ;) (labeled_statement "LAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }" statement_identifier : (if_statement "if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }" if (parenthesized_expression "(uVar4 < uVar10)" ( (binary_expression "uVar4 < uVar10" identifier < identifier) )) (compound_statement "{\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }" { (expression_statement "uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);" (assignment_expression "uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0)" identifier = (call_expression "(**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0)" (parenthesized_expression "(**(code **)(pcVar21 + 0x3743b8))" ( (pointer_expression "**(code **)(pcVar21 + 0x3743b8)" * (pointer_expression "*(code **)(pcVar21 + 0x3743b8)" * (cast_expression "(code **)(pcVar21 + 0x3743b8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x3743b8)" ( (binary_expression "pcVar21 + 0x3743b8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar21 + 0x3701d8) + -0x15d0)" ( (binary_expression "*(int *)(pcVar21 + 0x3701d8) + -0x15d0" (pointer_expression "*(int *)(pcVar21 + 0x3701d8)" * (cast_expression "(int *)(pcVar21 + 0x3701d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x3701d8)" ( (binary_expression "pcVar21 + 0x3701d8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));" (call_expression "(**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc))" (parenthesized_expression "(**(code **)(pcVar21 + 0x3701b4))" ( (pointer_expression "**(code **)(pcVar21 + 0x3701b4)" * (pointer_expression "*(code **)(pcVar21 + 0x3701b4)" * (cast_expression "(code **)(pcVar21 + 0x3701b4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x3701b4)" ( (binary_expression "pcVar21 + 0x3701b4" identifier + number_literal) ))))) )) (argument_list "(uVar11,*(undefined4 *)(iVar2 + 0xc))" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "iVar26 = *(int *)(iVar2 + 0x6c);" (assignment_expression "iVar26 = *(int *)(iVar2 + 0x6c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x6c)" * (cast_expression "(int *)(iVar2 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x6c)" ( (binary_expression "iVar2 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar2 + 100);" (assignment_expression "iVar6 = *(int *)(iVar2 + 100)" identifier = (pointer_expression "*(int *)(iVar2 + 100)" * (cast_expression "(int *)(iVar2 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 100)" ( (binary_expression "iVar2 + 100" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(iVar2 + 0x70);" (assignment_expression "iVar15 = *(int *)(iVar2 + 0x70)" identifier = (pointer_expression "*(int *)(iVar2 + 0x70)" * (cast_expression "(int *)(iVar2 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x70)" ( (binary_expression "iVar2 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = *(int *)(iVar2 + 0x68);" (assignment_expression "iVar19 = *(int *)(iVar2 + 0x68)" identifier = (pointer_expression "*(int *)(iVar2 + 0x68)" * (cast_expression "(int *)(iVar2 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x68)" ( (binary_expression "iVar2 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = (iVar26 - iVar6) * 8 + iVar15;" (assignment_expression "iVar8 = (iVar26 - iVar6) * 8 + iVar15" identifier = (binary_expression "(iVar26 - iVar6) * 8 + iVar15" (binary_expression "(iVar26 - iVar6) * 8" (parenthesized_expression "(iVar26 - iVar6)" ( (binary_expression "iVar26 - iVar6" identifier - identifier) )) * number_literal) + identifier)) ;) (expression_statement "uVar4 = iVar8 - iVar19;" (assignment_expression "uVar4 = iVar8 - iVar19" identifier = (binary_expression "iVar8 - iVar19" identifier - identifier)) ;) (goto_statement "goto joined_r0x00151ae4;" goto statement_identifier ;) }))) })) (expression_statement "iVar26 = *(int *)(iVar2 + 0x6c);" (assignment_expression "iVar26 = *(int *)(iVar2 + 0x6c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x6c)" * (cast_expression "(int *)(iVar2 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x6c)" ( (binary_expression "iVar2 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar2 + 100);" (assignment_expression "iVar6 = *(int *)(iVar2 + 100)" identifier = (pointer_expression "*(int *)(iVar2 + 100)" * (cast_expression "(int *)(iVar2 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 100)" ( (binary_expression "iVar2 + 100" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(iVar2 + 0x70);" (assignment_expression "iVar15 = *(int *)(iVar2 + 0x70)" identifier = (pointer_expression "*(int *)(iVar2 + 0x70)" * (cast_expression "(int *)(iVar2 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x70)" ( (binary_expression "iVar2 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = *(int *)(iVar2 + 0x68);" (assignment_expression "iVar19 = *(int *)(iVar2 + 0x68)" identifier = (pointer_expression "*(int *)(iVar2 + 0x68)" * (cast_expression "(int *)(iVar2 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x68)" ( (binary_expression "iVar2 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = (iVar26 - iVar6) * 8 + iVar15;" (assignment_expression "iVar8 = (iVar26 - iVar6) * 8 + iVar15" identifier = (binary_expression "(iVar26 - iVar6) * 8 + iVar15" (binary_expression "(iVar26 - iVar6) * 8" (parenthesized_expression "(iVar26 - iVar6)" ( (binary_expression "iVar26 - iVar6" identifier - identifier) )) * number_literal) + identifier)) ;) (expression_statement "uVar4 = iVar8 - iVar19;" (assignment_expression "uVar4 = iVar8 - iVar19" identifier = (binary_expression "iVar8 - iVar19" identifier - identifier)) ;) (labeled_statement "joined_r0x00151ae4:\n    if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }" statement_identifier : (if_statement "if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }" if (parenthesized_expression "(uVar4 <= uVar12)" ( (binary_expression "uVar4 <= uVar12" identifier <= identifier) )) (compound_statement "{\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }" { (ERROR "vector<bool,std::" (comma_expression "vector<bool,std" (binary_expression "vector<bool" identifier < identifier) , identifier) : :) (expression_statement "allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);" (binary_expression "allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0)" identifier < (binary_expression "bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0)" identifier >> (ERROR "::" : :) (call_expression "_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0)" identifier (argument_list "(iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0)" ( (binary_expression "iVar2 + 100" identifier + number_literal) , identifier , identifier , (binary_expression "(iVar19 - iVar8) + uVar12" (parenthesized_expression "(iVar19 - iVar8)" ( (binary_expression "iVar19 - iVar8" identifier - identifier) )) + identifier) , number_literal ))))) ;) (return_statement "return;" return ;) }))) (expression_statement "uVar12 = uVar12 + iVar19;" (assignment_expression "uVar12 = uVar12 + iVar19" identifier = (binary_expression "uVar12 + iVar19" identifier + identifier)) ;) (expression_statement "uVar4 = uVar12;" (assignment_expression "uVar4 = uVar12" identifier = identifier) ;) (if_statement "if ((int)uVar12 < 0) {\n      uVar4 = uVar12 + 0x1f;\n    }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar4 = uVar12 + 0x1f;\n    }" { (expression_statement "uVar4 = uVar12 + 0x1f;" (assignment_expression "uVar4 = uVar12 + 0x1f" identifier = (binary_expression "uVar12 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;" (assignment_expression "iVar6 = iVar6 + ((int)uVar4 >> 5) * 4" identifier = (binary_expression "iVar6 + ((int)uVar4 >> 5) * 4" identifier + (binary_expression "((int)uVar4 >> 5) * 4" (parenthesized_expression "((int)uVar4 >> 5)" ( (binary_expression "(int)uVar4 >> 5" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * number_literal))) ;) (if_statement "if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }" { (expression_statement "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;" (assignment_expression "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" identifier = (binary_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" (parenthesized_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0)" ( (binary_expression "(uVar12 & 0x8000001f) - 1 | 0xffffffe0" (binary_expression "(uVar12 & 0x8000001f) - 1" (parenthesized_expression "(uVar12 & 0x8000001f)" ( (binary_expression "uVar12 & 0x8000001f" identifier & number_literal) )) - number_literal) | number_literal) )) + number_literal)) ;) }) (else_clause "else {\n      uVar12 = uVar12 & 0x8000001f;\n    }" else (compound_statement "{\n      uVar12 = uVar12 & 0x8000001f;\n    }" { (expression_statement "uVar12 = uVar12 & 0x8000001f;" (assignment_expression "uVar12 = uVar12 & 0x8000001f" identifier = (binary_expression "uVar12 & 0x8000001f" identifier & number_literal)) ;) }))) (if_statement "if ((int)uVar12 < 0) {\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }" { (expression_statement "*(uint *)(iVar2 + 0x70) = uVar12 + 0x20;" (assignment_expression "*(uint *)(iVar2 + 0x70) = uVar12 + 0x20" (pointer_expression "*(uint *)(iVar2 + 0x70)" * (cast_expression "(uint *)(iVar2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x70)" ( (binary_expression "iVar2 + 0x70" identifier + number_literal) )))) = (binary_expression "uVar12 + 0x20" identifier + number_literal)) ;) (expression_statement "*(int *)(iVar2 + 0x6c) = iVar6 + -4;" (assignment_expression "*(int *)(iVar2 + 0x6c) = iVar6 + -4" (pointer_expression "*(int *)(iVar2 + 0x6c)" * (cast_expression "(int *)(iVar2 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x6c)" ( (binary_expression "iVar2 + 0x6c" identifier + number_literal) )))) = (binary_expression "iVar6 + -4" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "*(uint *)(iVar2 + 0x70) = uVar12;" (assignment_expression "*(uint *)(iVar2 + 0x70) = uVar12" (pointer_expression "*(uint *)(iVar2 + 0x70)" * (cast_expression "(uint *)(iVar2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x70)" ( (binary_expression "iVar2 + 0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar2 + 0x6c) = iVar6;" (assignment_expression "*(int *)(iVar2 + 0x6c) = iVar6" (pointer_expression "*(int *)(iVar2 + 0x6c)" * (cast_expression "(int *)(iVar2 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x6c)" ( (binary_expression "iVar2 + 0x6c" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "piVar17 = piVar3 + 2 + uVar12 * 2;" (assignment_expression "piVar17 = piVar3 + 2 + uVar12 * 2" identifier = (binary_expression "piVar3 + 2 + uVar12 * 2" (binary_expression "piVar3 + 2" identifier + number_literal) + (binary_expression "uVar12 * 2" identifier * number_literal))) ;) (expression_statement "uVar4 = (int)piVar3 + (iVar26 - (int)piVar17);" (assignment_expression "uVar4 = (int)piVar3 + (iVar26 - (int)piVar17)" identifier = (binary_expression "(int)piVar3 + (iVar26 - (int)piVar17)" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(iVar26 - (int)piVar17)" ( (binary_expression "iVar26 - (int)piVar17" identifier - (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "(**(code **)(puVar22 + 0x370bbc))\n            (puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,\n             uVar25);" (call_expression "(**(code **)(puVar22 + 0x370bbc))\n            (puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,\n             uVar25)" (parenthesized_expression "(**(code **)(puVar22 + 0x370bbc))" ( (pointer_expression "**(code **)(puVar22 + 0x370bbc)" * (pointer_expression "*(code **)(puVar22 + 0x370bbc)" * (cast_expression "(code **)(puVar22 + 0x370bbc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x370bbc)" ( (binary_expression "puVar22 + 0x370bbc" identifier + number_literal) ))))) )) (argument_list "(puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,\n             uVar25)" ( (binary_expression "puVar9 + 0x34" identifier + number_literal) , number_literal , (pointer_expression "*(undefined4 *)(puVar9 + 0x38)" * (cast_expression "(undefined4 *)(puVar9 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x38)" ( (binary_expression "puVar9 + 0x38" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar10 = *(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4;" (assignment_expression "uVar10 = *(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4" identifier = (binary_expression "*(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4" (binary_expression "*(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28)" (pointer_expression "*(int *)(puVar9 + 0x2c)" * (cast_expression "(int *)(puVar9 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x2c)" ( (binary_expression "puVar9 + 0x2c" identifier + number_literal) )))) - (pointer_expression "*(int *)(puVar9 + 0x28)" * (cast_expression "(int *)(puVar9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x28)" ( (binary_expression "puVar9 + 0x28" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar10 < uVar12) {\n    vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);\n  }\n  else if ((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }" if (parenthesized_expression "(uVar10 < uVar12)" ( (binary_expression "uVar10 < uVar12" identifier < identifier) )) (compound_statement "{\n    vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);\n  }" { (ERROR "vector<gold::" (binary_expression "vector<gold" identifier < identifier) : :) (labeled_statement "Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" statement_identifier (ERROR "::Armap_entry,std::allocator<gold:" : : (comma_expression "Armap_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" statement_identifier (ERROR "::Armap_entry>>::_M_default_append\n              ((vector<gold:" : : identifier >> : : identifier ( ( (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" statement_identifier (ERROR "::Armap_entry,std::allocator<gold:" : : (comma_expression "Armap_entry,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" statement_identifier : (ERROR ":" :) (expression_statement "Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" (comma_expression "Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10" (binary_expression "Armap_entry>> *)\n               (puVar9 + 0x28)" identifier >> (pointer_expression "*)\n               (puVar9 + 0x28)" * (ERROR ")" )) (parenthesized_expression "(puVar9 + 0x28)" ( (binary_expression "puVar9 + 0x28" identifier + number_literal) )))) , (binary_expression "uVar12 - uVar10" identifier - identifier)) (ERROR ")" )) ;))))) }) (else_clause "else if ((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }" else (if_statement "if ((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }" if (parenthesized_expression "((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26))" ( (binary_expression "(uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)" (parenthesized_expression "(uVar12 < uVar10)" ( (binary_expression "uVar12 < uVar10" identifier < identifier) )) && (parenthesized_expression "(iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)" ( (comma_expression "iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26" (assignment_expression "iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10" identifier = (binary_expression "*(int *)(puVar9 + 0x28) + uVar12 * 0x10" (pointer_expression "*(int *)(puVar9 + 0x28)" * (cast_expression "(int *)(puVar9 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x28)" ( (binary_expression "puVar9 + 0x28" identifier + number_literal) )))) + (binary_expression "uVar12 * 0x10" identifier * number_literal))) , (binary_expression "*(int *)(puVar9 + 0x2c) != iVar26" (pointer_expression "*(int *)(puVar9 + 0x2c)" * (cast_expression "(int *)(puVar9 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x2c)" ( (binary_expression "puVar9 + 0x2c" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }" { (expression_statement "*(int *)(puVar9 + 0x2c) = iVar26;" (assignment_expression "*(int *)(puVar9 + 0x2c) = iVar26" (pointer_expression "*(int *)(puVar9 + 0x2c)" * (cast_expression "(int *)(puVar9 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x2c)" ( (binary_expression "puVar9 + 0x2c" identifier + number_literal) )))) = identifier) ;) })))) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 != 0) {\n    piVar13 = *(int **)(puVar9 + 0x28);\n    piVar5 = piVar13 + uVar12 * 4;\n    piVar3 = piVar3 + 2;\n    iVar26 = -1;\n    iVar2 = -1;\n    do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    } while (piVar5 != piVar13);\nLAB_00151668:\n    if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }\n  }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n    piVar13 = *(int **)(puVar9 + 0x28);\n    piVar5 = piVar13 + uVar12 * 4;\n    piVar3 = piVar3 + 2;\n    iVar26 = -1;\n    iVar2 = -1;\n    do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    } while (piVar5 != piVar13);\nLAB_00151668:\n    if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }\n  }" { (expression_statement "piVar13 = *(int **)(puVar9 + 0x28);" (assignment_expression "piVar13 = *(int **)(puVar9 + 0x28)" identifier = (pointer_expression "*(int **)(puVar9 + 0x28)" * (cast_expression "(int **)(puVar9 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x28)" ( (binary_expression "puVar9 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = piVar13 + uVar12 * 4;" (assignment_expression "piVar5 = piVar13 + uVar12 * 4" identifier = (binary_expression "piVar13 + uVar12 * 4" identifier + (binary_expression "uVar12 * 4" identifier * number_literal))) ;) (expression_statement "piVar3 = piVar3 + 2;" (assignment_expression "piVar3 = piVar3 + 2" identifier = (binary_expression "piVar3 + 2" identifier + number_literal)) ;) (expression_statement "iVar26 = -1;" (assignment_expression "iVar26 = -1" identifier = number_literal) ;) (expression_statement "iVar2 = -1;" (assignment_expression "iVar2 = -1" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    } while (piVar5 != piVar13);" do (compound_statement "{\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    }" { (while_statement "while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }" { (expression_statement "pcVar21 = *(code **)(puVar22 + 0x3746b8);" (assignment_expression "pcVar21 = *(code **)(puVar22 + 0x3746b8)" identifier = (pointer_expression "*(code **)(puVar22 + 0x3746b8)" * (cast_expression "(code **)(puVar22 + 0x3746b8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x3746b8)" ( (binary_expression "puVar22 + 0x3746b8" identifier + number_literal) ))))) ;) (expression_statement "piVar13[1] = uVar10;" (assignment_expression "piVar13[1] = uVar10" (subscript_expression "piVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar13 = (int)uVar10 >> 0x1f;" (assignment_expression "*piVar13 = (int)uVar10 >> 0x1f" (pointer_expression "*piVar13" * identifier) = (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iVar15 = *piVar3;" (assignment_expression "iVar15 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "iVar19 = piVar3[1];" (assignment_expression "iVar19 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;) (expression_statement "piVar13[2] = iVar15;" (assignment_expression "piVar13[2] = iVar15" (subscript_expression "piVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13[3] = iVar19;" (assignment_expression "piVar13[3] = iVar19" (subscript_expression "piVar13[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar6 = (*pcVar21)((int)piVar17 + uVar10);" (assignment_expression "iVar6 = (*pcVar21)((int)piVar17 + uVar10)" identifier = (call_expression "(*pcVar21)((int)piVar17 + uVar10)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "((int)piVar17 + uVar10)" ( (binary_expression "(int)piVar17 + uVar10" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar10 = iVar6 + 1 + uVar10;" (assignment_expression "uVar10 = iVar6 + 1 + uVar10" identifier = (binary_expression "iVar6 + 1 + uVar10" (binary_expression "iVar6 + 1" identifier + number_literal) + identifier)) ;) (if_statement "if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;" if (parenthesized_expression "((iVar15 != iVar2) || (iVar19 != iVar26))" ( (binary_expression "(iVar15 != iVar2) || (iVar19 != iVar26)" (parenthesized_expression "(iVar15 != iVar2)" ( (binary_expression "iVar15 != iVar2" identifier != identifier) )) || (parenthesized_expression "(iVar19 != iVar26)" ( (binary_expression "iVar19 != iVar26" identifier != identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "piVar13 = piVar13 + 4;" (assignment_expression "piVar13 = piVar13 + 4" identifier = (binary_expression "piVar13 + 4" identifier + number_literal)) ;) (expression_statement "piVar3 = piVar3 + 2;" (assignment_expression "piVar3 = piVar3 + 2" identifier = (binary_expression "piVar3 + 2" identifier + number_literal)) ;) (expression_statement "iVar26 = iVar19;" (assignment_expression "iVar26 = iVar19" identifier = identifier) ;) (expression_statement "iVar2 = iVar15;" (assignment_expression "iVar2 = iVar15" identifier = identifier) ;) (if_statement "if (piVar5 == piVar13) goto LAB_00151668;" if (parenthesized_expression "(piVar5 == piVar13)" ( (binary_expression "piVar5 == piVar13" identifier == identifier) )) (goto_statement "goto LAB_00151668;" goto statement_identifier ;)) })) (expression_statement "piVar13 = piVar13 + 4;" (assignment_expression "piVar13 = piVar13 + 4" identifier = (binary_expression "piVar13 + 4" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;" (assignment_expression "*(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1" (pointer_expression "*(int *)(puVar9 + 0xd0)" * (cast_expression "(int *)(puVar9 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0xd0)" ( (binary_expression "puVar9 + 0xd0" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar9 + 0xd0) + 1" (pointer_expression "*(int *)(puVar9 + 0xd0)" * (cast_expression "(int *)(puVar9 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0xd0)" ( (binary_expression "puVar9 + 0xd0" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar3 = piVar3 + 2;" (assignment_expression "piVar3 = piVar3 + 2" identifier = (binary_expression "piVar3 + 2" identifier + number_literal)) ;) (expression_statement "iVar26 = iVar19;" (assignment_expression "iVar26 = iVar19" identifier = identifier) ;) (expression_statement "iVar2 = iVar15;" (assignment_expression "iVar2 = iVar15" identifier = identifier) ;) }) while (parenthesized_expression "(piVar5 != piVar13)" ( (binary_expression "piVar5 != piVar13" identifier != identifier) )) ;) (labeled_statement "LAB_00151668:\n    if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }" statement_identifier : (if_statement "if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }" if (parenthesized_expression "(uVar4 < uVar10)" ( (binary_expression "uVar4 < uVar10" identifier < identifier) )) (compound_statement "{\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }" { (expression_statement "uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);" (assignment_expression "uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0)" identifier = (call_expression "(**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0)" (parenthesized_expression "(**(code **)(puVar22 + 0x37474c))" ( (pointer_expression "**(code **)(puVar22 + 0x37474c)" * (pointer_expression "*(code **)(puVar22 + 0x37474c)" * (cast_expression "(code **)(puVar22 + 0x37474c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x37474c)" ( (binary_expression "puVar22 + 0x37474c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar22 + 0x37056c) + -0x15d0)" ( (binary_expression "*(int *)(puVar22 + 0x37056c) + -0x15d0" (pointer_expression "*(int *)(puVar22 + 0x37056c)" * (cast_expression "(int *)(puVar22 + 0x37056c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x37056c)" ( (binary_expression "puVar22 + 0x37056c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x370548))" ( (pointer_expression "**(code **)(puVar22 + 0x370548)" * (pointer_expression "*(code **)(puVar22 + 0x370548)" * (cast_expression "(code **)(puVar22 + 0x370548)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x370548)" ( (binary_expression "puVar22 + 0x370548" identifier + number_literal) ))))) )) (argument_list "(uVar11,*(undefined4 *)(puVar9 + 0xc))" ( identifier , (pointer_expression "*(undefined4 *)(puVar9 + 0xc)" * (cast_expression "(undefined4 *)(puVar9 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0xc)" ( (binary_expression "puVar9 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "iVar26 = *(int *)(puVar9 + 0x6c);" (assignment_expression "iVar26 = *(int *)(puVar9 + 0x6c)" identifier = (pointer_expression "*(int *)(puVar9 + 0x6c)" * (cast_expression "(int *)(puVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x6c)" ( (binary_expression "puVar9 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(puVar9 + 100);" (assignment_expression "iVar2 = *(int *)(puVar9 + 100)" identifier = (pointer_expression "*(int *)(puVar9 + 100)" * (cast_expression "(int *)(puVar9 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 100)" ( (binary_expression "puVar9 + 100" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(puVar9 + 0x70);" (assignment_expression "iVar6 = *(int *)(puVar9 + 0x70)" identifier = (pointer_expression "*(int *)(puVar9 + 0x70)" * (cast_expression "(int *)(puVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x70)" ( (binary_expression "puVar9 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(puVar9 + 0x68);" (assignment_expression "iVar15 = *(int *)(puVar9 + 0x68)" identifier = (pointer_expression "*(int *)(puVar9 + 0x68)" * (cast_expression "(int *)(puVar9 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x68)" ( (binary_expression "puVar9 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = (iVar26 - iVar2) * 8 + iVar6;" (assignment_expression "iVar19 = (iVar26 - iVar2) * 8 + iVar6" identifier = (binary_expression "(iVar26 - iVar2) * 8 + iVar6" (binary_expression "(iVar26 - iVar2) * 8" (parenthesized_expression "(iVar26 - iVar2)" ( (binary_expression "iVar26 - iVar2" identifier - identifier) )) * number_literal) + identifier)) ;) (expression_statement "uVar4 = iVar19 - iVar15;" (assignment_expression "uVar4 = iVar19 - iVar15" identifier = (binary_expression "iVar19 - iVar15" identifier - identifier)) ;) (goto_statement "goto joined_r0x001516a0;" goto statement_identifier ;) }))) })) (expression_statement "iVar26 = *(int *)(puVar9 + 0x6c);" (assignment_expression "iVar26 = *(int *)(puVar9 + 0x6c)" identifier = (pointer_expression "*(int *)(puVar9 + 0x6c)" * (cast_expression "(int *)(puVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x6c)" ( (binary_expression "puVar9 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(puVar9 + 100);" (assignment_expression "iVar2 = *(int *)(puVar9 + 100)" identifier = (pointer_expression "*(int *)(puVar9 + 100)" * (cast_expression "(int *)(puVar9 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 100)" ( (binary_expression "puVar9 + 100" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(puVar9 + 0x70);" (assignment_expression "iVar6 = *(int *)(puVar9 + 0x70)" identifier = (pointer_expression "*(int *)(puVar9 + 0x70)" * (cast_expression "(int *)(puVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x70)" ( (binary_expression "puVar9 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(puVar9 + 0x68);" (assignment_expression "iVar15 = *(int *)(puVar9 + 0x68)" identifier = (pointer_expression "*(int *)(puVar9 + 0x68)" * (cast_expression "(int *)(puVar9 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x68)" ( (binary_expression "puVar9 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = (iVar26 - iVar2) * 8 + iVar6;" (assignment_expression "iVar19 = (iVar26 - iVar2) * 8 + iVar6" identifier = (binary_expression "(iVar26 - iVar2) * 8 + iVar6" (binary_expression "(iVar26 - iVar2) * 8" (parenthesized_expression "(iVar26 - iVar2)" ( (binary_expression "iVar26 - iVar2" identifier - identifier) )) * number_literal) + identifier)) ;) (expression_statement "uVar4 = iVar19 - iVar15;" (assignment_expression "uVar4 = iVar19 - iVar15" identifier = (binary_expression "iVar19 - iVar15" identifier - identifier)) ;) (labeled_statement "joined_r0x001516a0:\n  if (uVar4 <= uVar12) {\n    vector<bool,std::allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);\n    return;\n  }" statement_identifier : (if_statement "if (uVar4 <= uVar12) {\n    vector<bool,std::allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);\n    return;\n  }" if (parenthesized_expression "(uVar4 <= uVar12)" ( (binary_expression "uVar4 <= uVar12" identifier <= identifier) )) (compound_statement "{\n    vector<bool,std::allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);\n    return;\n  }" { (ERROR "vector<bool,std::" (comma_expression "vector<bool,std" (binary_expression "vector<bool" identifier < identifier) , identifier) : :) (expression_statement "allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);" (binary_expression "allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0)" identifier < (binary_expression "bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0)" identifier >> (ERROR "::" : :) (call_expression "_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0)" identifier (argument_list "(puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0)" ( (binary_expression "puVar9 + 100" identifier + number_literal) , identifier , identifier , (binary_expression "(iVar15 - iVar19) + uVar12" (parenthesized_expression "(iVar15 - iVar19)" ( (binary_expression "iVar15 - iVar19" identifier - identifier) )) + identifier) , number_literal ))))) ;) (return_statement "return;" return ;) }))) (expression_statement "uVar12 = uVar12 + iVar15;" (assignment_expression "uVar12 = uVar12 + iVar15" identifier = (binary_expression "uVar12 + iVar15" identifier + identifier)) ;) (expression_statement "uVar4 = uVar12;" (assignment_expression "uVar4 = uVar12" identifier = identifier) ;) (if_statement "if ((int)uVar12 < 0) {\n    uVar4 = uVar12 + 0x1f;\n  }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar4 = uVar12 + 0x1f;\n  }" { (expression_statement "uVar4 = uVar12 + 0x1f;" (assignment_expression "uVar4 = uVar12 + 0x1f" identifier = (binary_expression "uVar12 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "iVar2 = iVar2 + ((int)uVar4 >> 5) * 4;" (assignment_expression "iVar2 = iVar2 + ((int)uVar4 >> 5) * 4" identifier = (binary_expression "iVar2 + ((int)uVar4 >> 5) * 4" identifier + (binary_expression "((int)uVar4 >> 5) * 4" (parenthesized_expression "((int)uVar4 >> 5)" ( (binary_expression "(int)uVar4 >> 5" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * number_literal))) ;) (if_statement "if ((int)uVar12 < 0) {\n    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n  }\n  else {\n    uVar12 = uVar12 & 0x8000001f;\n  }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n  }" { (expression_statement "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;" (assignment_expression "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" identifier = (binary_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" (parenthesized_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0)" ( (binary_expression "(uVar12 & 0x8000001f) - 1 | 0xffffffe0" (binary_expression "(uVar12 & 0x8000001f) - 1" (parenthesized_expression "(uVar12 & 0x8000001f)" ( (binary_expression "uVar12 & 0x8000001f" identifier & number_literal) )) - number_literal) | number_literal) )) + number_literal)) ;) }) (else_clause "else {\n    uVar12 = uVar12 & 0x8000001f;\n  }" else (compound_statement "{\n    uVar12 = uVar12 & 0x8000001f;\n  }" { (expression_statement "uVar12 = uVar12 & 0x8000001f;" (assignment_expression "uVar12 = uVar12 & 0x8000001f" identifier = (binary_expression "uVar12 & 0x8000001f" identifier & number_literal)) ;) }))) (if_statement "if ((int)uVar12 < 0) {\n    *(uint *)(puVar9 + 0x70) = uVar12 + 0x20;\n    *(int *)(puVar9 + 0x6c) = iVar2 + -4;\n    return;\n  }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    *(uint *)(puVar9 + 0x70) = uVar12 + 0x20;\n    *(int *)(puVar9 + 0x6c) = iVar2 + -4;\n    return;\n  }" { (expression_statement "*(uint *)(puVar9 + 0x70) = uVar12 + 0x20;" (assignment_expression "*(uint *)(puVar9 + 0x70) = uVar12 + 0x20" (pointer_expression "*(uint *)(puVar9 + 0x70)" * (cast_expression "(uint *)(puVar9 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x70)" ( (binary_expression "puVar9 + 0x70" identifier + number_literal) )))) = (binary_expression "uVar12 + 0x20" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar9 + 0x6c) = iVar2 + -4;" (assignment_expression "*(int *)(puVar9 + 0x6c) = iVar2 + -4" (pointer_expression "*(int *)(puVar9 + 0x6c)" * (cast_expression "(int *)(puVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x6c)" ( (binary_expression "puVar9 + 0x6c" identifier + number_literal) )))) = (binary_expression "iVar2 + -4" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "*(uint *)(puVar9 + 0x70) = uVar12;" (assignment_expression "*(uint *)(puVar9 + 0x70) = uVar12" (pointer_expression "*(uint *)(puVar9 + 0x70)" * (cast_expression "(uint *)(puVar9 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x70)" ( (binary_expression "puVar9 + 0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar9 + 0x6c) = iVar2;" (assignment_expression "*(int *)(puVar9 + 0x6c) = iVar2" (pointer_expression "*(int *)(puVar9 + 0x6c)" * (cast_expression "(int *)(puVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x6c)" ( (binary_expression "puVar9 + 0x6c" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ms_call_modifier __thiscall) (ERROR IDENT : : IDENT : : IDENT < TYPE) (pointer_declarator * (ERROR > ( IDENT) (pointer_declarator * IDENT)) , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT IDENT ) { IDENT) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_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) ))))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + (subscript_expression IDENT [ LIT ])) )))) = LIT) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) = LIT) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (ERROR (binary_expression IDENT < IDENT) : :) (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier (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 :) (expression_statement (comma_expression (binary_expression IDENT >> (binary_expression (pointer_expression * (ERROR ) () IDENT) + LIT)) (ERROR )) , (binary_expression IDENT - IDENT)) (ERROR )) ;))))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * 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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT != IDENT)) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (goto_statement goto statement_identifier ;) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (ERROR (comma_expression (binary_expression IDENT < IDENT) , IDENT) : :) (expression_statement (binary_expression IDENT < (binary_expression IDENT >> (ERROR : :) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + IDENT) , LIT ))))) ;) (return_statement return ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) - LIT) | LIT) )) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (ERROR (binary_expression IDENT < IDENT) : :) (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier (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 :) (expression_statement (comma_expression (binary_expression IDENT >> (pointer_expression * (ERROR )) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT - IDENT)) (ERROR )) ;))))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })))) (expression_statement (assignment_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 = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) || (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (goto_statement goto statement_identifier ;) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (ERROR (comma_expression (binary_expression IDENT < IDENT) , IDENT) : :) (expression_statement (binary_expression IDENT < (binary_expression IDENT >> (ERROR : :) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + IDENT) , LIT ))))) ;) (return_statement return ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) - LIT) | LIT) )) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) (ERROR }))
(declaration "void __thiscall\nstd::string::_M_construct<char*>(string *this,undefined1 *param_1,int param_2,undefined4 param_4)\n\n{\n  undefined1 *puVar1;" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "std::string::_M_construct<char" (identifier "std") (: ":") (: ":") (identifier "string") (: ":") (: ":") (identifier "_M_construct") (< "<") (primitive_type "char")) (pointer_declarator "*>(string *this" (* "*") (ERROR ">(string" (> ">") (( "(") (identifier "string")) (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (ERROR "undefined1" (identifier "undefined1")) (pointer_declarator "*param_1" (* "*") (identifier "param_1")) (, ",") (ERROR "int" (identifier "int")) (identifier "param_2") (, ",") (ERROR "undefined4 param_4)\n\n{\n  undefined1" (identifier "undefined4") (identifier "param_4") () ")") ({ "{") (identifier "undefined1")) (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "undefined *puVar9;" (type_identifier "undefined") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "uint *puVar16;" (type_identifier "uint") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "int *piVar17;" (primitive_type "int") (pointer_declarator "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (declaration "uint *puVar18;" (type_identifier "uint") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "code *pcVar21;" (type_identifier "code") (pointer_declarator "*pcVar21" (* "*") (identifier "pcVar21")) (; ";")) (declaration "undefined *puVar22;" (type_identifier "undefined") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "code *pcVar23;" (type_identifier "code") (pointer_declarator "*pcVar23" (* "*") (identifier "pcVar23")) (; ";")) (declaration "undefined4 uVar24;" (type_identifier "undefined4") (identifier "uVar24") (; ";")) (declaration "undefined4 uVar25;" (type_identifier "undefined4") (identifier "uVar25") (; ";")) (declaration "int iVar26;" (primitive_type "int") (identifier "iVar26") (; ";")) (declaration "uint local_18 [2];" (type_identifier "uint") (array_declarator "local_18 [2]" (identifier "local_18") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "iVar26 = 0x4c9240;" (assignment_expression "iVar26 = 0x4c9240" (identifier "iVar26") (= "=") (number_literal "0x4c9240")) (; ";")) (if_statement "if (param_1 != (undefined1 *)0x0) {\n    uVar12 = param_2 - (int)param_1;\n    local_18[0] = uVar12;\n    if (0xf < uVar12) {\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }\n    if (uVar12 == 1) {\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }\n    else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }\n    *(uint *)(this + 4) = uVar12;\n    *puVar1 = 0;\n    return;\n  }" (if "if") (parenthesized_expression "(param_1 != (undefined1 *)0x0)" (( "(") (binary_expression "param_1 != (undefined1 *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar12 = param_2 - (int)param_1;\n    local_18[0] = uVar12;\n    if (0xf < uVar12) {\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }\n    if (uVar12 == 1) {\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }\n    else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }\n    *(uint *)(this + 4) = uVar12;\n    *puVar1 = 0;\n    return;\n  }" ({ "{") (expression_statement "uVar12 = param_2 - (int)param_1;" (assignment_expression "uVar12 = param_2 - (int)param_1" (identifier "uVar12") (= "=") (binary_expression "param_2 - (int)param_1" (identifier "param_2") (- "-") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")))) (; ";")) (expression_statement "local_18[0] = uVar12;" (assignment_expression "local_18[0] = uVar12" (subscript_expression "local_18[0]" (identifier "local_18") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (if_statement "if (0xf < uVar12) {\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }" (if "if") (parenthesized_expression "(0xf < uVar12)" (( "(") (binary_expression "0xf < uVar12" (number_literal "0xf") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);\n      *(int *)this = iVar2;\n      *(uint *)(this + 8) = local_18[0];\n      pcVar21 = *(code **)(iVar26 + -0x3698);\nLAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);\n      *(uint *)(this + 4) = local_18[0];\n      *(undefined1 *)(*(int *)this + local_18[0]) = 0;\n      return;\n    }" ({ "{") (expression_statement "iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);" (assignment_expression "iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR__M_create_004c141c)(this,local_18,0)" (parenthesized_expression "(*(code *)PTR__M_create_004c141c)" (( "(") (pointer_expression "*(code *)PTR__M_create_004c141c" (* "*") (cast_expression "(code *)PTR__M_create_004c141c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_create_004c141c"))) () ")")) (argument_list "(this,local_18,0)" (( "(") (identifier "this") (, ",") (identifier "local_18") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(int *)this = iVar2;" (assignment_expression "*(int *)this = iVar2" (pointer_expression "*(int *)this" (* "*") (cast_expression "(int *)this" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this"))) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "*(uint *)(this + 8) = local_18[0];" (assignment_expression "*(uint *)(this + 8) = local_18[0]" (pointer_expression "*(uint *)(this + 8)" (* "*") (cast_expression "(uint *)(this + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "local_18[0]" (identifier "local_18") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "pcVar21 = *(code **)(iVar26 + -0x3698);" (assignment_expression "pcVar21 = *(code **)(iVar26 + -0x3698)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(iVar26 + -0x3698)" (* "*") (cast_expression "(code **)(iVar26 + -0x3698)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar26 + -0x3698)" (( "(") (binary_expression "iVar26 + -0x3698" (identifier "iVar26") (+ "+") (number_literal "-0x3698")) () ")"))))) (; ";")) (labeled_statement "LAB_00151454:\n      (*pcVar21)(iVar2,param_1,uVar12);" (statement_identifier "LAB_00151454") (: ":") (expression_statement "(*pcVar21)(iVar2,param_1,uVar12);" (call_expression "(*pcVar21)(iVar2,param_1,uVar12)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(iVar2,param_1,uVar12)" (( "(") (identifier "iVar2") (, ",") (identifier "param_1") (, ",") (identifier "uVar12") () ")"))) (; ";"))) (expression_statement "*(uint *)(this + 4) = local_18[0];" (assignment_expression "*(uint *)(this + 4) = local_18[0]" (pointer_expression "*(uint *)(this + 4)" (* "*") (cast_expression "(uint *)(this + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 4)" (( "(") (binary_expression "this + 4" (identifier "this") (+ "+") (number_literal "4")) () ")")))) (= "=") (subscript_expression "local_18[0]" (identifier "local_18") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(*(int *)this + local_18[0]) = 0;" (assignment_expression "*(undefined1 *)(*(int *)this + local_18[0]) = 0" (pointer_expression "*(undefined1 *)(*(int *)this + local_18[0])" (* "*") (cast_expression "(undefined1 *)(*(int *)this + local_18[0])" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)this + local_18[0])" (( "(") (binary_expression "*(int *)this + local_18[0]" (pointer_expression "*(int *)this" (* "*") (cast_expression "(int *)this" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this"))) (+ "+") (subscript_expression "local_18[0]" (identifier "local_18") ([ "[") (number_literal "0") (] "]"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar12 == 1) {\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }\n    else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }" (if "if") (parenthesized_expression "(uVar12 == 1)" (( "(") (binary_expression "uVar12 == 1" (identifier "uVar12") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      **(undefined1 **)this = *param_1;\n      puVar1 = (undefined1 *)(*(int *)this + 1);\n    }" ({ "{") (expression_statement "**(undefined1 **)this = *param_1;" (assignment_expression "**(undefined1 **)this = *param_1" (pointer_expression "**(undefined1 **)this" (* "*") (pointer_expression "*(undefined1 **)this" (* "*") (cast_expression "(undefined1 **)this" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "this")))) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "puVar1 = (undefined1 *)(*(int *)this + 1);" (assignment_expression "puVar1 = (undefined1 *)(*(int *)this + 1)" (identifier "puVar1") (= "=") (cast_expression "(undefined1 *)(*(int *)this + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)this + 1)" (( "(") (binary_expression "*(int *)this + 1" (pointer_expression "*(int *)this" (* "*") (cast_expression "(int *)this" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }" (else "else") (compound_statement "{\n      puVar1 = *(undefined1 **)this + uVar12;\n      if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }\n    }" ({ "{") (expression_statement "puVar1 = *(undefined1 **)this + uVar12;" (assignment_expression "puVar1 = *(undefined1 **)this + uVar12" (identifier "puVar1") (= "=") (binary_expression "*(undefined1 **)this + uVar12" (pointer_expression "*(undefined1 **)this" (* "*") (cast_expression "(undefined1 **)this" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "this"))) (+ "+") (identifier "uVar12"))) (; ";")) (if_statement "if (uVar12 != 0) {\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }" (if "if") (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar2 = (int)puVar1 - uVar12;\n        pcVar21 = (code *)PTR_memcpy_004c5ba8;\n        goto LAB_00151454;\n      }" ({ "{") (expression_statement "iVar2 = (int)puVar1 - uVar12;" (assignment_expression "iVar2 = (int)puVar1 - uVar12" (identifier "iVar2") (= "=") (binary_expression "(int)puVar1 - uVar12" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "pcVar21 = (code *)PTR_memcpy_004c5ba8;" (assignment_expression "pcVar21 = (code *)PTR_memcpy_004c5ba8" (identifier "pcVar21") (= "=") (cast_expression "(code *)PTR_memcpy_004c5ba8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_004c5ba8"))) (; ";")) (goto_statement "goto LAB_00151454;" (goto "goto") (statement_identifier "LAB_00151454") (; ";")) (} "}"))) (} "}")))) (expression_statement "*(uint *)(this + 4) = uVar12;" (assignment_expression "*(uint *)(this + 4) = uVar12" (pointer_expression "*(uint *)(this + 4)" (* "*") (cast_expression "(uint *)(this + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 4)" (( "(") (binary_expression "this + 4" (identifier "this") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_2 == 0) {\n    *(undefined4 *)(this + 4) = 0;\n    **(undefined1 **)this = 0;\n    return;\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined4 *)(this + 4) = 0;\n    **(undefined1 **)this = 0;\n    return;\n  }" ({ "{") (expression_statement "*(undefined4 *)(this + 4) = 0;" (assignment_expression "*(undefined4 *)(this + 4) = 0" (pointer_expression "*(undefined4 *)(this + 4)" (* "*") (cast_expression "(undefined4 *)(this + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 4)" (( "(") (binary_expression "this + 4" (identifier "this") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "**(undefined1 **)this = 0;" (assignment_expression "**(undefined1 **)this = 0" (pointer_expression "**(undefined1 **)this" (* "*") (pointer_expression "*(undefined1 **)this" (* "*") (cast_expression "(undefined1 **)this" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "this")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar9 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00;" (assignment_expression "puVar9 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00" (identifier "puVar9") (= "=") (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00" (identifier "PTR_s_ral_options14Struct_no_crefE_004c127c") (+ "+") (number_literal "-0xa00"))) (; ";")) (expression_statement "puVar22 = PTR___throw_logic_error_004c12d8;" (assignment_expression "puVar22 = PTR___throw_logic_error_004c12d8" (identifier "puVar22") (= "=") (identifier "PTR___throw_logic_error_004c12d8")) (; ";")) (expression_statement "(*(code *)PTR___throw_logic_error_004c12d8)();" (call_expression "(*(code *)PTR___throw_logic_error_004c12d8)()" (parenthesized_expression "(*(code *)PTR___throw_logic_error_004c12d8)" (( "(") (pointer_expression "*(code *)PTR___throw_logic_error_004c12d8" (* "*") (cast_expression "(code *)PTR___throw_logic_error_004c12d8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___throw_logic_error_004c12d8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" (identifier "uVar25") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar24 = 1;" (assignment_expression "uVar24 = 1" (identifier "uVar24") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar2 = iVar26;" (assignment_expression "iVar2 = iVar26" (identifier "iVar2") (= "=") (identifier "iVar26")) (; ";")) (expression_statement "piVar3 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20);" (assignment_expression "piVar3 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20)" (identifier "piVar3") (= "=") (cast_expression "(int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20)" (parenthesized_expression "(**(code **)(puVar22 + 0x370690))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x370690)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x370690)" (* "*") (cast_expression "(code **)(puVar22 + 0x370690)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x370690)" (( "(") (binary_expression "puVar22 + 0x370690" (identifier "puVar22") (+ "+") (number_literal "0x370690")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar9 + 0x24) + 0x20)" (( "(") (binary_expression "*(int *)(puVar9 + 0x24) + 0x20" (pointer_expression "*(int *)(puVar9 + 0x24)" (* "*") (cast_expression "(int *)(puVar9 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x24)" (( "(") (binary_expression "puVar9 + 0x24" (identifier "puVar9") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar12 = piVar3[1];" (assignment_expression "uVar12 = piVar3[1]" (identifier "uVar12") (= "=") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (*piVar3 != 0) {\n    pcVar21 = *(code **)(puVar22 + 0x37054c);\n    iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;\n    (*pcVar21)(iVar2,0xc0);\n    uVar25 = 0;\n    uVar24 = 1;\n    iVar26 = param_2;\n    puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);\n    uVar12 = *puVar7;\n    puVar16 = puVar7 + 1;\n    puVar18 = puVar16 + uVar12;\n    uVar4 = (int)puVar7 + (param_2 - (int)puVar18);\n    (**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25);\n    uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;\n    if (uVar10 < uVar12) {\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }\n    else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }\n    uVar10 = 0;\n    if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }\n    iVar26 = *(int *)(iVar2 + 0x6c);\n    iVar6 = *(int *)(iVar2 + 100);\n    iVar15 = *(int *)(iVar2 + 0x70);\n    iVar19 = *(int *)(iVar2 + 0x68);\n    iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n    uVar4 = iVar8 - iVar19;\njoined_r0x00151ae4:\n    if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }\n    uVar12 = uVar12 + iVar19;\n    uVar4 = uVar12;\n    if ((int)uVar12 < 0) {\n      uVar4 = uVar12 + 0x1f;\n    }\n    iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;\n    if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }\n    if ((int)uVar12 < 0) {\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }\n    *(uint *)(iVar2 + 0x70) = uVar12;\n    *(int *)(iVar2 + 0x6c) = iVar6;\n    return;\n  }" (if "if") (parenthesized_expression "(*piVar3 != 0)" (( "(") (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar21 = *(code **)(puVar22 + 0x37054c);\n    iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;\n    (*pcVar21)(iVar2,0xc0);\n    uVar25 = 0;\n    uVar24 = 1;\n    iVar26 = param_2;\n    puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);\n    uVar12 = *puVar7;\n    puVar16 = puVar7 + 1;\n    puVar18 = puVar16 + uVar12;\n    uVar4 = (int)puVar7 + (param_2 - (int)puVar18);\n    (**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25);\n    uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;\n    if (uVar10 < uVar12) {\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }\n    else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }\n    uVar10 = 0;\n    if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }\n    iVar26 = *(int *)(iVar2 + 0x6c);\n    iVar6 = *(int *)(iVar2 + 100);\n    iVar15 = *(int *)(iVar2 + 0x70);\n    iVar19 = *(int *)(iVar2 + 0x68);\n    iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n    uVar4 = iVar8 - iVar19;\njoined_r0x00151ae4:\n    if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }\n    uVar12 = uVar12 + iVar19;\n    uVar4 = uVar12;\n    if ((int)uVar12 < 0) {\n      uVar4 = uVar12 + 0x1f;\n    }\n    iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;\n    if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }\n    if ((int)uVar12 < 0) {\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }\n    *(uint *)(iVar2 + 0x70) = uVar12;\n    *(int *)(iVar2 + 0x6c) = iVar6;\n    return;\n  }" ({ "{") (expression_statement "pcVar21 = *(code **)(puVar22 + 0x37054c);" (assignment_expression "pcVar21 = *(code **)(puVar22 + 0x37054c)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(puVar22 + 0x37054c)" (* "*") (cast_expression "(code **)(puVar22 + 0x37054c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x37054c)" (( "(") (binary_expression "puVar22 + 0x37054c" (identifier "puVar22") (+ "+") (number_literal "0x37054c")) () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;" (assignment_expression "iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584" (identifier "iVar2") (= "=") (binary_expression "*(int *)(puVar22 + 0x36fd98) + 0x4584" (pointer_expression "*(int *)(puVar22 + 0x36fd98)" (* "*") (cast_expression "(int *)(puVar22 + 0x36fd98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 0x36fd98)" (( "(") (binary_expression "puVar22 + 0x36fd98" (identifier "puVar22") (+ "+") (number_literal "0x36fd98")) () ")")))) (+ "+") (number_literal "0x4584"))) (; ";")) (expression_statement "(*pcVar21)(iVar2,0xc0);" (call_expression "(*pcVar21)(iVar2,0xc0)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(iVar2,0xc0)" (( "(") (identifier "iVar2") (, ",") (number_literal "0xc0") () ")"))) (; ";")) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" (identifier "uVar25") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar24 = 1;" (assignment_expression "uVar24 = 1" (identifier "uVar24") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar26 = param_2;" (assignment_expression "iVar26 = param_2" (identifier "iVar26") (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);" (assignment_expression "puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20)" (identifier "puVar7") (= "=") (cast_expression "(uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20)" (parenthesized_expression "(**(code **)(pcVar21 + 0x3702fc))" (( "(") (pointer_expression "**(code **)(pcVar21 + 0x3702fc)" (* "*") (pointer_expression "*(code **)(pcVar21 + 0x3702fc)" (* "*") (cast_expression "(code **)(pcVar21 + 0x3702fc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0x3702fc)" (( "(") (binary_expression "pcVar21 + 0x3702fc" (identifier "pcVar21") (+ "+") (number_literal "0x3702fc")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar2 + 0x24) + 0x20)" (( "(") (binary_expression "*(int *)(iVar2 + 0x24) + 0x20" (pointer_expression "*(int *)(iVar2 + 0x24)" (* "*") (cast_expression "(int *)(iVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x24)" (( "(") (binary_expression "iVar2 + 0x24" (identifier "iVar2") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar12 = *puVar7;" (assignment_expression "uVar12 = *puVar7" (identifier "uVar12") (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "puVar16 = puVar7 + 1;" (assignment_expression "puVar16 = puVar7 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar18 = puVar16 + uVar12;" (assignment_expression "puVar18 = puVar16 + uVar12" (identifier "puVar18") (= "=") (binary_expression "puVar16 + uVar12" (identifier "puVar16") (+ "+") (identifier "uVar12"))) (; ";")) (expression_statement "uVar4 = (int)puVar7 + (param_2 - (int)puVar18);" (assignment_expression "uVar4 = (int)puVar7 + (param_2 - (int)puVar18)" (identifier "uVar4") (= "=") (binary_expression "(int)puVar7 + (param_2 - (int)puVar18)" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (+ "+") (parenthesized_expression "(param_2 - (int)puVar18)" (( "(") (binary_expression "param_2 - (int)puVar18" (identifier "param_2") (- "-") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18"))) () ")")))) (; ";")) (expression_statement "(**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25);" (call_expression "(**(code **)(pcVar21 + 0x370828))\n              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25)" (parenthesized_expression "(**(code **)(pcVar21 + 0x370828))" (( "(") (pointer_expression "**(code **)(pcVar21 + 0x370828)" (* "*") (pointer_expression "*(code **)(pcVar21 + 0x370828)" (* "*") (cast_expression "(code **)(pcVar21 + 0x370828)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0x370828)" (( "(") (binary_expression "pcVar21 + 0x370828" (identifier "pcVar21") (+ "+") (number_literal "0x370828")) () ")"))))) () ")")) (argument_list "(iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,\n               uVar25)" (( "(") (binary_expression "iVar2 + 0x34" (identifier "iVar2") (+ "+") (number_literal "0x34")) (, ",") (number_literal "0") (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x38)" (( "(") (binary_expression "iVar2 + 0x38" (identifier "iVar2") (+ "+") (number_literal "0x38")) () ")")))) (, ",") (identifier "puVar18") (, ",") (identifier "uVar4") (, ",") (identifier "uVar11") (, ",") (identifier "iVar26") (, ",") (identifier "uVar24") (, ",") (identifier "uVar25") () ")"))) (; ";")) (expression_statement "uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;" (assignment_expression "uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4" (identifier "uVar10") (= "=") (binary_expression "*(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4" (binary_expression "*(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28)" (pointer_expression "*(int *)(iVar2 + 0x2c)" (* "*") (cast_expression "(int *)(iVar2 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x2c)" (( "(") (binary_expression "iVar2 + 0x2c" (identifier "iVar2") (+ "+") (number_literal "0x2c")) () ")")))) (- "-") (pointer_expression "*(int *)(iVar2 + 0x28)" (* "*") (cast_expression "(int *)(iVar2 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x28)" (( "(") (binary_expression "iVar2 + 0x28" (identifier "iVar2") (+ "+") (number_literal "0x28")) () ")"))))) (>> ">>") (number_literal "4"))) (; ";")) (if_statement "if (uVar10 < uVar12) {\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }\n    else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }" (if "if") (parenthesized_expression "(uVar10 < uVar12)" (( "(") (binary_expression "uVar10 < uVar12" (identifier "uVar10") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);\n    }" ({ "{") (ERROR "vector<gold::" (binary_expression "vector<gold" (identifier "vector") (< "<") (identifier "gold")) (: ":") (: ":")) (labeled_statement "Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" (statement_identifier "Archive") (ERROR "::Armap_entry,std::allocator<gold:" (: ":") (: ":") (comma_expression "Armap_entry,std" (identifier "Armap_entry") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<gold" (identifier "allocator") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Archive::Armap_entry>>::\n      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" (statement_identifier "Archive") (ERROR "::Armap_entry>>::\n      _M_default_append((vector<gold:" (: ":") (: ":") (identifier "Armap_entry") (>> ">>") (: ":") (: ":") (identifier "_M_default_append") (( "(") (( "(") (binary_expression "vector<gold" (identifier "vector") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" (statement_identifier "Archive") (ERROR "::Armap_entry,std::allocator<gold:" (: ":") (: ":") (comma_expression "Armap_entry,std" (identifier "Armap_entry") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<gold" (identifier "allocator") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Archive::Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" (statement_identifier "Archive") (: ":") (ERROR ":" (: ":")) (expression_statement "Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10);" (comma_expression "Armap_entry>>\n                         *)(iVar2 + 0x28),uVar12 - uVar10" (binary_expression "Armap_entry>>\n                         *)(iVar2 + 0x28" (identifier "Armap_entry") (>> ">>") (binary_expression "*)(iVar2 + 0x28" (pointer_expression "*)(iVar2" (* "*") (ERROR ")(" () ")") (( "(")) (identifier "iVar2")) (+ "+") (number_literal "0x28"))) (ERROR ")" () ")")) (, ",") (binary_expression "uVar12 - uVar10" (identifier "uVar12") (- "-") (identifier "uVar10"))) (ERROR ")" () ")")) (; ";")))))) (} "}")) (else_clause "else if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }" (else "else") (if_statement "if ((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }" (if "if") (parenthesized_expression "((uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26))" (( "(") (binary_expression "(uVar12 < uVar10) &&\n            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)" (parenthesized_expression "(uVar12 < uVar10)" (( "(") (binary_expression "uVar12 < uVar10" (identifier "uVar12") (< "<") (identifier "uVar10")) () ")")) (&& "&&") (parenthesized_expression "(iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)" (( "(") (comma_expression "iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26" (assignment_expression "iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10" (identifier "iVar26") (= "=") (binary_expression "*(int *)(iVar2 + 0x28) + uVar12 * 0x10" (pointer_expression "*(int *)(iVar2 + 0x28)" (* "*") (cast_expression "(int *)(iVar2 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x28)" (( "(") (binary_expression "iVar2 + 0x28" (identifier "iVar2") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (binary_expression "uVar12 * 0x10" (identifier "uVar12") (* "*") (number_literal "0x10")))) (, ",") (binary_expression "*(int *)(iVar2 + 0x2c) != iVar26" (pointer_expression "*(int *)(iVar2 + 0x2c)" (* "*") (cast_expression "(int *)(iVar2 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x2c)" (( "(") (binary_expression "iVar2 + 0x2c" (identifier "iVar2") (+ "+") (number_literal "0x2c")) () ")")))) (!= "!=") (identifier "iVar26"))) () ")"))) () ")")) (compound_statement "{\n      *(int *)(iVar2 + 0x2c) = iVar26;\n    }" ({ "{") (expression_statement "*(int *)(iVar2 + 0x2c) = iVar26;" (assignment_expression "*(int *)(iVar2 + 0x2c) = iVar26" (pointer_expression "*(int *)(iVar2 + 0x2c)" (* "*") (cast_expression "(int *)(iVar2 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x2c)" (( "(") (binary_expression "iVar2 + 0x2c" (identifier "iVar2") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "iVar26")) (; ";")) (} "}"))))) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar12 != 0) {\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }" (if "if") (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar26 = -1;\n      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;\n      piVar3 = *(int **)(iVar2 + 0x28);\n      uVar20 = 0xffffffff;\n      do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);\nLAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }\n    }" ({ "{") (expression_statement "iVar26 = -1;" (assignment_expression "iVar26 = -1" (identifier "iVar26") (= "=") (number_literal "-1")) (; ";")) (expression_statement "piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;" (assignment_expression "piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4" (identifier "piVar17") (= "=") (binary_expression "*(int **)(iVar2 + 0x28) + uVar12 * 4" (pointer_expression "*(int **)(iVar2 + 0x28)" (* "*") (cast_expression "(int **)(iVar2 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0x28)" (( "(") (binary_expression "iVar2 + 0x28" (identifier "iVar2") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (binary_expression "uVar12 * 4" (identifier "uVar12") (* "*") (number_literal "4")))) (; ";")) (expression_statement "piVar3 = *(int **)(iVar2 + 0x28);" (assignment_expression "piVar3 = *(int **)(iVar2 + 0x28)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(iVar2 + 0x28)" (* "*") (cast_expression "(int **)(iVar2 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0x28)" (( "(") (binary_expression "iVar2 + 0x28" (identifier "iVar2") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "uVar20 = 0xffffffff;" (assignment_expression "uVar20 = 0xffffffff" (identifier "uVar20") (= "=") (number_literal "0xffffffff")) (; ";")) (do_statement "do {\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      } while (piVar17 != piVar5);" (do "do") (compound_statement "{\n        while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }\n        iVar26 = 0;\n        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;\n        uVar20 = uVar14;\n      }" ({ "{") (while_statement "while( true ) {\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          uVar14 = *puVar16;\n          pcVar23 = *(code **)(pcVar21 + 0x374324);\n          piVar3[1] = uVar10;\n          puVar16 = puVar16 + 1;\n          *piVar3 = (int)uVar10 >> 0x1f;\n          piVar5 = piVar3 + 4;\n          piVar3[2] = 0;\n          piVar3[3] = uVar14;\n          iVar6 = (*pcVar23)((int)puVar18 + uVar10);\n          uVar10 = iVar6 + 1 + uVar10;\n          piVar3 = piVar5;\n          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;\n          uVar20 = uVar14;\n          if (piVar17 == piVar5) goto LAB_001519e0;\n        }" ({ "{") (expression_statement "uVar14 = *puVar16;" (assignment_expression "uVar14 = *puVar16" (identifier "uVar14") (= "=") (pointer_expression "*puVar16" (* "*") (identifier "puVar16"))) (; ";")) (expression_statement "pcVar23 = *(code **)(pcVar21 + 0x374324);" (assignment_expression "pcVar23 = *(code **)(pcVar21 + 0x374324)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(pcVar21 + 0x374324)" (* "*") (cast_expression "(code **)(pcVar21 + 0x374324)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0x374324)" (( "(") (binary_expression "pcVar21 + 0x374324" (identifier "pcVar21") (+ "+") (number_literal "0x374324")) () ")"))))) (; ";")) (expression_statement "piVar3[1] = uVar10;" (assignment_expression "piVar3[1] = uVar10" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar3 = (int)uVar10 >> 0x1f;" (assignment_expression "*piVar3 = (int)uVar10 >> 0x1f" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "piVar5 = piVar3 + 4;" (assignment_expression "piVar5 = piVar3 + 4" (identifier "piVar5") (= "=") (binary_expression "piVar3 + 4" (identifier "piVar3") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "piVar3[2] = 0;" (assignment_expression "piVar3[2] = 0" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar3[3] = uVar14;" (assignment_expression "piVar3[3] = uVar14" (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "iVar6 = (*pcVar23)((int)puVar18 + uVar10);" (assignment_expression "iVar6 = (*pcVar23)((int)puVar18 + uVar10)" (identifier "iVar6") (= "=") (call_expression "(*pcVar23)((int)puVar18 + uVar10)" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "((int)puVar18 + uVar10)" (( "(") (binary_expression "(int)puVar18 + uVar10" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (expression_statement "uVar10 = iVar6 + 1 + uVar10;" (assignment_expression "uVar10 = iVar6 + 1 + uVar10" (identifier "uVar10") (= "=") (binary_expression "iVar6 + 1 + uVar10" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar10"))) (; ";")) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" (identifier "piVar3") (= "=") (identifier "piVar5")) (; ";")) (if_statement "if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;" (if "if") (parenthesized_expression "((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20))" (( "(") (binary_expression "(iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)" (parenthesized_expression "(iVar26 != 0)" (( "(") (binary_expression "iVar26 != 0" (identifier "iVar26") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar26 = 0, uVar14 != uVar20)" (( "(") (comma_expression "iVar26 = 0, uVar14 != uVar20" (assignment_expression "iVar26 = 0" (identifier "iVar26") (= "=") (number_literal "0")) (, ",") (binary_expression "uVar14 != uVar20" (identifier "uVar14") (!= "!=") (identifier "uVar20"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar20 = uVar14;" (assignment_expression "uVar20 = uVar14" (identifier "uVar20") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (piVar17 == piVar5) goto LAB_001519e0;" (if "if") (parenthesized_expression "(piVar17 == piVar5)" (( "(") (binary_expression "piVar17 == piVar5" (identifier "piVar17") (== "==") (identifier "piVar5")) () ")")) (goto_statement "goto LAB_001519e0;" (goto "goto") (statement_identifier "LAB_001519e0") (; ";"))) (} "}"))) (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" (identifier "iVar26") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;" (assignment_expression "*(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1" (pointer_expression "*(int *)(iVar2 + 0xd0)" (* "*") (cast_expression "(int *)(iVar2 + 0xd0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xd0)" (( "(") (binary_expression "iVar2 + 0xd0" (identifier "iVar2") (+ "+") (number_literal "0xd0")) () ")")))) (= "=") (binary_expression "*(int *)(iVar2 + 0xd0) + 1" (pointer_expression "*(int *)(iVar2 + 0xd0)" (* "*") (cast_expression "(int *)(iVar2 + 0xd0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xd0)" (( "(") (binary_expression "iVar2 + 0xd0" (identifier "iVar2") (+ "+") (number_literal "0xd0")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar20 = uVar14;" (assignment_expression "uVar20 = uVar14" (identifier "uVar20") (= "=") (identifier "uVar14")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar17 != piVar5)" (( "(") (binary_expression "piVar17 != piVar5" (identifier "piVar17") (!= "!=") (identifier "piVar5")) () ")")) (; ";")) (labeled_statement "LAB_001519e0:\n      if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }" (statement_identifier "LAB_001519e0") (: ":") (if_statement "if (uVar4 < uVar10) {\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }" (if "if") (parenthesized_expression "(uVar4 < uVar10)" (( "(") (binary_expression "uVar4 < uVar10" (identifier "uVar4") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);\n        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));\n        iVar26 = *(int *)(iVar2 + 0x6c);\n        iVar6 = *(int *)(iVar2 + 100);\n        iVar15 = *(int *)(iVar2 + 0x70);\n        iVar19 = *(int *)(iVar2 + 0x68);\n        iVar8 = (iVar26 - iVar6) * 8 + iVar15;\n        uVar4 = iVar8 - iVar19;\n        goto joined_r0x00151ae4;\n      }" ({ "{") (expression_statement "uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);" (assignment_expression "uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0)" (identifier "uVar11") (= "=") (call_expression "(**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0)" (parenthesized_expression "(**(code **)(pcVar21 + 0x3743b8))" (( "(") (pointer_expression "**(code **)(pcVar21 + 0x3743b8)" (* "*") (pointer_expression "*(code **)(pcVar21 + 0x3743b8)" (* "*") (cast_expression "(code **)(pcVar21 + 0x3743b8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0x3743b8)" (( "(") (binary_expression "pcVar21 + 0x3743b8" (identifier "pcVar21") (+ "+") (number_literal "0x3743b8")) () ")"))))) () ")")) (argument_list "(*(int *)(pcVar21 + 0x3701d8) + -0x15d0)" (( "(") (binary_expression "*(int *)(pcVar21 + 0x3701d8) + -0x15d0" (pointer_expression "*(int *)(pcVar21 + 0x3701d8)" (* "*") (cast_expression "(int *)(pcVar21 + 0x3701d8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 0x3701d8)" (( "(") (binary_expression "pcVar21 + 0x3701d8" (identifier "pcVar21") (+ "+") (number_literal "0x3701d8")) () ")")))) (+ "+") (number_literal "-0x15d0")) () ")")))) (; ";")) (expression_statement "(**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));" (call_expression "(**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc))" (parenthesized_expression "(**(code **)(pcVar21 + 0x3701b4))" (( "(") (pointer_expression "**(code **)(pcVar21 + 0x3701b4)" (* "*") (pointer_expression "*(code **)(pcVar21 + 0x3701b4)" (* "*") (cast_expression "(code **)(pcVar21 + 0x3701b4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0x3701b4)" (( "(") (binary_expression "pcVar21 + 0x3701b4" (identifier "pcVar21") (+ "+") (number_literal "0x3701b4")) () ")"))))) () ")")) (argument_list "(uVar11,*(undefined4 *)(iVar2 + 0xc))" (( "(") (identifier "uVar11") (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar26 = *(int *)(iVar2 + 0x6c);" (assignment_expression "iVar26 = *(int *)(iVar2 + 0x6c)" (identifier "iVar26") (= "=") (pointer_expression "*(int *)(iVar2 + 0x6c)" (* "*") (cast_expression "(int *)(iVar2 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x6c)" (( "(") (binary_expression "iVar2 + 0x6c" (identifier "iVar2") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(iVar2 + 100);" (assignment_expression "iVar6 = *(int *)(iVar2 + 100)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar2 + 100)" (* "*") (cast_expression "(int *)(iVar2 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 100)" (( "(") (binary_expression "iVar2 + 100" (identifier "iVar2") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (expression_statement "iVar15 = *(int *)(iVar2 + 0x70);" (assignment_expression "iVar15 = *(int *)(iVar2 + 0x70)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(iVar2 + 0x70)" (* "*") (cast_expression "(int *)(iVar2 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x70)" (( "(") (binary_expression "iVar2 + 0x70" (identifier "iVar2") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "iVar19 = *(int *)(iVar2 + 0x68);" (assignment_expression "iVar19 = *(int *)(iVar2 + 0x68)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(iVar2 + 0x68)" (* "*") (cast_expression "(int *)(iVar2 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x68)" (( "(") (binary_expression "iVar2 + 0x68" (identifier "iVar2") (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (expression_statement "iVar8 = (iVar26 - iVar6) * 8 + iVar15;" (assignment_expression "iVar8 = (iVar26 - iVar6) * 8 + iVar15" (identifier "iVar8") (= "=") (binary_expression "(iVar26 - iVar6) * 8 + iVar15" (binary_expression "(iVar26 - iVar6) * 8" (parenthesized_expression "(iVar26 - iVar6)" (( "(") (binary_expression "iVar26 - iVar6" (identifier "iVar26") (- "-") (identifier "iVar6")) () ")")) (* "*") (number_literal "8")) (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "uVar4 = iVar8 - iVar19;" (assignment_expression "uVar4 = iVar8 - iVar19" (identifier "uVar4") (= "=") (binary_expression "iVar8 - iVar19" (identifier "iVar8") (- "-") (identifier "iVar19"))) (; ";")) (goto_statement "goto joined_r0x00151ae4;" (goto "goto") (statement_identifier "joined_r0x00151ae4") (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar26 = *(int *)(iVar2 + 0x6c);" (assignment_expression "iVar26 = *(int *)(iVar2 + 0x6c)" (identifier "iVar26") (= "=") (pointer_expression "*(int *)(iVar2 + 0x6c)" (* "*") (cast_expression "(int *)(iVar2 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x6c)" (( "(") (binary_expression "iVar2 + 0x6c" (identifier "iVar2") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(iVar2 + 100);" (assignment_expression "iVar6 = *(int *)(iVar2 + 100)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar2 + 100)" (* "*") (cast_expression "(int *)(iVar2 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 100)" (( "(") (binary_expression "iVar2 + 100" (identifier "iVar2") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (expression_statement "iVar15 = *(int *)(iVar2 + 0x70);" (assignment_expression "iVar15 = *(int *)(iVar2 + 0x70)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(iVar2 + 0x70)" (* "*") (cast_expression "(int *)(iVar2 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x70)" (( "(") (binary_expression "iVar2 + 0x70" (identifier "iVar2") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "iVar19 = *(int *)(iVar2 + 0x68);" (assignment_expression "iVar19 = *(int *)(iVar2 + 0x68)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(iVar2 + 0x68)" (* "*") (cast_expression "(int *)(iVar2 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x68)" (( "(") (binary_expression "iVar2 + 0x68" (identifier "iVar2") (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (expression_statement "iVar8 = (iVar26 - iVar6) * 8 + iVar15;" (assignment_expression "iVar8 = (iVar26 - iVar6) * 8 + iVar15" (identifier "iVar8") (= "=") (binary_expression "(iVar26 - iVar6) * 8 + iVar15" (binary_expression "(iVar26 - iVar6) * 8" (parenthesized_expression "(iVar26 - iVar6)" (( "(") (binary_expression "iVar26 - iVar6" (identifier "iVar26") (- "-") (identifier "iVar6")) () ")")) (* "*") (number_literal "8")) (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "uVar4 = iVar8 - iVar19;" (assignment_expression "uVar4 = iVar8 - iVar19" (identifier "uVar4") (= "=") (binary_expression "iVar8 - iVar19" (identifier "iVar8") (- "-") (identifier "iVar19"))) (; ";")) (labeled_statement "joined_r0x00151ae4:\n    if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }" (statement_identifier "joined_r0x00151ae4") (: ":") (if_statement "if (uVar4 <= uVar12) {\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }" (if "if") (parenthesized_expression "(uVar4 <= uVar12)" (( "(") (binary_expression "uVar4 <= uVar12" (identifier "uVar4") (<= "<=") (identifier "uVar12")) () ")")) (compound_statement "{\n      vector<bool,std::allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);\n      return;\n    }" ({ "{") (ERROR "vector<bool,std::" (comma_expression "vector<bool,std" (binary_expression "vector<bool" (identifier "vector") (< "<") (identifier "bool")) (, ",") (identifier "std")) (: ":") (: ":")) (expression_statement "allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);" (binary_expression "allocator<bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0)" (identifier "allocator") (< "<") (binary_expression "bool>>::_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0)" (identifier "bool") (>> ">>") (ERROR "::" (: ":") (: ":")) (call_expression "_M_fill_insert\n                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0)" (identifier "_M_fill_insert") (argument_list "(iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0)" (( "(") (binary_expression "iVar2 + 100" (identifier "iVar2") (+ "+") (number_literal "100")) (, ",") (identifier "iVar26") (, ",") (identifier "iVar15") (, ",") (binary_expression "(iVar19 - iVar8) + uVar12" (parenthesized_expression "(iVar19 - iVar8)" (( "(") (binary_expression "iVar19 - iVar8" (identifier "iVar19") (- "-") (identifier "iVar8")) () ")")) (+ "+") (identifier "uVar12")) (, ",") (number_literal "0") () ")"))))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "uVar12 = uVar12 + iVar19;" (assignment_expression "uVar12 = uVar12 + iVar19" (identifier "uVar12") (= "=") (binary_expression "uVar12 + iVar19" (identifier "uVar12") (+ "+") (identifier "iVar19"))) (; ";")) (expression_statement "uVar4 = uVar12;" (assignment_expression "uVar4 = uVar12" (identifier "uVar4") (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((int)uVar12 < 0) {\n      uVar4 = uVar12 + 0x1f;\n    }" (if "if") (parenthesized_expression "((int)uVar12 < 0)" (( "(") (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      uVar4 = uVar12 + 0x1f;\n    }" ({ "{") (expression_statement "uVar4 = uVar12 + 0x1f;" (assignment_expression "uVar4 = uVar12 + 0x1f" (identifier "uVar4") (= "=") (binary_expression "uVar12 + 0x1f" (identifier "uVar12") (+ "+") (number_literal "0x1f"))) (; ";")) (} "}"))) (expression_statement "iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;" (assignment_expression "iVar6 = iVar6 + ((int)uVar4 >> 5) * 4" (identifier "iVar6") (= "=") (binary_expression "iVar6 + ((int)uVar4 >> 5) * 4" (identifier "iVar6") (+ "+") (binary_expression "((int)uVar4 >> 5) * 4" (parenthesized_expression "((int)uVar4 >> 5)" (( "(") (binary_expression "(int)uVar4 >> 5" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "5")) () ")")) (* "*") (number_literal "4")))) (; ";")) (if_statement "if ((int)uVar12 < 0) {\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }\n    else {\n      uVar12 = uVar12 & 0x8000001f;\n    }" (if "if") (parenthesized_expression "((int)uVar12 < 0)" (( "(") (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n    }" ({ "{") (expression_statement "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;" (assignment_expression "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" (identifier "uVar12") (= "=") (binary_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" (parenthesized_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0)" (( "(") (binary_expression "(uVar12 & 0x8000001f) - 1 | 0xffffffe0" (binary_expression "(uVar12 & 0x8000001f) - 1" (parenthesized_expression "(uVar12 & 0x8000001f)" (( "(") (binary_expression "uVar12 & 0x8000001f" (identifier "uVar12") (& "&") (number_literal "0x8000001f")) () ")")) (- "-") (number_literal "1")) (| "|") (number_literal "0xffffffe0")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      uVar12 = uVar12 & 0x8000001f;\n    }" (else "else") (compound_statement "{\n      uVar12 = uVar12 & 0x8000001f;\n    }" ({ "{") (expression_statement "uVar12 = uVar12 & 0x8000001f;" (assignment_expression "uVar12 = uVar12 & 0x8000001f" (identifier "uVar12") (= "=") (binary_expression "uVar12 & 0x8000001f" (identifier "uVar12") (& "&") (number_literal "0x8000001f"))) (; ";")) (} "}")))) (if_statement "if ((int)uVar12 < 0) {\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }" (if "if") (parenthesized_expression "((int)uVar12 < 0)" (( "(") (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;\n      *(int *)(iVar2 + 0x6c) = iVar6 + -4;\n      return;\n    }" ({ "{") (expression_statement "*(uint *)(iVar2 + 0x70) = uVar12 + 0x20;" (assignment_expression "*(uint *)(iVar2 + 0x70) = uVar12 + 0x20" (pointer_expression "*(uint *)(iVar2 + 0x70)" (* "*") (cast_expression "(uint *)(iVar2 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x70)" (( "(") (binary_expression "iVar2 + 0x70" (identifier "iVar2") (+ "+") (number_literal "0x70")) () ")")))) (= "=") (binary_expression "uVar12 + 0x20" (identifier "uVar12") (+ "+") (number_literal "0x20"))) (; ";")) (expression_statement "*(int *)(iVar2 + 0x6c) = iVar6 + -4;" (assignment_expression "*(int *)(iVar2 + 0x6c) = iVar6 + -4" (pointer_expression "*(int *)(iVar2 + 0x6c)" (* "*") (cast_expression "(int *)(iVar2 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x6c)" (( "(") (binary_expression "iVar2 + 0x6c" (identifier "iVar2") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (binary_expression "iVar6 + -4" (identifier "iVar6") (+ "+") (number_literal "-4"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(uint *)(iVar2 + 0x70) = uVar12;" (assignment_expression "*(uint *)(iVar2 + 0x70) = uVar12" (pointer_expression "*(uint *)(iVar2 + 0x70)" (* "*") (cast_expression "(uint *)(iVar2 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x70)" (( "(") (binary_expression "iVar2 + 0x70" (identifier "iVar2") (+ "+") (number_literal "0x70")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*(int *)(iVar2 + 0x6c) = iVar6;" (assignment_expression "*(int *)(iVar2 + 0x6c) = iVar6" (pointer_expression "*(int *)(iVar2 + 0x6c)" (* "*") (cast_expression "(int *)(iVar2 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x6c)" (( "(") (binary_expression "iVar2 + 0x6c" (identifier "iVar2") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "piVar17 = piVar3 + 2 + uVar12 * 2;" (assignment_expression "piVar17 = piVar3 + 2 + uVar12 * 2" (identifier "piVar17") (= "=") (binary_expression "piVar3 + 2 + uVar12 * 2" (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) (+ "+") (binary_expression "uVar12 * 2" (identifier "uVar12") (* "*") (number_literal "2")))) (; ";")) (expression_statement "uVar4 = (int)piVar3 + (iVar26 - (int)piVar17);" (assignment_expression "uVar4 = (int)piVar3 + (iVar26 - (int)piVar17)" (identifier "uVar4") (= "=") (binary_expression "(int)piVar3 + (iVar26 - (int)piVar17)" (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3")) (+ "+") (parenthesized_expression "(iVar26 - (int)piVar17)" (( "(") (binary_expression "iVar26 - (int)piVar17" (identifier "iVar26") (- "-") (cast_expression "(int)piVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar17"))) () ")")))) (; ";")) (expression_statement "(**(code **)(puVar22 + 0x370bbc))\n            (puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,\n             uVar25);" (call_expression "(**(code **)(puVar22 + 0x370bbc))\n            (puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,\n             uVar25)" (parenthesized_expression "(**(code **)(puVar22 + 0x370bbc))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x370bbc)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x370bbc)" (* "*") (cast_expression "(code **)(puVar22 + 0x370bbc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x370bbc)" (( "(") (binary_expression "puVar22 + 0x370bbc" (identifier "puVar22") (+ "+") (number_literal "0x370bbc")) () ")"))))) () ")")) (argument_list "(puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,\n             uVar25)" (( "(") (binary_expression "puVar9 + 0x34" (identifier "puVar9") (+ "+") (number_literal "0x34")) (, ",") (number_literal "0") (, ",") (pointer_expression "*(undefined4 *)(puVar9 + 0x38)" (* "*") (cast_expression "(undefined4 *)(puVar9 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x38)" (( "(") (binary_expression "puVar9 + 0x38" (identifier "puVar9") (+ "+") (number_literal "0x38")) () ")")))) (, ",") (identifier "piVar17") (, ",") (identifier "uVar4") (, ",") (identifier "param_4") (, ",") (identifier "iVar2") (, ",") (identifier "uVar24") (, ",") (identifier "uVar25") () ")"))) (; ";")) (expression_statement "uVar10 = *(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4;" (assignment_expression "uVar10 = *(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4" (identifier "uVar10") (= "=") (binary_expression "*(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4" (binary_expression "*(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28)" (pointer_expression "*(int *)(puVar9 + 0x2c)" (* "*") (cast_expression "(int *)(puVar9 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x2c)" (( "(") (binary_expression "puVar9 + 0x2c" (identifier "puVar9") (+ "+") (number_literal "0x2c")) () ")")))) (- "-") (pointer_expression "*(int *)(puVar9 + 0x28)" (* "*") (cast_expression "(int *)(puVar9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x28)" (( "(") (binary_expression "puVar9 + 0x28" (identifier "puVar9") (+ "+") (number_literal "0x28")) () ")"))))) (>> ">>") (number_literal "4"))) (; ";")) (if_statement "if (uVar10 < uVar12) {\n    vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);\n  }\n  else if ((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }" (if "if") (parenthesized_expression "(uVar10 < uVar12)" (( "(") (binary_expression "uVar10 < uVar12" (identifier "uVar10") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n    vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);\n  }" ({ "{") (ERROR "vector<gold::" (binary_expression "vector<gold" (identifier "vector") (< "<") (identifier "gold")) (: ":") (: ":")) (labeled_statement "Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" (statement_identifier "Archive") (ERROR "::Armap_entry,std::allocator<gold:" (: ":") (: ":") (comma_expression "Armap_entry,std" (identifier "Armap_entry") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<gold" (identifier "allocator") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Archive::Armap_entry>>::_M_default_append\n              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" (statement_identifier "Archive") (ERROR "::Armap_entry>>::_M_default_append\n              ((vector<gold:" (: ":") (: ":") (identifier "Armap_entry") (>> ">>") (: ":") (: ":") (identifier "_M_default_append") (( "(") (( "(") (binary_expression "vector<gold" (identifier "vector") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" (statement_identifier "Archive") (ERROR "::Armap_entry,std::allocator<gold:" (: ":") (: ":") (comma_expression "Armap_entry,std" (identifier "Armap_entry") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<gold" (identifier "allocator") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Archive::Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" (statement_identifier "Archive") (: ":") (ERROR ":" (: ":")) (expression_statement "Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10);" (comma_expression "Armap_entry>> *)\n               (puVar9 + 0x28),uVar12 - uVar10" (binary_expression "Armap_entry>> *)\n               (puVar9 + 0x28)" (identifier "Armap_entry") (>> ">>") (pointer_expression "*)\n               (puVar9 + 0x28)" (* "*") (ERROR ")" () ")")) (parenthesized_expression "(puVar9 + 0x28)" (( "(") (binary_expression "puVar9 + 0x28" (identifier "puVar9") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (binary_expression "uVar12 - uVar10" (identifier "uVar12") (- "-") (identifier "uVar10"))) (ERROR ")" () ")")) (; ";")))))) (} "}")) (else_clause "else if ((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }" (else "else") (if_statement "if ((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }" (if "if") (parenthesized_expression "((uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26))" (( "(") (binary_expression "(uVar12 < uVar10) &&\n          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)" (parenthesized_expression "(uVar12 < uVar10)" (( "(") (binary_expression "uVar12 < uVar10" (identifier "uVar12") (< "<") (identifier "uVar10")) () ")")) (&& "&&") (parenthesized_expression "(iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)" (( "(") (comma_expression "iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26" (assignment_expression "iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10" (identifier "iVar26") (= "=") (binary_expression "*(int *)(puVar9 + 0x28) + uVar12 * 0x10" (pointer_expression "*(int *)(puVar9 + 0x28)" (* "*") (cast_expression "(int *)(puVar9 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x28)" (( "(") (binary_expression "puVar9 + 0x28" (identifier "puVar9") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (binary_expression "uVar12 * 0x10" (identifier "uVar12") (* "*") (number_literal "0x10")))) (, ",") (binary_expression "*(int *)(puVar9 + 0x2c) != iVar26" (pointer_expression "*(int *)(puVar9 + 0x2c)" (* "*") (cast_expression "(int *)(puVar9 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x2c)" (( "(") (binary_expression "puVar9 + 0x2c" (identifier "puVar9") (+ "+") (number_literal "0x2c")) () ")")))) (!= "!=") (identifier "iVar26"))) () ")"))) () ")")) (compound_statement "{\n    *(int *)(puVar9 + 0x2c) = iVar26;\n  }" ({ "{") (expression_statement "*(int *)(puVar9 + 0x2c) = iVar26;" (assignment_expression "*(int *)(puVar9 + 0x2c) = iVar26" (pointer_expression "*(int *)(puVar9 + 0x2c)" (* "*") (cast_expression "(int *)(puVar9 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x2c)" (( "(") (binary_expression "puVar9 + 0x2c" (identifier "puVar9") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "iVar26")) (; ";")) (} "}"))))) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar12 != 0) {\n    piVar13 = *(int **)(puVar9 + 0x28);\n    piVar5 = piVar13 + uVar12 * 4;\n    piVar3 = piVar3 + 2;\n    iVar26 = -1;\n    iVar2 = -1;\n    do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    } while (piVar5 != piVar13);\nLAB_00151668:\n    if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }\n  }" (if "if") (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    piVar13 = *(int **)(puVar9 + 0x28);\n    piVar5 = piVar13 + uVar12 * 4;\n    piVar3 = piVar3 + 2;\n    iVar26 = -1;\n    iVar2 = -1;\n    do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    } while (piVar5 != piVar13);\nLAB_00151668:\n    if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }\n  }" ({ "{") (expression_statement "piVar13 = *(int **)(puVar9 + 0x28);" (assignment_expression "piVar13 = *(int **)(puVar9 + 0x28)" (identifier "piVar13") (= "=") (pointer_expression "*(int **)(puVar9 + 0x28)" (* "*") (cast_expression "(int **)(puVar9 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + 0x28)" (( "(") (binary_expression "puVar9 + 0x28" (identifier "puVar9") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "piVar5 = piVar13 + uVar12 * 4;" (assignment_expression "piVar5 = piVar13 + uVar12 * 4" (identifier "piVar5") (= "=") (binary_expression "piVar13 + uVar12 * 4" (identifier "piVar13") (+ "+") (binary_expression "uVar12 * 4" (identifier "uVar12") (* "*") (number_literal "4")))) (; ";")) (expression_statement "piVar3 = piVar3 + 2;" (assignment_expression "piVar3 = piVar3 + 2" (identifier "piVar3") (= "=") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar26 = -1;" (assignment_expression "iVar26 = -1" (identifier "iVar26") (= "=") (number_literal "-1")) (; ";")) (expression_statement "iVar2 = -1;" (assignment_expression "iVar2 = -1" (identifier "iVar2") (= "=") (number_literal "-1")) (; ";")) (do_statement "do {\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    } while (piVar5 != piVar13);" (do "do") (compound_statement "{\n      while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }\n      piVar13 = piVar13 + 4;\n      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;\n      piVar3 = piVar3 + 2;\n      iVar26 = iVar19;\n      iVar2 = iVar15;\n    }" ({ "{") (while_statement "while( true ) {\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        pcVar21 = *(code **)(puVar22 + 0x3746b8);\n        piVar13[1] = uVar10;\n        *piVar13 = (int)uVar10 >> 0x1f;\n        iVar15 = *piVar3;\n        iVar19 = piVar3[1];\n        piVar13[2] = iVar15;\n        piVar13[3] = iVar19;\n        iVar6 = (*pcVar21)((int)piVar17 + uVar10);\n        uVar10 = iVar6 + 1 + uVar10;\n        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;\n        piVar13 = piVar13 + 4;\n        piVar3 = piVar3 + 2;\n        iVar26 = iVar19;\n        iVar2 = iVar15;\n        if (piVar5 == piVar13) goto LAB_00151668;\n      }" ({ "{") (expression_statement "pcVar21 = *(code **)(puVar22 + 0x3746b8);" (assignment_expression "pcVar21 = *(code **)(puVar22 + 0x3746b8)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(puVar22 + 0x3746b8)" (* "*") (cast_expression "(code **)(puVar22 + 0x3746b8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x3746b8)" (( "(") (binary_expression "puVar22 + 0x3746b8" (identifier "puVar22") (+ "+") (number_literal "0x3746b8")) () ")"))))) (; ";")) (expression_statement "piVar13[1] = uVar10;" (assignment_expression "piVar13[1] = uVar10" (subscript_expression "piVar13[1]" (identifier "piVar13") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "*piVar13 = (int)uVar10 >> 0x1f;" (assignment_expression "*piVar13 = (int)uVar10 >> 0x1f" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (binary_expression "(int)uVar10 >> 0x1f" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "iVar15 = *piVar3;" (assignment_expression "iVar15 = *piVar3" (identifier "iVar15") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "iVar19 = piVar3[1];" (assignment_expression "iVar19 = piVar3[1]" (identifier "iVar19") (= "=") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar13[2] = iVar15;" (assignment_expression "piVar13[2] = iVar15" (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "piVar13[3] = iVar19;" (assignment_expression "piVar13[3] = iVar19" (subscript_expression "piVar13[3]" (identifier "piVar13") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "iVar6 = (*pcVar21)((int)piVar17 + uVar10);" (assignment_expression "iVar6 = (*pcVar21)((int)piVar17 + uVar10)" (identifier "iVar6") (= "=") (call_expression "(*pcVar21)((int)piVar17 + uVar10)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "((int)piVar17 + uVar10)" (( "(") (binary_expression "(int)piVar17 + uVar10" (cast_expression "(int)piVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar17")) (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (expression_statement "uVar10 = iVar6 + 1 + uVar10;" (assignment_expression "uVar10 = iVar6 + 1 + uVar10" (identifier "uVar10") (= "=") (binary_expression "iVar6 + 1 + uVar10" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar10"))) (; ";")) (if_statement "if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;" (if "if") (parenthesized_expression "((iVar15 != iVar2) || (iVar19 != iVar26))" (( "(") (binary_expression "(iVar15 != iVar2) || (iVar19 != iVar26)" (parenthesized_expression "(iVar15 != iVar2)" (( "(") (binary_expression "iVar15 != iVar2" (identifier "iVar15") (!= "!=") (identifier "iVar2")) () ")")) (|| "||") (parenthesized_expression "(iVar19 != iVar26)" (( "(") (binary_expression "iVar19 != iVar26" (identifier "iVar19") (!= "!=") (identifier "iVar26")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar13 = piVar13 + 4;" (assignment_expression "piVar13 = piVar13 + 4" (identifier "piVar13") (= "=") (binary_expression "piVar13 + 4" (identifier "piVar13") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "piVar3 = piVar3 + 2;" (assignment_expression "piVar3 = piVar3 + 2" (identifier "piVar3") (= "=") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar26 = iVar19;" (assignment_expression "iVar26 = iVar19" (identifier "iVar26") (= "=") (identifier "iVar19")) (; ";")) (expression_statement "iVar2 = iVar15;" (assignment_expression "iVar2 = iVar15" (identifier "iVar2") (= "=") (identifier "iVar15")) (; ";")) (if_statement "if (piVar5 == piVar13) goto LAB_00151668;" (if "if") (parenthesized_expression "(piVar5 == piVar13)" (( "(") (binary_expression "piVar5 == piVar13" (identifier "piVar5") (== "==") (identifier "piVar13")) () ")")) (goto_statement "goto LAB_00151668;" (goto "goto") (statement_identifier "LAB_00151668") (; ";"))) (} "}"))) (expression_statement "piVar13 = piVar13 + 4;" (assignment_expression "piVar13 = piVar13 + 4" (identifier "piVar13") (= "=") (binary_expression "piVar13 + 4" (identifier "piVar13") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;" (assignment_expression "*(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1" (pointer_expression "*(int *)(puVar9 + 0xd0)" (* "*") (cast_expression "(int *)(puVar9 + 0xd0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0xd0)" (( "(") (binary_expression "puVar9 + 0xd0" (identifier "puVar9") (+ "+") (number_literal "0xd0")) () ")")))) (= "=") (binary_expression "*(int *)(puVar9 + 0xd0) + 1" (pointer_expression "*(int *)(puVar9 + 0xd0)" (* "*") (cast_expression "(int *)(puVar9 + 0xd0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0xd0)" (( "(") (binary_expression "puVar9 + 0xd0" (identifier "puVar9") (+ "+") (number_literal "0xd0")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar3 = piVar3 + 2;" (assignment_expression "piVar3 = piVar3 + 2" (identifier "piVar3") (= "=") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar26 = iVar19;" (assignment_expression "iVar26 = iVar19" (identifier "iVar26") (= "=") (identifier "iVar19")) (; ";")) (expression_statement "iVar2 = iVar15;" (assignment_expression "iVar2 = iVar15" (identifier "iVar2") (= "=") (identifier "iVar15")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar5 != piVar13)" (( "(") (binary_expression "piVar5 != piVar13" (identifier "piVar5") (!= "!=") (identifier "piVar13")) () ")")) (; ";")) (labeled_statement "LAB_00151668:\n    if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }" (statement_identifier "LAB_00151668") (: ":") (if_statement "if (uVar4 < uVar10) {\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }" (if "if") (parenthesized_expression "(uVar4 < uVar10)" (( "(") (binary_expression "uVar4 < uVar10" (identifier "uVar4") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);\n      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));\n      iVar26 = *(int *)(puVar9 + 0x6c);\n      iVar2 = *(int *)(puVar9 + 100);\n      iVar6 = *(int *)(puVar9 + 0x70);\n      iVar15 = *(int *)(puVar9 + 0x68);\n      iVar19 = (iVar26 - iVar2) * 8 + iVar6;\n      uVar4 = iVar19 - iVar15;\n      goto joined_r0x001516a0;\n    }" ({ "{") (expression_statement "uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);" (assignment_expression "uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0)" (identifier "uVar11") (= "=") (call_expression "(**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0)" (parenthesized_expression "(**(code **)(puVar22 + 0x37474c))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x37474c)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x37474c)" (* "*") (cast_expression "(code **)(puVar22 + 0x37474c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x37474c)" (( "(") (binary_expression "puVar22 + 0x37474c" (identifier "puVar22") (+ "+") (number_literal "0x37474c")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar22 + 0x37056c) + -0x15d0)" (( "(") (binary_expression "*(int *)(puVar22 + 0x37056c) + -0x15d0" (pointer_expression "*(int *)(puVar22 + 0x37056c)" (* "*") (cast_expression "(int *)(puVar22 + 0x37056c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 0x37056c)" (( "(") (binary_expression "puVar22 + 0x37056c" (identifier "puVar22") (+ "+") (number_literal "0x37056c")) () ")")))) (+ "+") (number_literal "-0x15d0")) () ")")))) (; ";")) (expression_statement "(**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x370548))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x370548)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x370548)" (* "*") (cast_expression "(code **)(puVar22 + 0x370548)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x370548)" (( "(") (binary_expression "puVar22 + 0x370548" (identifier "puVar22") (+ "+") (number_literal "0x370548")) () ")"))))) () ")")) (argument_list "(uVar11,*(undefined4 *)(puVar9 + 0xc))" (( "(") (identifier "uVar11") (, ",") (pointer_expression "*(undefined4 *)(puVar9 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar9 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0xc)" (( "(") (binary_expression "puVar9 + 0xc" (identifier "puVar9") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar26 = *(int *)(puVar9 + 0x6c);" (assignment_expression "iVar26 = *(int *)(puVar9 + 0x6c)" (identifier "iVar26") (= "=") (pointer_expression "*(int *)(puVar9 + 0x6c)" (* "*") (cast_expression "(int *)(puVar9 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x6c)" (( "(") (binary_expression "puVar9 + 0x6c" (identifier "puVar9") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar9 + 100);" (assignment_expression "iVar2 = *(int *)(puVar9 + 100)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar9 + 100)" (* "*") (cast_expression "(int *)(puVar9 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 100)" (( "(") (binary_expression "puVar9 + 100" (identifier "puVar9") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(puVar9 + 0x70);" (assignment_expression "iVar6 = *(int *)(puVar9 + 0x70)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(puVar9 + 0x70)" (* "*") (cast_expression "(int *)(puVar9 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x70)" (( "(") (binary_expression "puVar9 + 0x70" (identifier "puVar9") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar9 + 0x68);" (assignment_expression "iVar15 = *(int *)(puVar9 + 0x68)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar9 + 0x68)" (* "*") (cast_expression "(int *)(puVar9 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x68)" (( "(") (binary_expression "puVar9 + 0x68" (identifier "puVar9") (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (expression_statement "iVar19 = (iVar26 - iVar2) * 8 + iVar6;" (assignment_expression "iVar19 = (iVar26 - iVar2) * 8 + iVar6" (identifier "iVar19") (= "=") (binary_expression "(iVar26 - iVar2) * 8 + iVar6" (binary_expression "(iVar26 - iVar2) * 8" (parenthesized_expression "(iVar26 - iVar2)" (( "(") (binary_expression "iVar26 - iVar2" (identifier "iVar26") (- "-") (identifier "iVar2")) () ")")) (* "*") (number_literal "8")) (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "uVar4 = iVar19 - iVar15;" (assignment_expression "uVar4 = iVar19 - iVar15" (identifier "uVar4") (= "=") (binary_expression "iVar19 - iVar15" (identifier "iVar19") (- "-") (identifier "iVar15"))) (; ";")) (goto_statement "goto joined_r0x001516a0;" (goto "goto") (statement_identifier "joined_r0x001516a0") (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar26 = *(int *)(puVar9 + 0x6c);" (assignment_expression "iVar26 = *(int *)(puVar9 + 0x6c)" (identifier "iVar26") (= "=") (pointer_expression "*(int *)(puVar9 + 0x6c)" (* "*") (cast_expression "(int *)(puVar9 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x6c)" (( "(") (binary_expression "puVar9 + 0x6c" (identifier "puVar9") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar9 + 100);" (assignment_expression "iVar2 = *(int *)(puVar9 + 100)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar9 + 100)" (* "*") (cast_expression "(int *)(puVar9 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 100)" (( "(") (binary_expression "puVar9 + 100" (identifier "puVar9") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(puVar9 + 0x70);" (assignment_expression "iVar6 = *(int *)(puVar9 + 0x70)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(puVar9 + 0x70)" (* "*") (cast_expression "(int *)(puVar9 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x70)" (( "(") (binary_expression "puVar9 + 0x70" (identifier "puVar9") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar9 + 0x68);" (assignment_expression "iVar15 = *(int *)(puVar9 + 0x68)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar9 + 0x68)" (* "*") (cast_expression "(int *)(puVar9 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x68)" (( "(") (binary_expression "puVar9 + 0x68" (identifier "puVar9") (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (expression_statement "iVar19 = (iVar26 - iVar2) * 8 + iVar6;" (assignment_expression "iVar19 = (iVar26 - iVar2) * 8 + iVar6" (identifier "iVar19") (= "=") (binary_expression "(iVar26 - iVar2) * 8 + iVar6" (binary_expression "(iVar26 - iVar2) * 8" (parenthesized_expression "(iVar26 - iVar2)" (( "(") (binary_expression "iVar26 - iVar2" (identifier "iVar26") (- "-") (identifier "iVar2")) () ")")) (* "*") (number_literal "8")) (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "uVar4 = iVar19 - iVar15;" (assignment_expression "uVar4 = iVar19 - iVar15" (identifier "uVar4") (= "=") (binary_expression "iVar19 - iVar15" (identifier "iVar19") (- "-") (identifier "iVar15"))) (; ";")) (labeled_statement "joined_r0x001516a0:\n  if (uVar4 <= uVar12) {\n    vector<bool,std::allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);\n    return;\n  }" (statement_identifier "joined_r0x001516a0") (: ":") (if_statement "if (uVar4 <= uVar12) {\n    vector<bool,std::allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);\n    return;\n  }" (if "if") (parenthesized_expression "(uVar4 <= uVar12)" (( "(") (binary_expression "uVar4 <= uVar12" (identifier "uVar4") (<= "<=") (identifier "uVar12")) () ")")) (compound_statement "{\n    vector<bool,std::allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);\n    return;\n  }" ({ "{") (ERROR "vector<bool,std::" (comma_expression "vector<bool,std" (binary_expression "vector<bool" (identifier "vector") (< "<") (identifier "bool")) (, ",") (identifier "std")) (: ":") (: ":")) (expression_statement "allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);" (binary_expression "allocator<bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0)" (identifier "allocator") (< "<") (binary_expression "bool>>::_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0)" (identifier "bool") (>> ">>") (ERROR "::" (: ":") (: ":")) (call_expression "_M_fill_insert\n              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0)" (identifier "_M_fill_insert") (argument_list "(puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0)" (( "(") (binary_expression "puVar9 + 100" (identifier "puVar9") (+ "+") (number_literal "100")) (, ",") (identifier "iVar26") (, ",") (identifier "iVar6") (, ",") (binary_expression "(iVar15 - iVar19) + uVar12" (parenthesized_expression "(iVar15 - iVar19)" (( "(") (binary_expression "iVar15 - iVar19" (identifier "iVar15") (- "-") (identifier "iVar19")) () ")")) (+ "+") (identifier "uVar12")) (, ",") (number_literal "0") () ")"))))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "uVar12 = uVar12 + iVar15;" (assignment_expression "uVar12 = uVar12 + iVar15" (identifier "uVar12") (= "=") (binary_expression "uVar12 + iVar15" (identifier "uVar12") (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "uVar4 = uVar12;" (assignment_expression "uVar4 = uVar12" (identifier "uVar4") (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((int)uVar12 < 0) {\n    uVar4 = uVar12 + 0x1f;\n  }" (if "if") (parenthesized_expression "((int)uVar12 < 0)" (( "(") (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = uVar12 + 0x1f;\n  }" ({ "{") (expression_statement "uVar4 = uVar12 + 0x1f;" (assignment_expression "uVar4 = uVar12 + 0x1f" (identifier "uVar4") (= "=") (binary_expression "uVar12 + 0x1f" (identifier "uVar12") (+ "+") (number_literal "0x1f"))) (; ";")) (} "}"))) (expression_statement "iVar2 = iVar2 + ((int)uVar4 >> 5) * 4;" (assignment_expression "iVar2 = iVar2 + ((int)uVar4 >> 5) * 4" (identifier "iVar2") (= "=") (binary_expression "iVar2 + ((int)uVar4 >> 5) * 4" (identifier "iVar2") (+ "+") (binary_expression "((int)uVar4 >> 5) * 4" (parenthesized_expression "((int)uVar4 >> 5)" (( "(") (binary_expression "(int)uVar4 >> 5" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "5")) () ")")) (* "*") (number_literal "4")))) (; ";")) (if_statement "if ((int)uVar12 < 0) {\n    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n  }\n  else {\n    uVar12 = uVar12 & 0x8000001f;\n  }" (if "if") (parenthesized_expression "((int)uVar12 < 0)" (( "(") (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;\n  }" ({ "{") (expression_statement "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;" (assignment_expression "uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" (identifier "uVar12") (= "=") (binary_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1" (parenthesized_expression "((uVar12 & 0x8000001f) - 1 | 0xffffffe0)" (( "(") (binary_expression "(uVar12 & 0x8000001f) - 1 | 0xffffffe0" (binary_expression "(uVar12 & 0x8000001f) - 1" (parenthesized_expression "(uVar12 & 0x8000001f)" (( "(") (binary_expression "uVar12 & 0x8000001f" (identifier "uVar12") (& "&") (number_literal "0x8000001f")) () ")")) (- "-") (number_literal "1")) (| "|") (number_literal "0xffffffe0")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    uVar12 = uVar12 & 0x8000001f;\n  }" (else "else") (compound_statement "{\n    uVar12 = uVar12 & 0x8000001f;\n  }" ({ "{") (expression_statement "uVar12 = uVar12 & 0x8000001f;" (assignment_expression "uVar12 = uVar12 & 0x8000001f" (identifier "uVar12") (= "=") (binary_expression "uVar12 & 0x8000001f" (identifier "uVar12") (& "&") (number_literal "0x8000001f"))) (; ";")) (} "}")))) (if_statement "if ((int)uVar12 < 0) {\n    *(uint *)(puVar9 + 0x70) = uVar12 + 0x20;\n    *(int *)(puVar9 + 0x6c) = iVar2 + -4;\n    return;\n  }" (if "if") (parenthesized_expression "((int)uVar12 < 0)" (( "(") (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    *(uint *)(puVar9 + 0x70) = uVar12 + 0x20;\n    *(int *)(puVar9 + 0x6c) = iVar2 + -4;\n    return;\n  }" ({ "{") (expression_statement "*(uint *)(puVar9 + 0x70) = uVar12 + 0x20;" (assignment_expression "*(uint *)(puVar9 + 0x70) = uVar12 + 0x20" (pointer_expression "*(uint *)(puVar9 + 0x70)" (* "*") (cast_expression "(uint *)(puVar9 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x70)" (( "(") (binary_expression "puVar9 + 0x70" (identifier "puVar9") (+ "+") (number_literal "0x70")) () ")")))) (= "=") (binary_expression "uVar12 + 0x20" (identifier "uVar12") (+ "+") (number_literal "0x20"))) (; ";")) (expression_statement "*(int *)(puVar9 + 0x6c) = iVar2 + -4;" (assignment_expression "*(int *)(puVar9 + 0x6c) = iVar2 + -4" (pointer_expression "*(int *)(puVar9 + 0x6c)" (* "*") (cast_expression "(int *)(puVar9 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x6c)" (( "(") (binary_expression "puVar9 + 0x6c" (identifier "puVar9") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (binary_expression "iVar2 + -4" (identifier "iVar2") (+ "+") (number_literal "-4"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(uint *)(puVar9 + 0x70) = uVar12;" (assignment_expression "*(uint *)(puVar9 + 0x70) = uVar12" (pointer_expression "*(uint *)(puVar9 + 0x70)" (* "*") (cast_expression "(uint *)(puVar9 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x70)" (( "(") (binary_expression "puVar9 + 0x70" (identifier "puVar9") (+ "+") (number_literal "0x70")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*(int *)(puVar9 + 0x6c) = iVar2;" (assignment_expression "*(int *)(puVar9 + 0x6c) = iVar2" (pointer_expression "*(int *)(puVar9 + 0x6c)" (* "*") (cast_expression "(int *)(puVar9 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x6c)" (( "(") (binary_expression "puVar9 + 0x6c" (identifier "puVar9") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (return_statement "return;" (return "return") (; ";")) (ERROR "}" (} "}"))
(translation_unit (declaration type: (primitive_type) declarator: (ms_call_modifier) (ERROR (identifier) (identifier) (identifier) (primitive_type)) declarator: (pointer_declarator (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier))) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier) (identifier) (identifier)) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (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 (identifier) (identifier) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (subscript_expression argument: (identifier) index: (number_literal)))))) right: (number_literal))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))) right: (number_literal))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (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))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (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))))) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (ERROR (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 (identifier) (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) (expression_statement (comma_expression left: (binary_expression left: (identifier) right: (binary_expression left: (pointer_expression (ERROR) argument: (identifier)) right: (number_literal))) (ERROR) right: (binary_expression left: (identifier) right: (identifier))) (ERROR))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (number_literal))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (identifier)))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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)) 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)) 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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) 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)) 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)) 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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (ERROR (comma_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) (expression_statement (binary_expression left: (identifier) right: (binary_expression left: (identifier) (ERROR) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)) (number_literal)))))) (return_statement)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (number_literal))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (return_statement))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (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))))) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (ERROR (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 (identifier) (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) (expression_statement (comma_expression left: (binary_expression left: (identifier) right: (pointer_expression (ERROR) argument: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (identifier))) (ERROR))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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)))) (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: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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)) 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)) 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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) 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)) 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)) 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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (ERROR (comma_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) (expression_statement (binary_expression left: (identifier) right: (binary_expression left: (identifier) (ERROR) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)) (number_literal)))))) (return_statement)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (number_literal))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (return_statement))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (return_statement) (ERROR))

/* void std::string::MASKED(char*, char*, std::forward_iterator_tag) */

void __thiscall
std::string::MASKED(string *this,undefined1 *param_1,int param_2,undefined4 param_4)

{
  undefined1 *puVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  int *piVar5;
  int iVar6;
  uint *puVar7;
  int iVar8;
  undefined *puVar9;
  uint uVar10;
  undefined4 uVar11;
  uint uVar12;
  int *piVar13;
  uint uVar14;
  int iVar15;
  uint *puVar16;
  int *piVar17;
  uint *puVar18;
  int iVar19;
  uint uVar20;
  code *pcVar21;
  undefined *puVar22;
  code *pcVar23;
  undefined4 uVar24;
  undefined4 uVar25;
  int iVar26;
  uint local_18 [2];
  
  iVar26 = 0x4c9240;
  if (param_1 != (undefined1 *)0x0) {
    uVar12 = param_2 - (int)param_1;
    local_18[0] = uVar12;
    if (0xf < uVar12) {
      iVar2 = (*(code *)PTR__M_create_004c141c)(this,local_18,0);
      *(int *)this = iVar2;
      *(uint *)(this + 8) = local_18[0];
      pcVar21 = *(code **)(iVar26 + -0x3698);
LAB_00151454:
      (*pcVar21)(iVar2,param_1,uVar12);
      *(uint *)(this + 4) = local_18[0];
      *(undefined1 *)(*(int *)this + local_18[0]) = 0;
      return;
    }
    if (uVar12 == 1) {
      **(undefined1 **)this = *param_1;
      puVar1 = (undefined1 *)(*(int *)this + 1);
    }
    else {
      puVar1 = *(undefined1 **)this + uVar12;
      if (uVar12 != 0) {
        iVar2 = (int)puVar1 - uVar12;
        pcVar21 = (code *)PTR_memcpy_004c5ba8;
        goto LAB_00151454;
      }
    }
    *(uint *)(this + 4) = uVar12;
    *puVar1 = 0;
    return;
  }
  if (param_2 == 0) {
    *(undefined4 *)(this + 4) = 0;
    **(undefined1 **)this = 0;
    return;
  }
  puVar9 = PTR_s_ral_options14Struct_no_crefE_004c127c + -0xa00;
  puVar22 = PTR___throw_logic_error_004c12d8;
  (*(code *)PTR___throw_logic_error_004c12d8)();
  uVar11 = 0;
  uVar25 = 0;
  uVar24 = 1;
  iVar2 = iVar26;
  piVar3 = (int *)(**(code **)(puVar22 + 0x370690))(*(int *)(puVar9 + 0x24) + 0x20);
  uVar12 = piVar3[1];
  if (*piVar3 != 0) {
    pcVar21 = *(code **)(puVar22 + 0x37054c);
    iVar2 = *(int *)(puVar22 + 0x36fd98) + 0x4584;
    (*pcVar21)(iVar2,0xc0);
    uVar25 = 0;
    uVar24 = 1;
    iVar26 = param_2;
    puVar7 = (uint *)(**(code **)(pcVar21 + 0x3702fc))(*(int *)(iVar2 + 0x24) + 0x20);
    uVar12 = *puVar7;
    puVar16 = puVar7 + 1;
    puVar18 = puVar16 + uVar12;
    uVar4 = (int)puVar7 + (param_2 - (int)puVar18);
    (**(code **)(pcVar21 + 0x370828))
              (iVar2 + 0x34,0,*(undefined4 *)(iVar2 + 0x38),puVar18,uVar4,uVar11,iVar26,uVar24,
               uVar25);
    uVar10 = *(int *)(iVar2 + 0x2c) - *(int *)(iVar2 + 0x28) >> 4;
    if (uVar10 < uVar12) {
      vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::
      _M_default_append((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>
                         *)(iVar2 + 0x28),uVar12 - uVar10);
    }
    else if ((uVar12 < uVar10) &&
            (iVar26 = *(int *)(iVar2 + 0x28) + uVar12 * 0x10, *(int *)(iVar2 + 0x2c) != iVar26)) {
      *(int *)(iVar2 + 0x2c) = iVar26;
    }
    uVar10 = 0;
    if (uVar12 != 0) {
      iVar26 = -1;
      piVar17 = *(int **)(iVar2 + 0x28) + uVar12 * 4;
      piVar3 = *(int **)(iVar2 + 0x28);
      uVar20 = 0xffffffff;
      do {
        while( true ) {
          uVar14 = *puVar16;
          pcVar23 = *(code **)(pcVar21 + 0x374324);
          piVar3[1] = uVar10;
          puVar16 = puVar16 + 1;
          *piVar3 = (int)uVar10 >> 0x1f;
          piVar5 = piVar3 + 4;
          piVar3[2] = 0;
          piVar3[3] = uVar14;
          iVar6 = (*pcVar23)((int)puVar18 + uVar10);
          uVar10 = iVar6 + 1 + uVar10;
          piVar3 = piVar5;
          if ((iVar26 != 0) || (iVar26 = 0, uVar14 != uVar20)) break;
          uVar20 = uVar14;
          if (piVar17 == piVar5) goto LAB_001519e0;
        }
        iVar26 = 0;
        *(int *)(iVar2 + 0xd0) = *(int *)(iVar2 + 0xd0) + 1;
        uVar20 = uVar14;
      } while (piVar17 != piVar5);
LAB_001519e0:
      if (uVar4 < uVar10) {
        uVar11 = (**(code **)(pcVar21 + 0x3743b8))(*(int *)(pcVar21 + 0x3701d8) + -0x15d0);
        (**(code **)(pcVar21 + 0x3701b4))(uVar11,*(undefined4 *)(iVar2 + 0xc));
        iVar26 = *(int *)(iVar2 + 0x6c);
        iVar6 = *(int *)(iVar2 + 100);
        iVar15 = *(int *)(iVar2 + 0x70);
        iVar19 = *(int *)(iVar2 + 0x68);
        iVar8 = (iVar26 - iVar6) * 8 + iVar15;
        uVar4 = iVar8 - iVar19;
        goto joined_r0x00151ae4;
      }
    }
    iVar26 = *(int *)(iVar2 + 0x6c);
    iVar6 = *(int *)(iVar2 + 100);
    iVar15 = *(int *)(iVar2 + 0x70);
    iVar19 = *(int *)(iVar2 + 0x68);
    iVar8 = (iVar26 - iVar6) * 8 + iVar15;
    uVar4 = iVar8 - iVar19;
joined_r0x00151ae4:
    if (uVar4 <= uVar12) {
      vector<bool,std::allocator<bool>>::_M_fill_insert
                (iVar2 + 100,iVar26,iVar15,(iVar19 - iVar8) + uVar12,0);
      return;
    }
    uVar12 = uVar12 + iVar19;
    uVar4 = uVar12;
    if ((int)uVar12 < 0) {
      uVar4 = uVar12 + 0x1f;
    }
    iVar6 = iVar6 + ((int)uVar4 >> 5) * 4;
    if ((int)uVar12 < 0) {
      uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;
    }
    else {
      uVar12 = uVar12 & 0x8000001f;
    }
    if ((int)uVar12 < 0) {
      *(uint *)(iVar2 + 0x70) = uVar12 + 0x20;
      *(int *)(iVar2 + 0x6c) = iVar6 + -4;
      return;
    }
    *(uint *)(iVar2 + 0x70) = uVar12;
    *(int *)(iVar2 + 0x6c) = iVar6;
    return;
  }
  piVar17 = piVar3 + 2 + uVar12 * 2;
  uVar4 = (int)piVar3 + (iVar26 - (int)piVar17);
  (**(code **)(puVar22 + 0x370bbc))
            (puVar9 + 0x34,0,*(undefined4 *)(puVar9 + 0x38),piVar17,uVar4,param_4,iVar2,uVar24,
             uVar25);
  uVar10 = *(int *)(puVar9 + 0x2c) - *(int *)(puVar9 + 0x28) >> 4;
  if (uVar10 < uVar12) {
    vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>>::_M_default_append
              ((vector<gold::Archive::Armap_entry,std::allocator<gold::Archive::Armap_entry>> *)
               (puVar9 + 0x28),uVar12 - uVar10);
  }
  else if ((uVar12 < uVar10) &&
          (iVar26 = *(int *)(puVar9 + 0x28) + uVar12 * 0x10, *(int *)(puVar9 + 0x2c) != iVar26)) {
    *(int *)(puVar9 + 0x2c) = iVar26;
  }
  uVar10 = 0;
  if (uVar12 != 0) {
    piVar13 = *(int **)(puVar9 + 0x28);
    piVar5 = piVar13 + uVar12 * 4;
    piVar3 = piVar3 + 2;
    iVar26 = -1;
    iVar2 = -1;
    do {
      while( true ) {
        pcVar21 = *(code **)(puVar22 + 0x3746b8);
        piVar13[1] = uVar10;
        *piVar13 = (int)uVar10 >> 0x1f;
        iVar15 = *piVar3;
        iVar19 = piVar3[1];
        piVar13[2] = iVar15;
        piVar13[3] = iVar19;
        iVar6 = (*pcVar21)((int)piVar17 + uVar10);
        uVar10 = iVar6 + 1 + uVar10;
        if ((iVar15 != iVar2) || (iVar19 != iVar26)) break;
        piVar13 = piVar13 + 4;
        piVar3 = piVar3 + 2;
        iVar26 = iVar19;
        iVar2 = iVar15;
        if (piVar5 == piVar13) goto LAB_00151668;
      }
      piVar13 = piVar13 + 4;
      *(int *)(puVar9 + 0xd0) = *(int *)(puVar9 + 0xd0) + 1;
      piVar3 = piVar3 + 2;
      iVar26 = iVar19;
      iVar2 = iVar15;
    } while (piVar5 != piVar13);
LAB_00151668:
    if (uVar4 < uVar10) {
      uVar11 = (**(code **)(puVar22 + 0x37474c))(*(int *)(puVar22 + 0x37056c) + -0x15d0);
      (**(code **)(puVar22 + 0x370548))(uVar11,*(undefined4 *)(puVar9 + 0xc));
      iVar26 = *(int *)(puVar9 + 0x6c);
      iVar2 = *(int *)(puVar9 + 100);
      iVar6 = *(int *)(puVar9 + 0x70);
      iVar15 = *(int *)(puVar9 + 0x68);
      iVar19 = (iVar26 - iVar2) * 8 + iVar6;
      uVar4 = iVar19 - iVar15;
      goto joined_r0x001516a0;
    }
  }
  iVar26 = *(int *)(puVar9 + 0x6c);
  iVar2 = *(int *)(puVar9 + 100);
  iVar6 = *(int *)(puVar9 + 0x70);
  iVar15 = *(int *)(puVar9 + 0x68);
  iVar19 = (iVar26 - iVar2) * 8 + iVar6;
  uVar4 = iVar19 - iVar15;
joined_r0x001516a0:
  if (uVar4 <= uVar12) {
    vector<bool,std::allocator<bool>>::_M_fill_insert
              (puVar9 + 100,iVar26,iVar6,(iVar15 - iVar19) + uVar12,0);
    return;
  }
  uVar12 = uVar12 + iVar15;
  uVar4 = uVar12;
  if ((int)uVar12 < 0) {
    uVar4 = uVar12 + 0x1f;
  }
  iVar2 = iVar2 + ((int)uVar4 >> 5) * 4;
  if ((int)uVar12 < 0) {
    uVar12 = ((uVar12 & 0x8000001f) - 1 | 0xffffffe0) + 1;
  }
  else {
    uVar12 = uVar12 & 0x8000001f;
  }
  if ((int)uVar12 < 0) {
    *(uint *)(puVar9 + 0x70) = uVar12 + 0x20;
    *(int *)(puVar9 + 0x6c) = iVar2 + -4;
    return;
  }
  *(uint *)(puVar9 + 0x70) = uVar12;
  *(int *)(puVar9 + 0x6c) = iVar2;
  return;
}

