
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void do_write(Gdb_index * this, Output_file * of) */

void __thiscall gold::Gdb_index::do_write(Gdb_index *this,Output_file *of)

{
  pointer pTVar1;
  pointer pPVar2;
  pointer ppVar3;
  byte bVar4;
  long lVar5;
  pointer pCVar6;
  pointer pCVar7;
  off_t oVar8;
  pointer pTVar9;
  Dwarf_range_list *pDVar10;
  Relobj *pRVar11;
  _func_int_varargs *p_Var12;
  pointer ppOVar13;
  uint64_t uVar14;
  pointer pRVar15;
  Gdb_symbol **ppGVar16;
  Gdb_symbol *pGVar17;
  pointer ppvVar18;
  vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_> *pvVar19;
  pointer ppVar20;
  int iVar21;
  uint uVar22;
  long lVar23;
  uint64_t *puVar24;
  uint64_t *puVar25;
  ulong uVar26;
  undefined4 extraout_var;
  Output_section *pOVar27;
  ulong uVar28;
  long lVar29;
  uint64_t *puVar30;
  pointer pPVar31;
  uchar *puVar32;
  int iVar33;
  uint uVar34;
  off_t oVar35;
  ulong uVar36;
  pointer pRVar37;
  ulong uVar38;
  uint64_t *buffer;
  uint local_5c;
  undefined4 extraout_var_00;
  
  bVar4 = (this->super_Output_section_data).super_Output_data.field_0x20;
  if ((bVar4 & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0xe3,"offset");
  }
  lVar23 = (this->super_Output_section_data).super_Output_data.offset_;
  if ((bVar4 & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");
  }
  lVar5 = (this->super_Output_section_data).super_Output_data.data_size_;
  if ((lVar23 < 0) || (of->file_size_ < lVar23 + lVar5)) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");
  }
  puVar32 = of->base_ + lVar23;
  oVar35 = this->tu_offset_;
  pCVar6 = (this->comp_units_).
           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>
           ._M_impl._M_finish;
  puVar32[0] = '\a';
  puVar32[1] = '\0';
  puVar32[2] = '\0';
  puVar32[3] = '\0';
  puVar32[4] = '\x18';
  puVar32[5] = '\0';
  puVar32[6] = '\0';
  puVar32[7] = '\0';
  buffer = (uint64_t *)(puVar32 + 0x18);
  pCVar7 = (this->comp_units_).
           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>
           ._M_impl._M_start;
  *(int *)(puVar32 + 0xc) = (int)this->addr_offset_;
  *(int *)(puVar32 + 0x10) = (int)this->symtab_offset_;
  oVar8 = this->cu_pool_offset_;
  *(int *)(puVar32 + 8) = (int)oVar35;
  *(int *)(puVar32 + 0x14) = (int)oVar8;
  lVar23 = 0x18;
  iVar33 = (int)((long)pCVar6 - (long)pCVar7 >> 4);
  if (iVar33 != 0) {
    puVar24 = buffer;
    puVar30 = &pCVar7->cu_length;
    do {
      puVar25 = puVar24 + 2;
      *puVar24 = ((Comp_unit *)(puVar30 + -1))->cu_offset;
      puVar24[1] = *puVar30;
      puVar24 = puVar25;
      puVar30 = puVar30 + 2;
    } while (puVar25 != (uint64_t *)(puVar32 + (ulong)(iVar33 - 1) * 0x10 + 0x28));
    buffer = buffer + ((ulong)(iVar33 - 1) + 1) * 2;
    oVar35 = this->tu_offset_;
    lVar23 = (long)buffer - (long)puVar32;
  }
  if (lVar23 != oVar35) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/gdb-index.cc",0x4ee,"do_write");
  }
  pTVar9 = (this->type_units_).
           super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>
           ._M_impl._M_start;
  uVar36 = ((long)(this->type_units_).
                  super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>
                  ._M_impl._M_finish - (long)pTVar9 >> 3) * -0x5555555555555555;
  if (uVar36 != 0) {
    uVar26 = 0;
    puVar24 = buffer;
    do {
      buffer = puVar24 + 3;
      pTVar1 = pTVar9 + uVar26;
      *puVar24 = pTVar1->tu_offset;
      puVar24[1] = pTVar1->type_offset;
      puVar24[2] = pTVar1->type_signature;
      uVar26 = (ulong)((int)uVar26 + 1);
      puVar24 = buffer;
    } while (uVar26 < uVar36);
    lVar23 = (long)buffer - (long)puVar32;
  }
  if (this->addr_offset_ != lVar23) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/gdb-index.cc",0x4fa,"do_write");
  }
  pPVar31 = (this->ranges_).
            super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>
            ._M_impl._M_start;
  if (pPVar31 !=
      (this->ranges_).
      super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>
      ._M_impl._M_finish) {
    local_5c = 0;
    uVar36 = 0;
    do {
      pPVar2 = pPVar31 + uVar36;
      uVar34 = pPVar2->cu_index;
      pDVar10 = pPVar2->ranges;
      pRVar11 = pPVar2->object;
      pRVar37 = (pDVar10->range_list_).
                super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>
                ._M_impl._M_start;
      if ((int)uVar34 < 0) {
        uVar34 = (iVar33 + -1) - uVar34;
      }
      if ((pDVar10->range_list_).
          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>
          ._M_impl._M_finish != pRVar37) {
        uVar36 = 0;
        puVar24 = buffer;
        do {
          pRVar15 = pRVar37 + uVar36;
          uVar22 = pRVar15->shndx;
          if (uVar22 == 0) {
            lVar23 = 0;
          }
          else {
            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];
            if (p_Var12 == Relobj::do_output_section) {
              ppOVar13 = (pRVar11->output_sections_).
                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                         ._M_impl._M_start;
              if ((ulong)((long)(pRVar11->output_sections_).
                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {
                    /* WARNING: Subroutine does not return */
                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");
              }
              pOVar27 = ppOVar13[uVar22];
            }
            else {
              iVar21 = (*p_Var12)(pRVar11);
              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);
            }
            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
              do_gold_unreachable("../../gold/output.h",0xc5,"address");
            }
            uVar14 = (pOVar27->super_Output_data).address_;
            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);
            pRVar37 = (pDVar10->range_list_).
                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>
                      ._M_impl._M_start;
            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;
          }
          buffer = (uint64_t *)((long)puVar24 + 0x14);
          lVar29 = pRVar15->start + lVar23;
          lVar23 = lVar23 + pRVar15->end;
          *(uint *)(puVar24 + 2) = uVar34;
          *(uint *)(puVar24 + 1) = (uint)lVar23;
          pRVar15 = (pDVar10->range_list_).
                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>
                    ._M_impl._M_finish;
          *(uint *)puVar24 = (uint)lVar29;
          *(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);
          uVar36 = (ulong)((int)uVar36 + 1);
          *(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);
          puVar24 = buffer;
        } while (uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555));
        pPVar31 = (this->ranges_).
                  super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>
                  ._M_impl._M_start;
      }
      local_5c = local_5c + 1;
      uVar36 = (ulong)local_5c;
    } while (uVar36 < (ulong)(((long)(this->ranges_).
                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>
                                     ._M_impl._M_finish - (long)pPVar31 >> 3) * -0x5555555555555555)
            );
    lVar23 = (long)buffer - (long)puVar32;
  }
  if (this->symtab_offset_ != lVar23) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/gdb-index.cc",0x518,"do_write");
  }
  uVar36 = this->gdb_symtab_->capacity_;
  if (uVar36 != 0) {
    ppGVar16 = this->gdb_symtab_->hashtab_;
    uVar26 = 0;
    puVar24 = buffer;
    do {
      pGVar17 = ppGVar16[uVar26];
      if (pGVar17 == (Gdb_symbol *)0x0) {
        uVar22 = 0;
        uVar34 = 0;
      }
      else {
        if ((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");
        }
        uVar38 = pGVar17->name_key - 1;
        uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index);
        uVar22 = ((int)this->stringpool_offset_ +
                 (int)*(undefined8 *)
                       ((long)(this->stringpool_).key_to_offset_.chunks_.
                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>
                              ._M_impl._M_start[uVar38 >> 0xd].
                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.
                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -
                 (int)this->cu_pool_offset_;
      }
      *(uint *)puVar24 = uVar22;
      uVar26 = (ulong)((int)uVar26 + 1);
      buffer = puVar24 + 1;
      *(uint *)((long)puVar24 + 4) = uVar34;
      puVar24 = buffer;
    } while (uVar26 < uVar36);
    lVar23 = (long)buffer - (long)puVar32;
  }
  if (this->cu_pool_offset_ == lVar23) {
    ppvVar18 = (this->cu_vector_list_).
               super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>
               ._M_impl._M_start;
    uVar36 = (long)(this->cu_vector_list_).
                   super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>
                   ._M_impl._M_finish - (long)ppvVar18 >> 3;
    if (uVar36 != 0) {
      uVar26 = 0;
      puVar24 = buffer;
      do {
        pvVar19 = ppvVar18[uVar26];
        buffer = (uint64_t *)((long)puVar24 + 4);
        ppVar20 = (pvVar19->
                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>
                  )._M_impl._M_start;
        uVar38 = (long)(pvVar19->
                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>
                       )._M_impl._M_finish - (long)ppVar20 >> 3;
        *(uint *)puVar24 = (uint)uVar38;
        if (uVar38 != 0) {
          uVar28 = 0;
          puVar24 = buffer;
          do {
            ppVar3 = ppVar20 + uVar28;
            uVar34 = ppVar3->first;
            if ((int)uVar34 < 0) {
              uVar34 = (iVar33 + -1) - uVar34;
            }
            buffer = (uint64_t *)((long)puVar24 + 4);
            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;
            uVar28 = (ulong)((int)uVar28 + 1);
            puVar24 = buffer;
          } while (uVar28 < uVar38);
        }
        uVar26 = (ulong)((int)uVar26 + 1);
        puVar24 = buffer;
      } while (uVar26 < uVar36);
      lVar23 = (long)buffer - (long)puVar32;
    }
    if (this->stringpool_offset_ == lVar23) {
      Stringpool_template<char>::write_to_buffer(&this->stringpool_,(uchar *)buffer,lVar5 - lVar23);
      return;
    }
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/gdb-index.cc",0x53f,"do_write");
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/gdb-index.cc",0x52b,"do_write");
}



void FUN_00252130(long param_1,long param_2)

{
  long *plVar1;
  long lVar2;
  undefined8 uVar3;
  long *plVar4;
  long lVar5;
  ulong *puVar6;
  uint uVar7;
  long lVar8;
  uint *puVar9;
  uint *puVar10;
  ulong uVar11;
  long lVar12;
  long lVar13;
  ulong uVar14;
  undefined8 *puVar15;
  undefined8 *puVar16;
  int iVar17;
  uint uVar18;
  ulong uVar19;
  long lVar20;
  ulong uVar21;
  uint *puVar22;
  uint local_5c;
  
  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");
  }
  lVar13 = *(long *)(param_1 + 0x18);
  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");
  }
  lVar2 = *(long *)(param_1 + 0x10);
  if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");
  }
  puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);
  lVar13 = *(long *)(param_1 + 0x1c0);
  lVar20 = *(long *)(param_1 + 200);
  *puVar16 = 0x1800000007;
  puVar22 = (uint *)(puVar16 + 3);
  lVar12 = *(long *)(param_1 + 0xc0);
  *(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);
  *(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);
  uVar3 = *(undefined8 *)(param_1 + 0x1d8);
  *(int *)(puVar16 + 1) = (int)lVar13;
  *(int *)((long)puVar16 + 0x14) = (int)uVar3;
  lVar8 = 0x18;
  iVar17 = (int)(lVar20 - lVar12 >> 4);
  if (iVar17 != 0) {
    puVar9 = puVar22;
    puVar15 = (undefined8 *)(lVar12 + 8);
    do {
      puVar10 = puVar9 + 4;
      *(undefined8 *)puVar9 = puVar15[-1];
      *(undefined8 *)(puVar9 + 2) = *puVar15;
      puVar9 = puVar10;
      puVar15 = puVar15 + 2;
    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));
    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;
    lVar13 = *(long *)(param_1 + 0x1c0);
    lVar8 = (long)puVar22 - (long)puVar16;
  }
  if (lVar8 != lVar13) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");
  }
  lVar13 = *(long *)(param_1 + 0xd8);
  uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;
  if (uVar19 != 0) {
    uVar11 = 0;
    puVar9 = puVar22;
    do {
      puVar22 = puVar9 + 6;
      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);
      *(undefined8 *)puVar9 = *puVar15;
      *(undefined8 *)(puVar9 + 2) = puVar15[1];
      *(undefined8 *)(puVar9 + 4) = puVar15[2];
      uVar11 = (ulong)((int)uVar11 + 1);
      puVar9 = puVar22;
    } while (uVar11 < uVar19);
    lVar8 = (long)puVar22 - (long)puVar16;
  }
  if (*(long *)(param_1 + 0x1c8) != lVar8) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");
  }
  lVar13 = *(long *)(param_1 + 0xf0);
  if (lVar13 != *(long *)(param_1 + 0xf8)) {
    local_5c = 0;
    uVar19 = 0;
    do {
      plVar1 = (long *)(lVar13 + uVar19 * 0x18);
      uVar18 = *(uint *)(plVar1 + 1);
      plVar4 = (long *)plVar1[2];
      plVar1 = (long *)*plVar1;
      lVar20 = *plVar4;
      if ((int)uVar18 < 0) {
        uVar18 = (iVar17 + -1) - uVar18;
      }
      if (plVar4[1] != lVar20) {
        uVar19 = 0;
        puVar9 = puVar22;
        do {
          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);
          uVar7 = *puVar10;
          if (uVar7 == 0) {
            lVar12 = 0;
          }
          else {
            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {
              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {
                    /* WARNING: Subroutine does not return */
                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");
              }
              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);
            }
            else {
              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);
            }
            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
              FUN_0016cdf0("../../gold/output.h",0xc5,"address");
            }
            lVar13 = *(long *)(lVar13 + 8);
            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);
            lVar20 = *plVar4;
            lVar12 = lVar12 + lVar13;
          }
          lVar13 = *(long *)(puVar10 + 2);
          puVar22 = puVar9 + 5;
          lVar8 = *(long *)(puVar10 + 4);
          puVar9[4] = uVar18;
          puVar9[2] = (uint)(lVar12 + lVar8);
          lVar5 = plVar4[1];
          *puVar9 = (uint)(lVar13 + lVar12);
          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);
          uVar19 = (ulong)((int)uVar19 + 1);
          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);
          puVar9 = puVar22;
        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));
        lVar13 = *(long *)(param_1 + 0xf0);
      }
      local_5c = local_5c + 1;
      uVar19 = (ulong)local_5c;
    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));
    lVar8 = (long)puVar22 - (long)puVar16;
  }
  if (*(long *)(param_1 + 0x1d0) != lVar8) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");
  }
  uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);
  if (uVar19 != 0) {
    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);
    uVar11 = 0;
    puVar9 = puVar22;
    do {
      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);
      if (puVar6 == (ulong *)0x0) {
        uVar7 = 0;
        uVar18 = 0;
      }
      else {
        if (*(ulong *)(param_1 + 0x180) < *puVar6) {
                    /* WARNING: Subroutine does not return */
          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");
        }
        uVar21 = *puVar6 - 1;
        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);
        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +
                (int)*(undefined8 *)
                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +
                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);
      }
      *puVar9 = uVar7;
      uVar11 = (ulong)((int)uVar11 + 1);
      puVar22 = puVar9 + 2;
      puVar9[1] = uVar18;
      puVar9 = puVar22;
    } while (uVar11 < uVar19);
    lVar8 = (long)puVar22 - (long)puVar16;
  }
  if (*(long *)(param_1 + 0x1d8) == lVar8) {
    lVar13 = *(long *)(param_1 + 0x110);
    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;
    if (uVar19 != 0) {
      uVar11 = 0;
      puVar9 = puVar22;
      do {
        plVar1 = *(long **)(lVar13 + uVar11 * 8);
        puVar22 = puVar9 + 1;
        lVar20 = *plVar1;
        uVar21 = plVar1[1] - lVar20 >> 3;
        *puVar9 = (uint)uVar21;
        if (uVar21 != 0) {
          uVar14 = 0;
          puVar9 = puVar22;
          do {
            puVar10 = (uint *)(lVar20 + uVar14 * 8);
            uVar18 = *puVar10;
            if ((int)uVar18 < 0) {
              uVar18 = (iVar17 + -1) - uVar18;
            }
            puVar22 = puVar9 + 1;
            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;
            uVar14 = (ulong)((int)uVar14 + 1);
            puVar9 = puVar22;
          } while (uVar14 < uVar21);
        }
        uVar11 = (ulong)((int)uVar11 + 1);
        puVar9 = puVar22;
      } while (uVar11 < uVar19);
      lVar8 = (long)puVar22 - (long)puVar16;
    }
    if (*(long *)(param_1 + 0x1e0) == lVar8) {
      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);
      return;
    }
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");
  }
                    /* WARNING: Subroutine does not return */
  FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
MOVZX EDX,byte ptr [RDI + 0x20]
MOV qword ptr [RSP + 0x10],RDI
TEST DL,0x4
JZ 0x00252663
MOV RAX,qword ptr [RSP + 0x10]
AND EDX,0x2
MOV RAX,qword ptr [RAX + 0x18]
JZ 0x0025264b
MOV RBX,qword ptr [RSP + 0x10]
MOV RBX,qword ptr [RBX + 0x10]
MOV qword ptr [RSP + 0x28],RBX
TEST RAX,RAX
JS 0x002526c3
LEA RDX,[RAX + RBX*0x1]
CMP qword ptr [RSI + 0x10],RDX
JL 0x002526c3
MOV RBX,qword ptr [RSI + 0x18]
MOV RCX,qword ptr [RSP + 0x10]
ADD RBX,RAX
MOV RDI,qword ptr [RCX + 0x1c0]
MOV RAX,0x1800000007
MOV RSI,qword ptr [RCX + 0xc8]
MOV qword ptr [RBX],RAX
MOV RAX,qword ptr [RCX + 0x1c8]
LEA R15,[RBX + 0x18]
MOV RDX,qword ptr [RCX + 0xc0]
MOV qword ptr [RSP],RSI
MOV dword ptr [RBX + 0xc],EAX
MOV RAX,qword ptr [RCX + 0x1d0]
SUB RSI,RDX
MOV qword ptr [RSP + 0x18],RBX
MOV dword ptr [RBX + 0x10],EAX
MOV RAX,qword ptr [RCX + 0x1d8]
SAR RSI,0x4
MOV dword ptr [RBX + 0x8],EDI
MOV dword ptr [RBX + 0x14],EAX
MOV EAX,0x18
MOV dword ptr [RSP + 0x24],ESI
TEST ESI,ESI
JZ 0x0025224c
LEA R8D,[RSI + -0x1]
ADD RDX,0x8
MOV RAX,R8
SHL RAX,0x4
LEA RDI,[RBX + RAX*0x1 + 0x28]
MOV RAX,R15
NOP
MOV RCX,qword ptr [RDX + -0x8]
ADD RAX,0x10
ADD RDX,0x10
MOV qword ptr [RAX + -0x10],RCX
MOV RCX,qword ptr [RDX + -0x10]
MOV qword ptr [RAX + -0x8],RCX
CMP RAX,RDI
JNZ 0x00252210
ADD R8,0x1
MOV RBX,qword ptr [RSP + 0x10]
SHL R8,0x4
ADD R15,R8
MOV RDI,qword ptr [RBX + 0x1c0]
MOV RAX,R15
SUB RAX,qword ptr [RSP + 0x18]
CMP RAX,RDI
JNZ 0x002526ab
MOV RDX,-0x5555555555555555
MOV RBX,qword ptr [RSP + 0x10]
MOV R8,qword ptr [RBX + 0xd8]
MOV RBX,qword ptr [RBX + 0xe0]
MOV RDI,RBX
MOV qword ptr [RSP],RBX
SUB RDI,R8
SAR RDI,0x3
IMUL RDI,RDX
TEST RDI,RDI
JZ 0x002522c6
XOR EDX,EDX
XOR EAX,EAX
NOP dword ptr [RAX]
LEA RAX,[RAX + RAX*0x2]
ADD R15,0x18
LEA RAX,[R8 + RAX*0x8]
MOV RCX,qword ptr [RAX]
MOV qword ptr [R15 + -0x18],RCX
MOV RCX,qword ptr [RAX + 0x8]
MOV qword ptr [R15 + -0x10],RCX
MOV RAX,qword ptr [RAX + 0x10]
MOV qword ptr [R15 + -0x8],RAX
LEA EAX,[RDX + 0x1]
MOV RDX,RAX
CMP RAX,RDI
JC 0x00252290
MOV RAX,R15
SUB RAX,qword ptr [RSP + 0x18]
MOV RBX,qword ptr [RSP + 0x10]
CMP qword ptr [RBX + 0x1c8],RAX
JNZ 0x0025270b
MOV RBX,qword ptr [RSP + 0x10]
MOV RDX,qword ptr [RBX + 0xf0]
CMP RDX,qword ptr [RBX + 0xf8]
JZ 0x0025247b
MOV EAX,dword ptr [RSP + 0x24]
MOV dword ptr [RSP + 0xc],0x0
XOR ESI,ESI
SUB EAX,0x1
MOV dword ptr [RSP + 0x20],EAX
NOP word ptr CS:[RAX + RAX*0x1]
LEA RAX,[RSI + RSI*0x2]
MOV ESI,dword ptr [RSP + 0x20]
LEA RAX,[RDX + RAX*0x8]
MOV R12D,dword ptr [RAX + 0x8]
MOV RBP,qword ptr [RAX + 0x10]
MOV RBX,qword ptr [RAX]
SUB ESI,R12D
MOV ECX,R12D
TEST R12D,R12D
MOV RDI,qword ptr [RBP]
CMOVS ECX,ESI
MOV R12D,ECX
CMP qword ptr [RBP + 0x8],RDI
JZ 0x0025243c
XOR R13D,R13D
XOR EDX,EDX
JMP 0x00252405
MOV RAX,qword ptr [RBX]
LEA RDI,[0x14c900]
MOV RAX,qword ptr [RAX + 0xc0]
CMP RAX,RDI
JNZ 0x00252420
MOV RCX,qword ptr [RBX + 0x50]
MOV RAX,qword ptr [RBX + 0x58]
SUB RAX,RCX
SAR RAX,0x3
CMP RSI,RAX
JNC 0x00252633
MOV RAX,qword ptr [RCX + RSI*0x8]
TEST byte ptr [RAX + 0x20],0x1
JZ 0x0025261b
MOV RAX,qword ptr [RAX + 0x8]
MOV RDI,RBX
MOV ESI,dword ptr [R14]
MOV qword ptr [RSP],RAX
MOV RAX,qword ptr [RBX]
CALL qword ptr [RAX + 0xd0]
MOV RDI,qword ptr [RBP]
ADD RAX,qword ptr [RSP]
MOV RCX,qword ptr [R14 + 0x8]
ADD R15,0x14
ADD RCX,RAX
ADD RAX,qword ptr [R14 + 0x10]
MOV dword ptr [R15 + -0x4],R12D
MOV RDX,RAX
MOV dword ptr [R15 + -0xc],EAX
MOV RAX,qword ptr [RBP + 0x8]
MOV RSI,RCX
MOV dword ptr [R15 + -0x14],ECX
SHR RDX,0x20
SHR RSI,0x20
MOV RCX,-0x5555555555555555
SUB RAX,RDI
MOV dword ptr [R15 + -0x8],EDX
LEA EDX,[R13 + 0x1]
SAR RAX,0x3
MOV dword ptr [R15 + -0x10],ESI
MOV R13,RDX
IMUL RAX,RCX
CMP RDX,RAX
JNC 0x00252430
LEA RAX,[RDX + RDX*0x2]
LEA R14,[RDI + RAX*0x8]
MOV ESI,dword ptr [R14]
TEST ESI,ESI
JNZ 0x00252350
XOR EAX,EAX
JMP 0x002523af
MOV RDI,RBX
CALL RAX
JMP 0x00252386
MOV RAX,qword ptr [RSP + 0x10]
MOV RDX,qword ptr [RAX + 0xf0]
MOV RAX,qword ptr [RSP + 0x10]
ADD dword ptr [RSP + 0xc],0x1
MOV RBX,-0x5555555555555555
MOV ESI,dword ptr [RSP + 0xc]
MOV RAX,qword ptr [RAX + 0xf8]
MOV qword ptr [RSP],RAX
SUB RAX,RDX
SAR RAX,0x3
IMUL RAX,RBX
CMP RSI,RAX
JC 0x00252310
MOV RAX,R15
SUB RAX,qword ptr [RSP + 0x18]
MOV RBX,qword ptr [RSP + 0x10]
CMP qword ptr [RBX + 0x1d0],RAX
JNZ 0x002526f3
MOV RCX,qword ptr [RSP + 0x10]
MOV RDX,qword ptr [RCX + 0x108]
MOV R8,qword ptr [RDX + 0x8]
TEST R8,R8
JZ 0x00252530
MOV R9,qword ptr [RDX + 0x10]
XOR ESI,ESI
XOR EAX,EAX
JMP 0x00252519
MOV RAX,qword ptr [RDX]
CMP RAX,qword ptr [RCX + 0x180]
JA 0x002526db
MOV EDI,dword ptr [RDX + 0xc]
MOV RDX,qword ptr [RCX + 0x128]
SUB RAX,0x1
MOV R10,qword ptr [RCX + 0x168]
MOV EDI,dword ptr [RDX + RDI*0x8]
MOV RDX,RAX
AND EAX,0x1fff
SHR RDX,0xd
LEA RDX,[RDX + RDX*0x2]
LEA RDX,[R10 + RDX*0x8]
MOV R10,qword ptr [RDX]
MOV RDX,qword ptr [RCX + 0x1e0]
ADD RDX,qword ptr [R10 + RAX*0x8]
MOV RAX,RDX
SUB EAX,dword ptr [RCX + 0x1d8]
MOV dword ptr [R15],EAX
LEA EAX,[RSI + 0x1]
ADD R15,0x8
MOV dword ptr [R15 + -0x4],EDI
MOV RSI,RAX
CMP RAX,R8
JNC 0x00252528
MOV RDX,qword ptr [R9 + RAX*0x8]
TEST RDX,RDX
JNZ 0x002524b0
XOR EAX,EAX
XOR EDI,EDI
JMP 0x00252503
MOV RAX,R15
SUB RAX,qword ptr [RSP + 0x18]
MOV RBX,qword ptr [RSP + 0x10]
CMP qword ptr [RBX + 0x1d8],RAX
JNZ 0x00252693
MOV RBX,qword ptr [RSP + 0x10]
MOV R11,qword ptr [RBX + 0x110]
MOV RBX,qword ptr [RBX + 0x118]
MOV R10,RBX
MOV qword ptr [RSP],RBX
SUB R10,R11
SAR R10,0x3
JZ 0x002525df
MOV EBX,dword ptr [RSP + 0x24]
XOR R9D,R9D
XOR EAX,EAX
SUB EBX,0x1
NOP dword ptr [RAX]
MOV RAX,qword ptr [R11 + RAX*0x8]
ADD R15,0x4
MOV R8,qword ptr [RAX]
MOV RDI,qword ptr [RAX + 0x8]
SUB RDI,R8
SAR RDI,0x3
MOV dword ptr [R15 + -0x4],EDI
TEST RDI,RDI
JZ 0x002525cb
XOR ECX,ECX
XOR EAX,EAX
NOP dword ptr [RAX + RAX*0x1]
LEA RDX,[R8 + RAX*0x8]
MOV EBP,EBX
MOV EAX,dword ptr [RDX]
MOVZX EDX,byte ptr [RDX + 0x4]
SUB EBP,EAX
TEST EAX,EAX
CMOVS EAX,EBP
SHL EDX,0x18
ADD R15,0x4
OR EAX,EDX
MOV dword ptr [R15 + -0x4],EAX
LEA EAX,[RCX + 0x1]
MOV RCX,RAX
CMP RAX,RDI
JC 0x002525a0
LEA EAX,[R9 + 0x1]
MOV R9,RAX
CMP RAX,R10
JC 0x00252578
MOV RAX,R15
SUB RAX,qword ptr [RSP + 0x18]
MOV RBX,qword ptr [RSP + 0x10]
CMP qword ptr [RBX + 0x1e0],RAX
JNZ 0x0025267b
MOV RDX,qword ptr [RSP + 0x28]
MOV RDI,qword ptr [RSP + 0x10]
ADD RSP,0x38
MOV RSI,R15
POP RBX
POP RBP
SUB RDX,RAX
POP R12
ADD RDI,0x130
POP R13
POP R14
POP R15
JMP 0x00218cf0
LEA RDX,[0x325308]
MOV ESI,0xc5
LEA RDI,[0x30e9f4]
CALL 0x0016cdf0
LEA RDX,[0x325310]
MOV ESI,0x5c8
LEA RDI,[0x307016]
CALL 0x0016cdf0
LEA RDX,[0x325340]
MOV ESI,0xcf
LEA RDI,[0x30e9f4]
CALL 0x0016cdf0
LEA RDX,[0x32534a]
MOV ESI,0xe3
LEA RDI,[0x30e9f4]
CALL 0x0016cdf0
LEA RDX,[0x325358]
MOV ESI,0x53f
LEA RDI,[0x325082]
CALL 0x0016cdf0
LEA RDX,[0x325358]
MOV ESI,0x52b
LEA RDI,[0x325082]
CALL 0x0016cdf0
LEA RDX,[0x325358]
MOV ESI,0x4ee
LEA RDI,[0x325082]
CALL 0x0016cdf0
LEA RDX,[0x325330]
MOV ESI,0x6f
LEA RDI,[0x30e9f4]
CALL 0x0016cdf0
LEA RDX,[0x3252f0]
MOV ESI,0x108
LEA RDI,[0x30755a]
CALL 0x0016cdf0
LEA RDX,[0x325358]
MOV ESI,0x518
LEA RDI,[0x325082]
CALL 0x0016cdf0
LEA RDX,[0x325358]
MOV ESI,0x4fa
LEA RDI,[0x325082]
CALL 0x0016cdf0
(translation_unit "void FUN_00252130(long param_1,long param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  long lVar5;\n  ulong *puVar6;\n  uint uVar7;\n  long lVar8;\n  uint *puVar9;\n  uint *puVar10;\n  ulong uVar11;\n  long lVar12;\n  long lVar13;\n  ulong uVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  uint uVar18;\n  ulong uVar19;\n  long lVar20;\n  ulong uVar21;\n  uint *puVar22;\n  uint local_5c;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  lVar13 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar2 = *(long *)(param_1 + 0x10);\n  if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }\n  puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);\n  lVar13 = *(long *)(param_1 + 0x1c0);\n  lVar20 = *(long *)(param_1 + 200);\n  *puVar16 = 0x1800000007;\n  puVar22 = (uint *)(puVar16 + 3);\n  lVar12 = *(long *)(param_1 + 0xc0);\n  *(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);\n  *(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);\n  uVar3 = *(undefined8 *)(param_1 + 0x1d8);\n  *(int *)(puVar16 + 1) = (int)lVar13;\n  *(int *)((long)puVar16 + 0x14) = (int)uVar3;\n  lVar8 = 0x18;\n  iVar17 = (int)(lVar20 - lVar12 >> 4);\n  if (iVar17 != 0) {\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (lVar8 != lVar13) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xd8);\n  uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;\n  if (uVar19 != 0) {\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1c8) != lVar8) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xf0);\n  if (lVar13 != *(long *)(param_1 + 0xf8)) {\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d0) != lVar8) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }\n  uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);\n  if (uVar19 != 0) {\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d8) == lVar8) {\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");\n}\n\n" (function_definition "void FUN_00252130(long param_1,long param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  long lVar5;\n  ulong *puVar6;\n  uint uVar7;\n  long lVar8;\n  uint *puVar9;\n  uint *puVar10;\n  ulong uVar11;\n  long lVar12;\n  long lVar13;\n  ulong uVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  uint uVar18;\n  ulong uVar19;\n  long lVar20;\n  ulong uVar21;\n  uint *puVar22;\n  uint local_5c;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  lVar13 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar2 = *(long *)(param_1 + 0x10);\n  if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }\n  puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);\n  lVar13 = *(long *)(param_1 + 0x1c0);\n  lVar20 = *(long *)(param_1 + 200);\n  *puVar16 = 0x1800000007;\n  puVar22 = (uint *)(puVar16 + 3);\n  lVar12 = *(long *)(param_1 + 0xc0);\n  *(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);\n  *(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);\n  uVar3 = *(undefined8 *)(param_1 + 0x1d8);\n  *(int *)(puVar16 + 1) = (int)lVar13;\n  *(int *)((long)puVar16 + 0x14) = (int)uVar3;\n  lVar8 = 0x18;\n  iVar17 = (int)(lVar20 - lVar12 >> 4);\n  if (iVar17 != 0) {\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (lVar8 != lVar13) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xd8);\n  uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;\n  if (uVar19 != 0) {\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1c8) != lVar8) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xf0);\n  if (lVar13 != *(long *)(param_1 + 0xf8)) {\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d0) != lVar8) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }\n  uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);\n  if (uVar19 != 0) {\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d8) == lVar8) {\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");\n}" primitive_type (function_declarator "FUN_00252130(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  long lVar5;\n  ulong *puVar6;\n  uint uVar7;\n  long lVar8;\n  uint *puVar9;\n  uint *puVar10;\n  ulong uVar11;\n  long lVar12;\n  long lVar13;\n  ulong uVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  uint uVar18;\n  ulong uVar19;\n  long lVar20;\n  ulong uVar21;\n  uint *puVar22;\n  uint local_5c;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  lVar13 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar2 = *(long *)(param_1 + 0x10);\n  if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }\n  puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);\n  lVar13 = *(long *)(param_1 + 0x1c0);\n  lVar20 = *(long *)(param_1 + 200);\n  *puVar16 = 0x1800000007;\n  puVar22 = (uint *)(puVar16 + 3);\n  lVar12 = *(long *)(param_1 + 0xc0);\n  *(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);\n  *(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);\n  uVar3 = *(undefined8 *)(param_1 + 0x1d8);\n  *(int *)(puVar16 + 1) = (int)lVar13;\n  *(int *)((long)puVar16 + 0x14) = (int)uVar3;\n  lVar8 = 0x18;\n  iVar17 = (int)(lVar20 - lVar12 >> 4);\n  if (iVar17 != 0) {\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (lVar8 != lVar13) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xd8);\n  uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;\n  if (uVar19 != 0) {\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1c8) != lVar8) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xf0);\n  if (lVar13 != *(long *)(param_1 + 0xf8)) {\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d0) != lVar8) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }\n  uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);\n  if (uVar19 != 0) {\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d8) == lVar8) {\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "undefined8 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined8 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "ulong uVar19;" type_identifier identifier ;) (declaration "long lVar20;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar21;" type_identifier identifier ;) (declaration "uint *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint local_5c;" type_identifier identifier ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }" { comment (expression_statement "FUN_0016cdf0("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })) (expression_statement "lVar13 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar13 = *(long *)(param_1 + 0x18)" identifier = (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 2" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }" { comment (expression_statement "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;) })) (expression_statement "lVar2 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x10)" identifier = (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }" if (parenthesized_expression "((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2))" ( (binary_expression "(lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)" (parenthesized_expression "(lVar13 < 0)" ( (binary_expression "lVar13 < 0" identifier < number_literal) )) || (parenthesized_expression "(*(long *)(param_2 + 0x10) < lVar13 + lVar2)" ( (binary_expression "*(long *)(param_2 + 0x10) < lVar13 + lVar2" (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) < (binary_expression "lVar13 + lVar2" identifier + identifier)) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }" { comment (expression_statement "FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");" (call_expression "FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view")" identifier (argument_list "("../../gold/output.h",0x6f,"get_output_view")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""get_output_view"" " string_content ") ))) ;) })) (expression_statement "puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);" (assignment_expression "puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13)" identifier = (cast_expression "(undefined8 *)(*(long *)(param_2 + 0x18) + lVar13)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x18) + lVar13)" ( (binary_expression "*(long *)(param_2 + 0x18) + lVar13" (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "lVar13 = *(long *)(param_1 + 0x1c0);" (assignment_expression "lVar13 = *(long *)(param_1 + 0x1c0)" identifier = (pointer_expression "*(long *)(param_1 + 0x1c0)" * (cast_expression "(long *)(param_1 + 0x1c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c0)" ( (binary_expression "param_1 + 0x1c0" identifier + number_literal) ))))) ;) (expression_statement "lVar20 = *(long *)(param_1 + 200);" (assignment_expression "lVar20 = *(long *)(param_1 + 200)" identifier = (pointer_expression "*(long *)(param_1 + 200)" * (cast_expression "(long *)(param_1 + 200)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) ))))) ;) (expression_statement "*puVar16 = 0x1800000007;" (assignment_expression "*puVar16 = 0x1800000007" (pointer_expression "*puVar16" * identifier) = number_literal) ;) (expression_statement "puVar22 = (uint *)(puVar16 + 3);" (assignment_expression "puVar22 = (uint *)(puVar16 + 3)" identifier = (cast_expression "(uint *)(puVar16 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 3)" ( (binary_expression "puVar16 + 3" identifier + number_literal) )))) ;) (expression_statement "lVar12 = *(long *)(param_1 + 0xc0);" (assignment_expression "lVar12 = *(long *)(param_1 + 0xc0)" identifier = (pointer_expression "*(long *)(param_1 + 0xc0)" * (cast_expression "(long *)(param_1 + 0xc0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc0)" ( (binary_expression "param_1 + 0xc0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);" (assignment_expression "*(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8)" (pointer_expression "*(int *)((long)puVar16 + 0xc)" * (cast_expression "(int *)((long)puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar16 + 0xc)" ( (binary_expression "(long)puVar16 + 0xc" (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(int)*(undefined8 *)(param_1 + 0x1c8)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(undefined8 *)(param_1 + 0x1c8)" * (cast_expression "(undefined8 *)(param_1 + 0x1c8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c8)" ( (binary_expression "param_1 + 0x1c8" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);" (assignment_expression "*(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0)" (pointer_expression "*(int *)(puVar16 + 2)" * (cast_expression "(int *)(puVar16 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 2)" ( (binary_expression "puVar16 + 2" identifier + number_literal) )))) = (cast_expression "(int)*(undefined8 *)(param_1 + 0x1d0)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(undefined8 *)(param_1 + 0x1d0)" * (cast_expression "(undefined8 *)(param_1 + 0x1d0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d0)" ( (binary_expression "param_1 + 0x1d0" identifier + number_literal) )))))) ;) (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x1d8);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x1d8)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x1d8)" * (cast_expression "(undefined8 *)(param_1 + 0x1d8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d8)" ( (binary_expression "param_1 + 0x1d8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 1) = (int)lVar13;" (assignment_expression "*(int *)(puVar16 + 1) = (int)lVar13" (pointer_expression "*(int *)(puVar16 + 1)" * (cast_expression "(int *)(puVar16 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 1)" ( (binary_expression "puVar16 + 1" identifier + number_literal) )))) = (cast_expression "(int)lVar13" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int *)((long)puVar16 + 0x14) = (int)uVar3;" (assignment_expression "*(int *)((long)puVar16 + 0x14) = (int)uVar3" (pointer_expression "*(int *)((long)puVar16 + 0x14)" * (cast_expression "(int *)((long)puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar16 + 0x14)" ( (binary_expression "(long)puVar16 + 0x14" (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "lVar8 = 0x18;" (assignment_expression "lVar8 = 0x18" identifier = number_literal) ;) (expression_statement "iVar17 = (int)(lVar20 - lVar12 >> 4);" (assignment_expression "iVar17 = (int)(lVar20 - lVar12 >> 4)" identifier = (cast_expression "(int)(lVar20 - lVar12 >> 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(lVar20 - lVar12 >> 4)" ( (binary_expression "lVar20 - lVar12 >> 4" (binary_expression "lVar20 - lVar12" identifier - identifier) >> number_literal) )))) ;) (if_statement "if (iVar17 != 0) {\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" { (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) (expression_statement "puVar15 = (undefined8 *)(lVar12 + 8);" (assignment_expression "puVar15 = (undefined8 *)(lVar12 + 8)" identifier = (cast_expression "(undefined8 *)(lVar12 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 8)" ( (binary_expression "lVar12 + 8" identifier + number_literal) )))) ;) (do_statement "do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));" do (compound_statement "{\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    }" { (expression_statement "puVar10 = puVar9 + 4;" (assignment_expression "puVar10 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)puVar9 = puVar15[-1];" (assignment_expression "*(undefined8 *)puVar9 = puVar15[-1]" (pointer_expression "*(undefined8 *)puVar9" * (cast_expression "(undefined8 *)puVar9" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (subscript_expression "puVar15[-1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined8 *)(puVar9 + 2) = *puVar15;" (assignment_expression "*(undefined8 *)(puVar9 + 2) = *puVar15" (pointer_expression "*(undefined8 *)(puVar9 + 2)" * (cast_expression "(undefined8 *)(puVar9 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 2)" ( (binary_expression "puVar9 + 2" identifier + number_literal) )))) = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5))" ( (binary_expression "puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5)" identifier != (cast_expression "(uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + (ulong)(iVar17 - 1) * 2 + 5)" ( (binary_expression "puVar16 + (ulong)(iVar17 - 1) * 2 + 5" (binary_expression "puVar16 + (ulong)(iVar17 - 1) * 2" identifier + (binary_expression "(ulong)(iVar17 - 1) * 2" (call_expression "(ulong)(iVar17 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar17 - 1)" ( (binary_expression "iVar17 - 1" identifier - number_literal) ))) * number_literal)) + number_literal) )))) )) ;) (expression_statement "puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;" (assignment_expression "puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4" identifier = (binary_expression "puVar22 + ((ulong)(iVar17 - 1) + 1) * 4" identifier + (binary_expression "((ulong)(iVar17 - 1) + 1) * 4" (parenthesized_expression "((ulong)(iVar17 - 1) + 1)" ( (binary_expression "(ulong)(iVar17 - 1) + 1" (call_expression "(ulong)(iVar17 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar17 - 1)" ( (binary_expression "iVar17 - 1" identifier - number_literal) ))) + number_literal) )) * number_literal))) ;) (expression_statement "lVar13 = *(long *)(param_1 + 0x1c0);" (assignment_expression "lVar13 = *(long *)(param_1 + 0x1c0)" identifier = (pointer_expression "*(long *)(param_1 + 0x1c0)" * (cast_expression "(long *)(param_1 + 0x1c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c0)" ( (binary_expression "param_1 + 0x1c0" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" identifier = (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (lVar8 != lVar13) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }" if (parenthesized_expression "(lVar8 != lVar13)" ( (binary_expression "lVar8 != lVar13" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }" { comment (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x4ee,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (expression_statement "lVar13 = *(long *)(param_1 + 0xd8);" (assignment_expression "lVar13 = *(long *)(param_1 + 0xd8)" identifier = (pointer_expression "*(long *)(param_1 + 0xd8)" * (cast_expression "(long *)(param_1 + 0xd8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;" (assignment_expression "uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555" identifier = (binary_expression "(*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(param_1 + 0xe0) - lVar13 >> 3)" ( (binary_expression "*(long *)(param_1 + 0xe0) - lVar13 >> 3" (binary_expression "*(long *)(param_1 + 0xe0) - lVar13" (pointer_expression "*(long *)(param_1 + 0xe0)" * (cast_expression "(long *)(param_1 + 0xe0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))) - identifier) >> number_literal) )) * number_literal)) ;) (if_statement "if (uVar19 != 0) {\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) (do_statement "do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);" do (compound_statement "{\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    }" { (expression_statement "puVar22 = puVar9 + 6;" (assignment_expression "puVar22 = puVar9 + 6" identifier = (binary_expression "puVar9 + 6" identifier + number_literal)) ;) (expression_statement "puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);" (assignment_expression "puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18)" identifier = (cast_expression "(undefined8 *)(lVar13 + uVar11 * 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + uVar11 * 0x18)" ( (binary_expression "lVar13 + uVar11 * 0x18" identifier + (binary_expression "uVar11 * 0x18" identifier * number_literal)) )))) ;) (expression_statement "*(undefined8 *)puVar9 = *puVar15;" (assignment_expression "*(undefined8 *)puVar9 = *puVar15" (pointer_expression "*(undefined8 *)puVar9" * (cast_expression "(undefined8 *)puVar9" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "*(undefined8 *)(puVar9 + 2) = puVar15[1];" (assignment_expression "*(undefined8 *)(puVar9 + 2) = puVar15[1]" (pointer_expression "*(undefined8 *)(puVar9 + 2)" * (cast_expression "(undefined8 *)(puVar9 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 2)" ( (binary_expression "puVar9 + 2" identifier + number_literal) )))) = (subscript_expression "puVar15[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined8 *)(puVar9 + 4) = puVar15[2];" (assignment_expression "*(undefined8 *)(puVar9 + 4) = puVar15[2]" (pointer_expression "*(undefined8 *)(puVar9 + 4)" * (cast_expression "(undefined8 *)(puVar9 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) = (subscript_expression "puVar15[2]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = (ulong)((int)uVar11 + 1);" (assignment_expression "uVar11 = (ulong)((int)uVar11 + 1)" identifier = (call_expression "(ulong)((int)uVar11 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar11 + 1)" ( (binary_expression "(int)uVar11 + 1" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) }) while (parenthesized_expression "(uVar11 < uVar19)" ( (binary_expression "uVar11 < uVar19" identifier < identifier) )) ;) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" identifier = (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (*(long *)(param_1 + 0x1c8) != lVar8) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x1c8) != lVar8)" ( (binary_expression "*(long *)(param_1 + 0x1c8) != lVar8" (pointer_expression "*(long *)(param_1 + 0x1c8)" * (cast_expression "(long *)(param_1 + 0x1c8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c8)" ( (binary_expression "param_1 + 0x1c8" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }" { comment (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x4fa,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (expression_statement "lVar13 = *(long *)(param_1 + 0xf0);" (assignment_expression "lVar13 = *(long *)(param_1 + 0xf0)" identifier = (pointer_expression "*(long *)(param_1 + 0xf0)" * (cast_expression "(long *)(param_1 + 0xf0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf0)" ( (binary_expression "param_1 + 0xf0" identifier + number_literal) ))))) ;) (if_statement "if (lVar13 != *(long *)(param_1 + 0xf8)) {\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" if (parenthesized_expression "(lVar13 != *(long *)(param_1 + 0xf8))" ( (binary_expression "lVar13 != *(long *)(param_1 + 0xf8)" identifier != (pointer_expression "*(long *)(param_1 + 0xf8)" * (cast_expression "(long *)(param_1 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) ))))) )) (compound_statement "{\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" { (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));" do (compound_statement "{\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    }" { (expression_statement "plVar1 = (long *)(lVar13 + uVar19 * 0x18);" (assignment_expression "plVar1 = (long *)(lVar13 + uVar19 * 0x18)" identifier = (cast_expression "(long *)(lVar13 + uVar19 * 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + uVar19 * 0x18)" ( (binary_expression "lVar13 + uVar19 * 0x18" identifier + (binary_expression "uVar19 * 0x18" identifier * number_literal)) )))) ;) (expression_statement "uVar18 = *(uint *)(plVar1 + 1);" (assignment_expression "uVar18 = *(uint *)(plVar1 + 1)" identifier = (pointer_expression "*(uint *)(plVar1 + 1)" * (cast_expression "(uint *)(plVar1 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar1 + 1)" ( (binary_expression "plVar1 + 1" identifier + number_literal) ))))) ;) (expression_statement "plVar4 = (long *)plVar1[2];" (assignment_expression "plVar4 = (long *)plVar1[2]" identifier = (cast_expression "(long *)plVar1[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar1[2]" identifier [ number_literal ]))) ;) (expression_statement "plVar1 = (long *)*plVar1;" (assignment_expression "plVar1 = (long *)*plVar1" identifier = (cast_expression "(long *)*plVar1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar1" * identifier))) ;) (expression_statement "lVar20 = *plVar4;" (assignment_expression "lVar20 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;) (if_statement "if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }" if (parenthesized_expression "((int)uVar18 < 0)" ( (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        uVar18 = (iVar17 + -1) - uVar18;\n      }" { (expression_statement "uVar18 = (iVar17 + -1) - uVar18;" (assignment_expression "uVar18 = (iVar17 + -1) - uVar18" identifier = (binary_expression "(iVar17 + -1) - uVar18" (parenthesized_expression "(iVar17 + -1)" ( (binary_expression "iVar17 + -1" identifier + number_literal) )) - identifier)) ;) })) (if_statement "if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }" if (parenthesized_expression "(plVar4[1] != lVar20)" ( (binary_expression "plVar4[1] != lVar20" (subscript_expression "plVar4[1]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) (do_statement "do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));" do (compound_statement "{\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        }" { (expression_statement "puVar10 = (uint *)(lVar20 + uVar19 * 0x18);" (assignment_expression "puVar10 = (uint *)(lVar20 + uVar19 * 0x18)" identifier = (cast_expression "(uint *)(lVar20 + uVar19 * 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + uVar19 * 0x18)" ( (binary_expression "lVar20 + uVar19 * 0x18" identifier + (binary_expression "uVar19 * 0x18" identifier * number_literal)) )))) ;) (expression_statement "uVar7 = *puVar10;" (assignment_expression "uVar7 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (if_statement "if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n            lVar12 = 0;\n          }" { (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }" else (compound_statement "{\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }" { (if_statement "if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }" if (parenthesized_expression "(*(code **)(*plVar1 + 0xc0) == FUN_0014c900)" ( (binary_expression "*(code **)(*plVar1 + 0xc0) == FUN_0014c900" (pointer_expression "*(code **)(*plVar1 + 0xc0)" * (cast_expression "(code **)(*plVar1 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0xc0)" ( (binary_expression "*plVar1 + 0xc0" (pointer_expression "*plVar1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }" { (if_statement "if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }" if (parenthesized_expression "((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7)" ( (binary_expression "(ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7" (call_expression "(ulong)(plVar1[0xb] - plVar1[10] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(plVar1[0xb] - plVar1[10] >> 3)" ( (binary_expression "plVar1[0xb] - plVar1[10] >> 3" (binary_expression "plVar1[0xb] - plVar1[10]" (subscript_expression "plVar1[0xb]" identifier [ number_literal ]) - (subscript_expression "plVar1[10]" identifier [ number_literal ])) >> number_literal) ))) <= (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }" { comment (expression_statement "FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section")" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") ))) ;) })) (expression_statement "lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);" (assignment_expression "lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8)" identifier = (pointer_expression "*(long *)(plVar1[10] + (ulong)uVar7 * 8)" * (cast_expression "(long *)(plVar1[10] + (ulong)uVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar1[10] + (ulong)uVar7 * 8)" ( (binary_expression "plVar1[10] + (ulong)uVar7 * 8" (subscript_expression "plVar1[10]" identifier [ number_literal ]) + (binary_expression "(ulong)uVar7 * 8" (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ))))) ;) }) (else_clause "else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }" else (compound_statement "{\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }" { (expression_statement "lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);" (assignment_expression "lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1)" identifier = (call_expression "(**(code **)(*plVar1 + 0xc0))(plVar1)" (parenthesized_expression "(**(code **)(*plVar1 + 0xc0))" ( (pointer_expression "**(code **)(*plVar1 + 0xc0)" * (pointer_expression "*(code **)(*plVar1 + 0xc0)" * (cast_expression "(code **)(*plVar1 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0xc0)" ( (binary_expression "*plVar1 + 0xc0" (pointer_expression "*plVar1" * identifier) + number_literal) ))))) )) (argument_list "(plVar1)" ( identifier )))) ;) }))) (if_statement "if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }" if (parenthesized_expression "((*(byte *)(lVar13 + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(lVar13 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(lVar13 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar13 + 0x20) & 1" (pointer_expression "*(byte *)(lVar13 + 0x20)" * (cast_expression "(byte *)(lVar13 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x20)" ( (binary_expression "lVar13 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }" { comment (expression_statement "FUN_0016cdf0("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (expression_statement "lVar13 = *(long *)(lVar13 + 8);" (assignment_expression "lVar13 = *(long *)(lVar13 + 8)" identifier = (pointer_expression "*(long *)(lVar13 + 8)" * (cast_expression "(long *)(lVar13 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 8)" ( (binary_expression "lVar13 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);" (assignment_expression "lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10)" identifier = (call_expression "(**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10)" (parenthesized_expression "(**(code **)(*plVar1 + 0xd0))" ( (pointer_expression "**(code **)(*plVar1 + 0xd0)" * (pointer_expression "*(code **)(*plVar1 + 0xd0)" * (cast_expression "(code **)(*plVar1 + 0xd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0xd0)" ( (binary_expression "*plVar1 + 0xd0" (pointer_expression "*plVar1" * identifier) + number_literal) ))))) )) (argument_list "(plVar1,*puVar10)" ( identifier , (pointer_expression "*puVar10" * identifier) )))) ;) (expression_statement "lVar20 = *plVar4;" (assignment_expression "lVar20 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;) (expression_statement "lVar12 = lVar12 + lVar13;" (assignment_expression "lVar12 = lVar12 + lVar13" identifier = (binary_expression "lVar12 + lVar13" identifier + identifier)) ;) }))) (expression_statement "lVar13 = *(long *)(puVar10 + 2);" (assignment_expression "lVar13 = *(long *)(puVar10 + 2)" identifier = (pointer_expression "*(long *)(puVar10 + 2)" * (cast_expression "(long *)(puVar10 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 2)" ( (binary_expression "puVar10 + 2" identifier + number_literal) ))))) ;) (expression_statement "puVar22 = puVar9 + 5;" (assignment_expression "puVar22 = puVar9 + 5" identifier = (binary_expression "puVar9 + 5" identifier + number_literal)) ;) (expression_statement "lVar8 = *(long *)(puVar10 + 4);" (assignment_expression "lVar8 = *(long *)(puVar10 + 4)" identifier = (pointer_expression "*(long *)(puVar10 + 4)" * (cast_expression "(long *)(puVar10 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 4)" ( (binary_expression "puVar10 + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar9[4] = uVar18;" (assignment_expression "puVar9[4] = uVar18" (subscript_expression "puVar9[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[2] = (uint)(lVar12 + lVar8);" (assignment_expression "puVar9[2] = (uint)(lVar12 + lVar8)" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (call_expression "(uint)(lVar12 + lVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(lVar12 + lVar8)" ( (binary_expression "lVar12 + lVar8" identifier + identifier) )))) ;) (expression_statement "lVar5 = plVar4[1];" (assignment_expression "lVar5 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar9 = (uint)(lVar13 + lVar12);" (assignment_expression "*puVar9 = (uint)(lVar13 + lVar12)" (pointer_expression "*puVar9" * identifier) = (call_expression "(uint)(lVar13 + lVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(lVar13 + lVar12)" ( (binary_expression "lVar13 + lVar12" identifier + identifier) )))) ;) (expression_statement "puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);" (assignment_expression "puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20)" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = (call_expression "(uint)((ulong)(lVar12 + lVar8) >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulong)(lVar12 + lVar8) >> 0x20)" ( (binary_expression "(ulong)(lVar12 + lVar8) >> 0x20" (call_expression "(ulong)(lVar12 + lVar8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar12 + lVar8)" ( (binary_expression "lVar12 + lVar8" identifier + identifier) ))) >> number_literal) )))) ;) (expression_statement "uVar19 = (ulong)((int)uVar19 + 1);" (assignment_expression "uVar19 = (ulong)((int)uVar19 + 1)" identifier = (call_expression "(ulong)((int)uVar19 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar19 + 1)" ( (binary_expression "(int)uVar19 + 1" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);" (assignment_expression "puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20)" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = (call_expression "(uint)((ulong)(lVar13 + lVar12) >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulong)(lVar13 + lVar12) >> 0x20)" ( (binary_expression "(ulong)(lVar13 + lVar12) >> 0x20" (call_expression "(ulong)(lVar13 + lVar12)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar13 + lVar12)" ( (binary_expression "lVar13 + lVar12" identifier + identifier) ))) >> number_literal) )))) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) }) while (parenthesized_expression "(uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555))" ( (binary_expression "uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555)" identifier < (call_expression "(ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((lVar5 - lVar20 >> 3) * -0x5555555555555555)" ( (binary_expression "(lVar5 - lVar20 >> 3) * -0x5555555555555555" (parenthesized_expression "(lVar5 - lVar20 >> 3)" ( (binary_expression "lVar5 - lVar20 >> 3" (binary_expression "lVar5 - lVar20" identifier - identifier) >> number_literal) )) * number_literal) )))) )) ;) (expression_statement "lVar13 = *(long *)(param_1 + 0xf0);" (assignment_expression "lVar13 = *(long *)(param_1 + 0xf0)" identifier = (pointer_expression "*(long *)(param_1 + 0xf0)" * (cast_expression "(long *)(param_1 + 0xf0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf0)" ( (binary_expression "param_1 + 0xf0" identifier + number_literal) ))))) ;) })) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) (expression_statement "uVar19 = (ulong)local_5c;" (assignment_expression "uVar19 = (ulong)local_5c" identifier = (cast_expression "(ulong)local_5c" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555))" ( (binary_expression "uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555)" identifier < (call_expression "(ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555)" ( (binary_expression "(*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(param_1 + 0xf8) - lVar13 >> 3)" ( (binary_expression "*(long *)(param_1 + 0xf8) - lVar13 >> 3" (binary_expression "*(long *)(param_1 + 0xf8) - lVar13" (pointer_expression "*(long *)(param_1 + 0xf8)" * (cast_expression "(long *)(param_1 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) - identifier) >> number_literal) )) * number_literal) )))) )) ;) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" identifier = (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (*(long *)(param_1 + 0x1d0) != lVar8) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x1d0) != lVar8)" ( (binary_expression "*(long *)(param_1 + 0x1d0) != lVar8" (pointer_expression "*(long *)(param_1 + 0x1d0)" * (cast_expression "(long *)(param_1 + 0x1d0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d0)" ( (binary_expression "param_1 + 0x1d0" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }" { comment (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x518,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (expression_statement "uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);" (assignment_expression "uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8)" identifier = (pointer_expression "*(ulong *)(*(long *)(param_1 + 0x108) + 8)" * (cast_expression "(ulong *)(*(long *)(param_1 + 0x108) + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x108) + 8)" ( (binary_expression "*(long *)(param_1 + 0x108) + 8" (pointer_expression "*(long *)(param_1 + 0x108)" * (cast_expression "(long *)(param_1 + 0x108)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (uVar19 != 0) {\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" { (expression_statement "lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);" (assignment_expression "lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0x108) + 0x10)" * (cast_expression "(long *)(*(long *)(param_1 + 0x108) + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x108) + 0x10)" ( (binary_expression "*(long *)(param_1 + 0x108) + 0x10" (pointer_expression "*(long *)(param_1 + 0x108)" * (cast_expression "(long *)(param_1 + 0x108)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) (do_statement "do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);" do (compound_statement "{\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    }" { (expression_statement "puVar6 = *(ulong **)(lVar13 + uVar11 * 8);" (assignment_expression "puVar6 = *(ulong **)(lVar13 + uVar11 * 8)" identifier = (pointer_expression "*(ulong **)(lVar13 + uVar11 * 8)" * (cast_expression "(ulong **)(lVar13 + uVar11 * 8)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar13 + uVar11 * 8)" ( (binary_expression "lVar13 + uVar11 * 8" identifier + (binary_expression "uVar11 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }" if (parenthesized_expression "(puVar6 == (ulong *)0x0)" ( (binary_expression "puVar6 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar7 = 0;\n        uVar18 = 0;\n      }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }" else (compound_statement "{\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }" { (if_statement "if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x180) < *puVar6)" ( (binary_expression "*(ulong *)(param_1 + 0x180) < *puVar6" (pointer_expression "*(ulong *)(param_1 + 0x180)" * (cast_expression "(ulong *)(param_1 + 0x180)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x180)" ( (binary_expression "param_1 + 0x180" identifier + number_literal) )))) < (pointer_expression "*puVar6" * identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }" { comment (expression_statement "FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");" (call_expression "FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key")" identifier (argument_list "("../../gold/stringpool.h",0x108,"get_offset_from_key")" ( (string_literal ""../../gold/stringpool.h"" " string_content ") , number_literal , (string_literal ""get_offset_from_key"" " string_content ") ))) ;) })) (expression_statement "uVar21 = *puVar6 - 1;" (assignment_expression "uVar21 = *puVar6 - 1" identifier = (binary_expression "*puVar6 - 1" (pointer_expression "*puVar6" * identifier) - number_literal)) ;) (expression_statement "uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);" (assignment_expression "uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8)" identifier = (pointer_expression "*(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8)" * (cast_expression "(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8)" ( (binary_expression "*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8" (pointer_expression "*(long *)(param_1 + 0x128)" * (cast_expression "(long *)(param_1 + 0x128)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) + (binary_expression "(ulong)*(uint *)((long)puVar6 + 0xc) * 8" (binary_expression "(ulong)*(uint *)((long)puVar6 + 0xc)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)((long)puVar6 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 0xc)" ( (binary_expression "(long)puVar6 + 0xc" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);" (assignment_expression "uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8)" identifier = (binary_expression "((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8)" (parenthesized_expression "((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8))" ( (binary_expression "(int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" (cast_expression "(int)*(undefined8 *)(param_1 + 0x1e0)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(undefined8 *)(param_1 + 0x1e0)" * (cast_expression "(undefined8 *)(param_1 + 0x1e0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) ))))) + (cast_expression "(int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" * (cast_expression "(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" ( (binary_expression "*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8" (pointer_expression "*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18)" * (cast_expression "(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18" (pointer_expression "*(long *)(param_1 + 0x168)" * (cast_expression "(long *)(param_1 + 0x168)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x168)" ( (binary_expression "param_1 + 0x168" identifier + number_literal) )))) + (binary_expression "(uVar21 >> 0xd) * 0x18" (parenthesized_expression "(uVar21 >> 0xd)" ( (binary_expression "uVar21 >> 0xd" identifier >> number_literal) )) * number_literal)) )))) + (binary_expression "(ulong)((uint)uVar21 & 0x1fff) * 8" (call_expression "(ulong)((uint)uVar21 & 0x1fff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)uVar21 & 0x1fff)" ( (binary_expression "(uint)uVar21 & 0x1fff" (cast_expression "(uint)uVar21" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) * number_literal)) )))))) )) - (pointer_expression "*(int *)(param_1 + 0x1d8)" * (cast_expression "(int *)(param_1 + 0x1d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d8)" ( (binary_expression "param_1 + 0x1d8" identifier + number_literal) )))))) ;) }))) (expression_statement "*puVar9 = uVar7;" (assignment_expression "*puVar9 = uVar7" (pointer_expression "*puVar9" * identifier) = identifier) ;) (expression_statement "uVar11 = (ulong)((int)uVar11 + 1);" (assignment_expression "uVar11 = (ulong)((int)uVar11 + 1)" identifier = (call_expression "(ulong)((int)uVar11 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar11 + 1)" ( (binary_expression "(int)uVar11 + 1" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar22 = puVar9 + 2;" (assignment_expression "puVar22 = puVar9 + 2" identifier = (binary_expression "puVar9 + 2" identifier + number_literal)) ;) (expression_statement "puVar9[1] = uVar18;" (assignment_expression "puVar9[1] = uVar18" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) }) while (parenthesized_expression "(uVar11 < uVar19)" ( (binary_expression "uVar11 < uVar19" identifier < identifier) )) ;) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" identifier = (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (*(long *)(param_1 + 0x1d8) == lVar8) {\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x1d8) == lVar8)" ( (binary_expression "*(long *)(param_1 + 0x1d8) == lVar8" (pointer_expression "*(long *)(param_1 + 0x1d8)" * (cast_expression "(long *)(param_1 + 0x1d8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d8)" ( (binary_expression "param_1 + 0x1d8" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }" { (expression_statement "lVar13 = *(long *)(param_1 + 0x110);" (assignment_expression "lVar13 = *(long *)(param_1 + 0x110)" identifier = (pointer_expression "*(long *)(param_1 + 0x110)" * (cast_expression "(long *)(param_1 + 0x110)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;" (assignment_expression "uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3" identifier = (binary_expression "*(long *)(param_1 + 0x118) - lVar13 >> 3" (binary_expression "*(long *)(param_1 + 0x118) - lVar13" (pointer_expression "*(long *)(param_1 + 0x118)" * (cast_expression "(long *)(param_1 + 0x118)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) - identifier) >> number_literal)) ;) (if_statement "if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) (do_statement "do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);" do (compound_statement "{\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      }" { (expression_statement "plVar1 = *(long **)(lVar13 + uVar11 * 8);" (assignment_expression "plVar1 = *(long **)(lVar13 + uVar11 * 8)" identifier = (pointer_expression "*(long **)(lVar13 + uVar11 * 8)" * (cast_expression "(long **)(lVar13 + uVar11 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar13 + uVar11 * 8)" ( (binary_expression "lVar13 + uVar11 * 8" identifier + (binary_expression "uVar11 * 8" identifier * number_literal)) ))))) ;) (expression_statement "puVar22 = puVar9 + 1;" (assignment_expression "puVar22 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "lVar20 = *plVar1;" (assignment_expression "lVar20 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (expression_statement "uVar21 = plVar1[1] - lVar20 >> 3;" (assignment_expression "uVar21 = plVar1[1] - lVar20 >> 3" identifier = (binary_expression "plVar1[1] - lVar20 >> 3" (binary_expression "plVar1[1] - lVar20" (subscript_expression "plVar1[1]" identifier [ number_literal ]) - identifier) >> number_literal)) ;) (expression_statement "*puVar9 = (uint)uVar21;" (assignment_expression "*puVar9 = (uint)uVar21" (pointer_expression "*puVar9" * identifier) = (cast_expression "(uint)uVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }" if (parenthesized_expression "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) (do_statement "do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);" do (compound_statement "{\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          }" { (expression_statement "puVar10 = (uint *)(lVar20 + uVar14 * 8);" (assignment_expression "puVar10 = (uint *)(lVar20 + uVar14 * 8)" identifier = (cast_expression "(uint *)(lVar20 + uVar14 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + uVar14 * 8)" ( (binary_expression "lVar20 + uVar14 * 8" identifier + (binary_expression "uVar14 * 8" identifier * number_literal)) )))) ;) (expression_statement "uVar18 = *puVar10;" (assignment_expression "uVar18 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (if_statement "if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }" if (parenthesized_expression "((int)uVar18 < 0)" ( (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              uVar18 = (iVar17 + -1) - uVar18;\n            }" { (expression_statement "uVar18 = (iVar17 + -1) - uVar18;" (assignment_expression "uVar18 = (iVar17 + -1) - uVar18" identifier = (binary_expression "(iVar17 + -1) - uVar18" (parenthesized_expression "(iVar17 + -1)" ( (binary_expression "iVar17 + -1" identifier + number_literal) )) - identifier)) ;) })) (expression_statement "puVar22 = puVar9 + 1;" (assignment_expression "puVar22 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "*puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;" (assignment_expression "*puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18" (pointer_expression "*puVar9" * identifier) = (binary_expression "uVar18 | (uint)(byte)puVar10[1] << 0x18" identifier | (binary_expression "(uint)(byte)puVar10[1] << 0x18" (cast_expression "(uint)(byte)puVar10[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar10[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) << number_literal))) ;) (expression_statement "uVar14 = (ulong)((int)uVar14 + 1);" (assignment_expression "uVar14 = (ulong)((int)uVar14 + 1)" identifier = (call_expression "(ulong)((int)uVar14 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar14 + 1)" ( (binary_expression "(int)uVar14 + 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) }) while (parenthesized_expression "(uVar14 < uVar21)" ( (binary_expression "uVar14 < uVar21" identifier < identifier) )) ;) })) (expression_statement "uVar11 = (ulong)((int)uVar11 + 1);" (assignment_expression "uVar11 = (ulong)((int)uVar11 + 1)" identifier = (call_expression "(ulong)((int)uVar11 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar11 + 1)" ( (binary_expression "(int)uVar11 + 1" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) }) while (parenthesized_expression "(uVar11 < uVar19)" ( (binary_expression "uVar11 < uVar19" identifier < identifier) )) ;) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" identifier = (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0x1e0) == lVar8)" ( (binary_expression "*(long *)(param_1 + 0x1e0) == lVar8" (pointer_expression "*(long *)(param_1 + 0x1e0)" * (cast_expression "(long *)(param_1 + 0x1e0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }" { (expression_statement "FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);" (call_expression "FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8)" identifier (argument_list "(param_1 + 0x130,puVar22,lVar2 - lVar8)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) , identifier , (binary_expression "lVar2 - lVar8" identifier - identifier) ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x53f,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) comment (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x52b,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: void do_write(Gdb_index * this, Output_file * of) */\n\nvoid __thiscall gold::Gdb_index::do_write(Gdb_index *this,Output_file *of)\n\n{\n  pointer pTVar1;\n  pointer pPVar2;\n  pointer ppVar3;\n  byte bVar4;\n  long lVar5;\n  pointer pCVar6;\n  pointer pCVar7;\n  off_t oVar8;\n  pointer pTVar9;\n  Dwarf_range_list *pDVar10;\n  Relobj *pRVar11;\n  _func_int_varargs *p_Var12;\n  pointer ppOVar13;\n  uint64_t uVar14;\n  pointer pRVar15;\n  Gdb_symbol **ppGVar16;\n  Gdb_symbol *pGVar17;\n  pointer ppvVar18;\n  vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_> *pvVar19;\n  pointer ppVar20;\n  int iVar21;\n  uint uVar22;\n  long lVar23;\n  uint64_t *puVar24;\n  uint64_t *puVar25;\n  ulong uVar26;\n  undefined4 extraout_var;\n  Output_section *pOVar27;\n  ulong uVar28;\n  long lVar29;\n  uint64_t *puVar30;\n  pointer pPVar31;\n  uchar *puVar32;\n  int iVar33;\n  uint uVar34;\n  off_t oVar35;\n  ulong uVar36;\n  pointer pRVar37;\n  ulong uVar38;\n  uint64_t *buffer;\n  uint local_5c;\n  undefined4 extraout_var_00;\n  \n  bVar4 = (this->super_Output_section_data).super_Output_data.field_0x20;\n  if ((bVar4 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\n  lVar23 = (this->super_Output_section_data).super_Output_data.offset_;\n  if ((bVar4 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar5 = (this->super_Output_section_data).super_Output_data.data_size_;\n  if ((lVar23 < 0) || (of->file_size_ < lVar23 + lVar5)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }\n  puVar32 = of->base_ + lVar23;\n  oVar35 = this->tu_offset_;\n  pCVar6 = (this->comp_units_).\n           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_finish;\n  puVar32[0] = '\a';\n  puVar32[1] = '\0';\n  puVar32[2] = '\0';\n  puVar32[3] = '\0';\n  puVar32[4] = '\x18';\n  puVar32[5] = '\0';\n  puVar32[6] = '\0';\n  puVar32[7] = '\0';\n  buffer = (uint64_t *)(puVar32 + 0x18);\n  pCVar7 = (this->comp_units_).\n           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_start;\n  *(int *)(puVar32 + 0xc) = (int)this->addr_offset_;\n  *(int *)(puVar32 + 0x10) = (int)this->symtab_offset_;\n  oVar8 = this->cu_pool_offset_;\n  *(int *)(puVar32 + 8) = (int)oVar35;\n  *(int *)(puVar32 + 0x14) = (int)oVar8;\n  lVar23 = 0x18;\n  iVar33 = (int)((long)pCVar6 - (long)pCVar7 >> 4);\n  if (iVar33 != 0) {\n    puVar24 = buffer;\n    puVar30 = &pCVar7->cu_length;\n    do {\n      puVar25 = puVar24 + 2;\n      *puVar24 = ((Comp_unit *)(puVar30 + -1))->cu_offset;\n      puVar24[1] = *puVar30;\n      puVar24 = puVar25;\n      puVar30 = puVar30 + 2;\n    } while (puVar25 != (uint64_t *)(puVar32 + (ulong)(iVar33 - 1) * 0x10 + 0x28));\n    buffer = buffer + ((ulong)(iVar33 - 1) + 1) * 2;\n    oVar35 = this->tu_offset_;\n    lVar23 = (long)buffer - (long)puVar32;\n  }\n  if (lVar23 != oVar35) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }\n  pTVar9 = (this->type_units_).\n           super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n           ._M_impl._M_start;\n  uVar36 = ((long)(this->type_units_).\n                  super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n                  ._M_impl._M_finish - (long)pTVar9 >> 3) * -0x5555555555555555;\n  if (uVar36 != 0) {\n    uVar26 = 0;\n    puVar24 = buffer;\n    do {\n      buffer = puVar24 + 3;\n      pTVar1 = pTVar9 + uVar26;\n      *puVar24 = pTVar1->tu_offset;\n      puVar24[1] = pTVar1->type_offset;\n      puVar24[2] = pTVar1->type_signature;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      puVar24 = buffer;\n    } while (uVar26 < uVar36);\n    lVar23 = (long)buffer - (long)puVar32;\n  }\n  if (this->addr_offset_ != lVar23) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }\n  pPVar31 = (this->ranges_).\n            super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n            ._M_impl._M_start;\n  if (pPVar31 !=\n      (this->ranges_).\n      super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n      ._M_impl._M_finish) {\n    local_5c = 0;\n    uVar36 = 0;\n    do {\n      pPVar2 = pPVar31 + uVar36;\n      uVar34 = pPVar2->cu_index;\n      pDVar10 = pPVar2->ranges;\n      pRVar11 = pPVar2->object;\n      pRVar37 = (pDVar10->range_list_).\n                super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                ._M_impl._M_start;\n      if ((int)uVar34 < 0) {\n        uVar34 = (iVar33 + -1) - uVar34;\n      }\n      if ((pDVar10->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish != pRVar37) {\n        uVar36 = 0;\n        puVar24 = buffer;\n        do {\n          pRVar15 = pRVar37 + uVar36;\n          uVar22 = pRVar15->shndx;\n          if (uVar22 == 0) {\n            lVar23 = 0;\n          }\n          else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }\n          buffer = (uint64_t *)((long)puVar24 + 0x14);\n          lVar29 = pRVar15->start + lVar23;\n          lVar23 = lVar23 + pRVar15->end;\n          *(uint *)(puVar24 + 2) = uVar34;\n          *(uint *)(puVar24 + 1) = (uint)lVar23;\n          pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;\n          *(uint *)puVar24 = (uint)lVar29;\n          *(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);\n          uVar36 = (ulong)((int)uVar36 + 1);\n          *(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);\n          puVar24 = buffer;\n        } while (uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555));\n        pPVar31 = (this->ranges_).\n                  super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                  ._M_impl._M_start;\n      }\n      local_5c = local_5c + 1;\n      uVar36 = (ulong)local_5c;\n    } while (uVar36 < (ulong)(((long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3) * -0x5555555555555555)\n            );\n    lVar23 = (long)buffer - (long)puVar32;\n  }\n  if (this->symtab_offset_ != lVar23) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x518,"do_write");\n  }\n  uVar36 = this->gdb_symtab_->capacity_;\n  if (uVar36 != 0) {\n    ppGVar16 = this->gdb_symtab_->hashtab_;\n    uVar26 = 0;\n    puVar24 = buffer;\n    do {\n      pGVar17 = ppGVar16[uVar26];\n      if (pGVar17 == (Gdb_symbol *)0x0) {\n        uVar22 = 0;\n        uVar34 = 0;\n      }\n      else {\n        if ((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar38 = pGVar17->name_key - 1;\n        uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index);\n        uVar22 = ((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_;\n      }\n      *(uint *)puVar24 = uVar22;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      buffer = puVar24 + 1;\n      *(uint *)((long)puVar24 + 4) = uVar34;\n      puVar24 = buffer;\n    } while (uVar26 < uVar36);\n    lVar23 = (long)buffer - (long)puVar32;\n  }\n  if (this->cu_pool_offset_ == lVar23) {\n    ppvVar18 = (this->cu_vector_list_).\n               super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n               ._M_impl._M_start;\n    uVar36 = (long)(this->cu_vector_list_).\n                   super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n                   ._M_impl._M_finish - (long)ppvVar18 >> 3;\n    if (uVar36 != 0) {\n      uVar26 = 0;\n      puVar24 = buffer;\n      do {\n        pvVar19 = ppvVar18[uVar26];\n        buffer = (uint64_t *)((long)puVar24 + 4);\n        ppVar20 = (pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl._M_start;\n        uVar38 = (long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20 >> 3;\n        *(uint *)puVar24 = (uint)uVar38;\n        if (uVar38 != 0) {\n          uVar28 = 0;\n          puVar24 = buffer;\n          do {\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          } while (uVar28 < uVar38);\n        }\n        uVar26 = (ulong)((int)uVar26 + 1);\n        puVar24 = buffer;\n      } while (uVar26 < uVar36);\n      lVar23 = (long)buffer - (long)puVar32;\n    }\n    if (this->stringpool_offset_ == lVar23) {\n      Stringpool_template<char>::write_to_buffer(&this->stringpool_,(uchar *)buffer,lVar5 - lVar23);\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x53f,"do_write");\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/gdb-index.cc",0x52b,"do_write");\n}\n\n" comment comment (function_definition "void __thiscall gold::Gdb_index::do_write(Gdb_index *this,Output_file *of)\n\n{\n  pointer pTVar1;\n  pointer pPVar2;\n  pointer ppVar3;\n  byte bVar4;\n  long lVar5;\n  pointer pCVar6;\n  pointer pCVar7;\n  off_t oVar8;\n  pointer pTVar9;\n  Dwarf_range_list *pDVar10;\n  Relobj *pRVar11;\n  _func_int_varargs *p_Var12;\n  pointer ppOVar13;\n  uint64_t uVar14;\n  pointer pRVar15;\n  Gdb_symbol **ppGVar16;\n  Gdb_symbol *pGVar17;\n  pointer ppvVar18;\n  vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_> *pvVar19;\n  pointer ppVar20;\n  int iVar21;\n  uint uVar22;\n  long lVar23;\n  uint64_t *puVar24;\n  uint64_t *puVar25;\n  ulong uVar26;\n  undefined4 extraout_var;\n  Output_section *pOVar27;\n  ulong uVar28;\n  long lVar29;\n  uint64_t *puVar30;\n  pointer pPVar31;\n  uchar *puVar32;\n  int iVar33;\n  uint uVar34;\n  off_t oVar35;\n  ulong uVar36;\n  pointer pRVar37;\n  ulong uVar38;\n  uint64_t *buffer;\n  uint local_5c;\n  undefined4 extraout_var_00;\n  \n  bVar4 = (this->super_Output_section_data).super_Output_data.field_0x20;\n  if ((bVar4 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\n  lVar23 = (this->super_Output_section_data).super_Output_data.offset_;\n  if ((bVar4 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar5 = (this->super_Output_section_data).super_Output_data.data_size_;\n  if ((lVar23 < 0) || (of->file_size_ < lVar23 + lVar5)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }\n  puVar32 = of->base_ + lVar23;\n  oVar35 = this->tu_offset_;\n  pCVar6 = (this->comp_units_).\n           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_finish;\n  puVar32[0] = '\a';\n  puVar32[1] = '\0';\n  puVar32[2] = '\0';\n  puVar32[3] = '\0';\n  puVar32[4] = '\x18';\n  puVar32[5] = '\0';\n  puVar32[6] = '\0';\n  puVar32[7] = '\0';\n  buffer = (uint64_t *)(puVar32 + 0x18);\n  pCVar7 = (this->comp_units_).\n           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_start;\n  *(int *)(puVar32 + 0xc) = (int)this->addr_offset_;\n  *(int *)(puVar32 + 0x10) = (int)this->symtab_offset_;\n  oVar8 = this->cu_pool_offset_;\n  *(int *)(puVar32 + 8) = (int)oVar35;\n  *(int *)(puVar32 + 0x14) = (int)oVar8;\n  lVar23 = 0x18;\n  iVar33 = (int)((long)pCVar6 - (long)pCVar7 >> 4);\n  if (iVar33 != 0) {\n    puVar24 = buffer;\n    puVar30 = &pCVar7->cu_length;\n    do {\n      puVar25 = puVar24 + 2;\n      *puVar24 = ((Comp_unit *)(puVar30 + -1))->cu_offset;\n      puVar24[1] = *puVar30;\n      puVar24 = puVar25;\n      puVar30 = puVar30 + 2;\n    } while (puVar25 != (uint64_t *)(puVar32 + (ulong)(iVar33 - 1) * 0x10 + 0x28));\n    buffer = buffer + ((ulong)(iVar33 - 1) + 1) * 2;\n    oVar35 = this->tu_offset_;\n    lVar23 = (long)buffer - (long)puVar32;\n  }\n  if (lVar23 != oVar35) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }\n  pTVar9 = (this->type_units_).\n           super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n           ._M_impl._M_start;\n  uVar36 = ((long)(this->type_units_).\n                  super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n                  ._M_impl._M_finish - (long)pTVar9 >> 3) * -0x5555555555555555;\n  if (uVar36 != 0) {\n    uVar26 = 0;\n    puVar24 = buffer;\n    do {\n      buffer = puVar24 + 3;\n      pTVar1 = pTVar9 + uVar26;\n      *puVar24 = pTVar1->tu_offset;\n      puVar24[1] = pTVar1->type_offset;\n      puVar24[2] = pTVar1->type_signature;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      puVar24 = buffer;\n    } while (uVar26 < uVar36);\n    lVar23 = (long)buffer - (long)puVar32;\n  }\n  if (this->addr_offset_ != lVar23) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }\n  pPVar31 = (this->ranges_).\n            super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n            ._M_impl._M_start;\n  if (pPVar31 !=\n      (this->ranges_).\n      super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n      ._M_impl._M_finish) {\n    local_5c = 0;\n    uVar36 = 0;\n    do {\n      pPVar2 = pPVar31 + uVar36;\n      uVar34 = pPVar2->cu_index;\n      pDVar10 = pPVar2->ranges;\n      pRVar11 = pPVar2->object;\n      pRVar37 = (pDVar10->range_list_).\n                super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                ._M_impl._M_start;\n      if ((int)uVar34 < 0) {\n        uVar34 = (iVar33 + -1) - uVar34;\n      }\n      if ((pDVar10->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish != pRVar37) {\n        uVar36 = 0;\n        puVar24 = buffer;\n        do {\n          pRVar15 = pRVar37 + uVar36;\n          uVar22 = pRVar15->shndx;\n          if (uVar22 == 0) {\n            lVar23 = 0;\n          }\n          else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }\n          buffer = (uint64_t *)((long)puVar24 + 0x14);\n          lVar29 = pRVar15->start + lVar23;\n          lVar23 = lVar23 + pRVar15->end;\n          *(uint *)(puVar24 + 2) = uVar34;\n          *(uint *)(puVar24 + 1) = (uint)lVar23;\n          pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;\n          *(uint *)puVar24 = (uint)lVar29;\n          *(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);\n          uVar36 = (ulong)((int)uVar36 + 1);\n          *(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);\n          puVar24 = buffer;\n        } while (uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555));\n        pPVar31 = (this->ranges_).\n                  super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                  ._M_impl._M_start;\n      }\n      local_5c = local_5c + 1;\n      uVar36 = (ulong)local_5c;\n    } while (uVar36 < (ulong)(((long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3) * -0x5555555555555555)\n            );\n    lVar23 = (long)buffer - (long)puVar32;\n  }\n  if (this->symtab_offset_ != lVar23) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x518,"do_write");\n  }\n  uVar36 = this->gdb_symtab_->capacity_;\n  if (uVar36 != 0) {\n    ppGVar16 = this->gdb_symtab_->hashtab_;\n    uVar26 = 0;\n    puVar24 = buffer;\n    do {\n      pGVar17 = ppGVar16[uVar26];\n      if (pGVar17 == (Gdb_symbol *)0x0) {\n        uVar22 = 0;\n        uVar34 = 0;\n      }\n      else {\n        if ((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar38 = pGVar17->name_key - 1;\n        uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index);\n        uVar22 = ((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_;\n      }\n      *(uint *)puVar24 = uVar22;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      buffer = puVar24 + 1;\n      *(uint *)((long)puVar24 + 4) = uVar34;\n      puVar24 = buffer;\n    } while (uVar26 < uVar36);\n    lVar23 = (long)buffer - (long)puVar32;\n  }\n  if (this->cu_pool_offset_ == lVar23) {\n    ppvVar18 = (this->cu_vector_list_).\n               super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n               ._M_impl._M_start;\n    uVar36 = (long)(this->cu_vector_list_).\n                   super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n                   ._M_impl._M_finish - (long)ppvVar18 >> 3;\n    if (uVar36 != 0) {\n      uVar26 = 0;\n      puVar24 = buffer;\n      do {\n        pvVar19 = ppvVar18[uVar26];\n        buffer = (uint64_t *)((long)puVar24 + 4);\n        ppVar20 = (pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl._M_start;\n        uVar38 = (long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20 >> 3;\n        *(uint *)puVar24 = (uint)uVar38;\n        if (uVar38 != 0) {\n          uVar28 = 0;\n          puVar24 = buffer;\n          do {\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          } while (uVar28 < uVar38);\n        }\n        uVar26 = (ulong)((int)uVar26 + 1);\n        puVar24 = buffer;\n      } while (uVar26 < uVar36);\n      lVar23 = (long)buffer - (long)puVar32;\n    }\n    if (this->stringpool_offset_ == lVar23) {\n      Stringpool_template<char>::write_to_buffer(&this->stringpool_,(uchar *)buffer,lVar5 - lVar23);\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x53f,"do_write");\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/gdb-index.cc",0x52b,"do_write");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Gdb_index::" identifier : : identifier : :) (function_declarator "do_write(Gdb_index *this,Output_file *of)" identifier (parameter_list "(Gdb_index *this,Output_file *of)" ( (parameter_declaration "Gdb_index *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_file *of" type_identifier (pointer_declarator "*of" * identifier)) ))) (compound_statement "{\n  pointer pTVar1;\n  pointer pPVar2;\n  pointer ppVar3;\n  byte bVar4;\n  long lVar5;\n  pointer pCVar6;\n  pointer pCVar7;\n  off_t oVar8;\n  pointer pTVar9;\n  Dwarf_range_list *pDVar10;\n  Relobj *pRVar11;\n  _func_int_varargs *p_Var12;\n  pointer ppOVar13;\n  uint64_t uVar14;\n  pointer pRVar15;\n  Gdb_symbol **ppGVar16;\n  Gdb_symbol *pGVar17;\n  pointer ppvVar18;\n  vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_> *pvVar19;\n  pointer ppVar20;\n  int iVar21;\n  uint uVar22;\n  long lVar23;\n  uint64_t *puVar24;\n  uint64_t *puVar25;\n  ulong uVar26;\n  undefined4 extraout_var;\n  Output_section *pOVar27;\n  ulong uVar28;\n  long lVar29;\n  uint64_t *puVar30;\n  pointer pPVar31;\n  uchar *puVar32;\n  int iVar33;\n  uint uVar34;\n  off_t oVar35;\n  ulong uVar36;\n  pointer pRVar37;\n  ulong uVar38;\n  uint64_t *buffer;\n  uint local_5c;\n  undefined4 extraout_var_00;\n  \n  bVar4 = (this->super_Output_section_data).super_Output_data.field_0x20;\n  if ((bVar4 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\n  lVar23 = (this->super_Output_section_data).super_Output_data.offset_;\n  if ((bVar4 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar5 = (this->super_Output_section_data).super_Output_data.data_size_;\n  if ((lVar23 < 0) || (of->file_size_ < lVar23 + lVar5)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }\n  puVar32 = of->base_ + lVar23;\n  oVar35 = this->tu_offset_;\n  pCVar6 = (this->comp_units_).\n           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_finish;\n  puVar32[0] = '\a';\n  puVar32[1] = '\0';\n  puVar32[2] = '\0';\n  puVar32[3] = '\0';\n  puVar32[4] = '\x18';\n  puVar32[5] = '\0';\n  puVar32[6] = '\0';\n  puVar32[7] = '\0';\n  buffer = (uint64_t *)(puVar32 + 0x18);\n  pCVar7 = (this->comp_units_).\n           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_start;\n  *(int *)(puVar32 + 0xc) = (int)this->addr_offset_;\n  *(int *)(puVar32 + 0x10) = (int)this->symtab_offset_;\n  oVar8 = this->cu_pool_offset_;\n  *(int *)(puVar32 + 8) = (int)oVar35;\n  *(int *)(puVar32 + 0x14) = (int)oVar8;\n  lVar23 = 0x18;\n  iVar33 = (int)((long)pCVar6 - (long)pCVar7 >> 4);\n  if (iVar33 != 0) {\n    puVar24 = buffer;\n    puVar30 = &pCVar7->cu_length;\n    do {\n      puVar25 = puVar24 + 2;\n      *puVar24 = ((Comp_unit *)(puVar30 + -1))->cu_offset;\n      puVar24[1] = *puVar30;\n      puVar24 = puVar25;\n      puVar30 = puVar30 + 2;\n    } while (puVar25 != (uint64_t *)(puVar32 + (ulong)(iVar33 - 1) * 0x10 + 0x28));\n    buffer = buffer + ((ulong)(iVar33 - 1) + 1) * 2;\n    oVar35 = this->tu_offset_;\n    lVar23 = (long)buffer - (long)puVar32;\n  }\n  if (lVar23 != oVar35) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }\n  pTVar9 = (this->type_units_).\n           super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n           ._M_impl._M_start;\n  uVar36 = ((long)(this->type_units_).\n                  super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n                  ._M_impl._M_finish - (long)pTVar9 >> 3) * -0x5555555555555555;\n  if (uVar36 != 0) {\n    uVar26 = 0;\n    puVar24 = buffer;\n    do {\n      buffer = puVar24 + 3;\n      pTVar1 = pTVar9 + uVar26;\n      *puVar24 = pTVar1->tu_offset;\n      puVar24[1] = pTVar1->type_offset;\n      puVar24[2] = pTVar1->type_signature;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      puVar24 = buffer;\n    } while (uVar26 < uVar36);\n    lVar23 = (long)buffer - (long)puVar32;\n  }\n  if (this->addr_offset_ != lVar23) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }\n  pPVar31 = (this->ranges_).\n            super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n            ._M_impl._M_start;\n  if (pPVar31 !=\n      (this->ranges_).\n      super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n      ._M_impl._M_finish) {\n    local_5c = 0;\n    uVar36 = 0;\n    do {\n      pPVar2 = pPVar31 + uVar36;\n      uVar34 = pPVar2->cu_index;\n      pDVar10 = pPVar2->ranges;\n      pRVar11 = pPVar2->object;\n      pRVar37 = (pDVar10->range_list_).\n                super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                ._M_impl._M_start;\n      if ((int)uVar34 < 0) {\n        uVar34 = (iVar33 + -1) - uVar34;\n      }\n      if ((pDVar10->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish != pRVar37) {\n        uVar36 = 0;\n        puVar24 = buffer;\n        do {\n          pRVar15 = pRVar37 + uVar36;\n          uVar22 = pRVar15->shndx;\n          if (uVar22 == 0) {\n            lVar23 = 0;\n          }\n          else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }\n          buffer = (uint64_t *)((long)puVar24 + 0x14);\n          lVar29 = pRVar15->start + lVar23;\n          lVar23 = lVar23 + pRVar15->end;\n          *(uint *)(puVar24 + 2) = uVar34;\n          *(uint *)(puVar24 + 1) = (uint)lVar23;\n          pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;\n          *(uint *)puVar24 = (uint)lVar29;\n          *(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);\n          uVar36 = (ulong)((int)uVar36 + 1);\n          *(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);\n          puVar24 = buffer;\n        } while (uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555));\n        pPVar31 = (this->ranges_).\n                  super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                  ._M_impl._M_start;\n      }\n      local_5c = local_5c + 1;\n      uVar36 = (ulong)local_5c;\n    } while (uVar36 < (ulong)(((long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3) * -0x5555555555555555)\n            );\n    lVar23 = (long)buffer - (long)puVar32;\n  }\n  if (this->symtab_offset_ != lVar23) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x518,"do_write");\n  }\n  uVar36 = this->gdb_symtab_->capacity_;\n  if (uVar36 != 0) {\n    ppGVar16 = this->gdb_symtab_->hashtab_;\n    uVar26 = 0;\n    puVar24 = buffer;\n    do {\n      pGVar17 = ppGVar16[uVar26];\n      if (pGVar17 == (Gdb_symbol *)0x0) {\n        uVar22 = 0;\n        uVar34 = 0;\n      }\n      else {\n        if ((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar38 = pGVar17->name_key - 1;\n        uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index);\n        uVar22 = ((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_;\n      }\n      *(uint *)puVar24 = uVar22;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      buffer = puVar24 + 1;\n      *(uint *)((long)puVar24 + 4) = uVar34;\n      puVar24 = buffer;\n    } while (uVar26 < uVar36);\n    lVar23 = (long)buffer - (long)puVar32;\n  }\n  if (this->cu_pool_offset_ == lVar23) {\n    ppvVar18 = (this->cu_vector_list_).\n               super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n               ._M_impl._M_start;\n    uVar36 = (long)(this->cu_vector_list_).\n                   super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n                   ._M_impl._M_finish - (long)ppvVar18 >> 3;\n    if (uVar36 != 0) {\n      uVar26 = 0;\n      puVar24 = buffer;\n      do {\n        pvVar19 = ppvVar18[uVar26];\n        buffer = (uint64_t *)((long)puVar24 + 4);\n        ppVar20 = (pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl._M_start;\n        uVar38 = (long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20 >> 3;\n        *(uint *)puVar24 = (uint)uVar38;\n        if (uVar38 != 0) {\n          uVar28 = 0;\n          puVar24 = buffer;\n          do {\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          } while (uVar28 < uVar38);\n        }\n        uVar26 = (ulong)((int)uVar26 + 1);\n        puVar24 = buffer;\n      } while (uVar26 < uVar36);\n      lVar23 = (long)buffer - (long)puVar32;\n    }\n    if (this->stringpool_offset_ == lVar23) {\n      Stringpool_template<char>::write_to_buffer(&this->stringpool_,(uchar *)buffer,lVar5 - lVar23);\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x53f,"do_write");\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/gdb-index.cc",0x52b,"do_write");\n}" { (declaration "pointer pTVar1;" type_identifier identifier ;) (declaration "pointer pPVar2;" type_identifier identifier ;) (declaration "pointer ppVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "pointer pCVar6;" type_identifier identifier ;) (declaration "pointer pCVar7;" type_identifier identifier ;) (declaration "off_t oVar8;" type_identifier identifier ;) (declaration "pointer pTVar9;" type_identifier identifier ;) (declaration "Dwarf_range_list *pDVar10;" type_identifier (pointer_declarator "*pDVar10" * identifier) ;) (declaration "Relobj *pRVar11;" type_identifier (pointer_declarator "*pRVar11" * identifier) ;) (declaration "_func_int_varargs *p_Var12;" type_identifier (pointer_declarator "*p_Var12" * identifier) ;) (declaration "pointer ppOVar13;" type_identifier identifier ;) (declaration "uint64_t uVar14;" primitive_type identifier ;) (declaration "pointer pRVar15;" type_identifier identifier ;) (declaration "Gdb_symbol **ppGVar16;" type_identifier (pointer_declarator "**ppGVar16" * (pointer_declarator "*ppGVar16" * identifier)) ;) (declaration "Gdb_symbol *pGVar17;" type_identifier (pointer_declarator "*pGVar17" * identifier) ;) (declaration "pointer ppvVar18;" type_identifier identifier ;) (ERROR "vector<std::pair<int,_unsigned_char>,_std::allocator<std::" (comma_expression "vector<std::pair<int,_unsigned_char>,_std" (binary_expression "vector<std::pair<int" (binary_expression "vector<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<int,_unsigned_char>_>_> *pvVar19;" (comma_expression "pair<int,_unsigned_char>_>_> *pvVar19" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_> *pvVar19" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (pointer_expression "*pvVar19" * identifier))) ;) (declaration "pointer ppVar20;" type_identifier identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "long lVar23;" (sized_type_specifier "long" long) identifier ;) (declaration "uint64_t *puVar24;" primitive_type (pointer_declarator "*puVar24" * identifier) ;) (declaration "uint64_t *puVar25;" primitive_type (pointer_declarator "*puVar25" * identifier) ;) (declaration "ulong uVar26;" type_identifier identifier ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "Output_section *pOVar27;" type_identifier (pointer_declarator "*pOVar27" * identifier) ;) (declaration "ulong uVar28;" type_identifier identifier ;) (declaration "long lVar29;" (sized_type_specifier "long" long) identifier ;) (declaration "uint64_t *puVar30;" primitive_type (pointer_declarator "*puVar30" * identifier) ;) (declaration "pointer pPVar31;" type_identifier identifier ;) (declaration "uchar *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "uint uVar34;" type_identifier identifier ;) (declaration "off_t oVar35;" type_identifier identifier ;) (declaration "ulong uVar36;" type_identifier identifier ;) (declaration "pointer pRVar37;" type_identifier identifier ;) (declaration "ulong uVar38;" type_identifier identifier ;) (declaration "uint64_t *buffer;" primitive_type (pointer_declarator "*buffer" * identifier) ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "undefined4 extraout_var_00;" type_identifier identifier ;) (expression_statement "bVar4 = (this->super_Output_section_data).super_Output_data.field_0x20;" (assignment_expression "bVar4 = (this->super_Output_section_data).super_Output_data.field_0x20" identifier = (field_expression "(this->super_Output_section_data).super_Output_data.field_0x20" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((bVar4 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((bVar4 & 4) == 0)" ( (binary_expression "(bVar4 & 4) == 0" (parenthesized_expression "(bVar4 & 4)" ( (binary_expression "bVar4 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xe3,"offset");" (call_expression "do_gold_unreachable("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })) (expression_statement "lVar23 = (this->super_Output_section_data).super_Output_data.offset_;" (assignment_expression "lVar23 = (this->super_Output_section_data).super_Output_data.offset_" identifier = (field_expression "(this->super_Output_section_data).super_Output_data.offset_" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((bVar4 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }" if (parenthesized_expression "((bVar4 & 2) == 0)" ( (binary_expression "(bVar4 & 2) == 0" (parenthesized_expression "(bVar4 & 2)" ( (binary_expression "bVar4 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;) })) (expression_statement "lVar5 = (this->super_Output_section_data).super_Output_data.data_size_;" (assignment_expression "lVar5 = (this->super_Output_section_data).super_Output_data.data_size_" identifier = (field_expression "(this->super_Output_section_data).super_Output_data.data_size_" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((lVar23 < 0) || (of->file_size_ < lVar23 + lVar5)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }" if (parenthesized_expression "((lVar23 < 0) || (of->file_size_ < lVar23 + lVar5))" ( (binary_expression "(lVar23 < 0) || (of->file_size_ < lVar23 + lVar5)" (parenthesized_expression "(lVar23 < 0)" ( (binary_expression "lVar23 < 0" identifier < number_literal) )) || (parenthesized_expression "(of->file_size_ < lVar23 + lVar5)" ( (binary_expression "of->file_size_ < lVar23 + lVar5" (field_expression "of->file_size_" identifier -> field_identifier) < (binary_expression "lVar23 + lVar5" identifier + identifier)) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");" (call_expression "do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view")" identifier (argument_list "("../../gold/output.h",0x6f,"get_output_view")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""get_output_view"" " string_content ") ))) ;) })) (expression_statement "puVar32 = of->base_ + lVar23;" (assignment_expression "puVar32 = of->base_ + lVar23" identifier = (binary_expression "of->base_ + lVar23" (field_expression "of->base_" identifier -> field_identifier) + identifier)) ;) (expression_statement "oVar35 = this->tu_offset_;" (assignment_expression "oVar35 = this->tu_offset_" identifier = (field_expression "this->tu_offset_" identifier -> field_identifier)) ;) (ERROR "pCVar6 = (this->comp_units_).\n           super__Vector_base<gold::" (assignment_expression "pCVar6 = (this->comp_units_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->comp_units_).\n           super__Vector_base<gold" (field_expression "(this->comp_units_).\n           super__Vector_base" (parenthesized_expression "(this->comp_units_)" ( (field_expression "this->comp_units_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_finish;" statement_identifier (ERROR "::Comp_unit,_std::allocator<gold:" : : (comma_expression "Comp_unit,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Comp_unit>_>\n           ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Comp_unit>_>\n           ._M_impl._M_finish;" (field_expression "Comp_unit>_>\n           ._M_impl._M_finish" (field_expression "Comp_unit>_>\n           ._M_impl" (binary_expression "Comp_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "puVar32[0] = '\a';" (assignment_expression "puVar32[0] = '\a'" (subscript_expression "puVar32[0]" identifier [ number_literal ]) = (char_literal "'\a'" ' escape_sequence ')) ;) (expression_statement "puVar32[1] = '\0';" (assignment_expression "puVar32[1] = '\0'" (subscript_expression "puVar32[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar32[2] = '\0';" (assignment_expression "puVar32[2] = '\0'" (subscript_expression "puVar32[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar32[3] = '\0';" (assignment_expression "puVar32[3] = '\0'" (subscript_expression "puVar32[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar32[4] = '\x18';" (assignment_expression "puVar32[4] = '\x18'" (subscript_expression "puVar32[4]" identifier [ number_literal ]) = (char_literal "'\x18'" ' escape_sequence ')) ;) (expression_statement "puVar32[5] = '\0';" (assignment_expression "puVar32[5] = '\0'" (subscript_expression "puVar32[5]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar32[6] = '\0';" (assignment_expression "puVar32[6] = '\0'" (subscript_expression "puVar32[6]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar32[7] = '\0';" (assignment_expression "puVar32[7] = '\0'" (subscript_expression "puVar32[7]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "buffer = (uint64_t *)(puVar32 + 0x18);" (assignment_expression "buffer = (uint64_t *)(puVar32 + 0x18)" identifier = (cast_expression "(uint64_t *)(puVar32 + 0x18)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + 0x18)" ( (binary_expression "puVar32 + 0x18" identifier + number_literal) )))) ;) (ERROR "pCVar7 = (this->comp_units_).\n           super__Vector_base<gold::" (assignment_expression "pCVar7 = (this->comp_units_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->comp_units_).\n           super__Vector_base<gold" (field_expression "(this->comp_units_).\n           super__Vector_base" (parenthesized_expression "(this->comp_units_)" ( (field_expression "this->comp_units_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_start;" statement_identifier (ERROR "::Comp_unit,_std::allocator<gold:" : : (comma_expression "Comp_unit,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Comp_unit>_>\n           ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Comp_unit>_>\n           ._M_impl._M_start;" (field_expression "Comp_unit>_>\n           ._M_impl._M_start" (field_expression "Comp_unit>_>\n           ._M_impl" (binary_expression "Comp_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "*(int *)(puVar32 + 0xc) = (int)this->addr_offset_;" (assignment_expression "*(int *)(puVar32 + 0xc) = (int)this->addr_offset_" (pointer_expression "*(int *)(puVar32 + 0xc)" * (cast_expression "(int *)(puVar32 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + 0xc)" ( (binary_expression "puVar32 + 0xc" identifier + number_literal) )))) = (cast_expression "(int)this->addr_offset_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->addr_offset_" identifier -> field_identifier))) ;) (expression_statement "*(int *)(puVar32 + 0x10) = (int)this->symtab_offset_;" (assignment_expression "*(int *)(puVar32 + 0x10) = (int)this->symtab_offset_" (pointer_expression "*(int *)(puVar32 + 0x10)" * (cast_expression "(int *)(puVar32 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + 0x10)" ( (binary_expression "puVar32 + 0x10" identifier + number_literal) )))) = (cast_expression "(int)this->symtab_offset_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->symtab_offset_" identifier -> field_identifier))) ;) (expression_statement "oVar8 = this->cu_pool_offset_;" (assignment_expression "oVar8 = this->cu_pool_offset_" identifier = (field_expression "this->cu_pool_offset_" identifier -> field_identifier)) ;) (expression_statement "*(int *)(puVar32 + 8) = (int)oVar35;" (assignment_expression "*(int *)(puVar32 + 8) = (int)oVar35" (pointer_expression "*(int *)(puVar32 + 8)" * (cast_expression "(int *)(puVar32 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + 8)" ( (binary_expression "puVar32 + 8" identifier + number_literal) )))) = (cast_expression "(int)oVar35" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int *)(puVar32 + 0x14) = (int)oVar8;" (assignment_expression "*(int *)(puVar32 + 0x14) = (int)oVar8" (pointer_expression "*(int *)(puVar32 + 0x14)" * (cast_expression "(int *)(puVar32 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + 0x14)" ( (binary_expression "puVar32 + 0x14" identifier + number_literal) )))) = (cast_expression "(int)oVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "lVar23 = 0x18;" (assignment_expression "lVar23 = 0x18" identifier = number_literal) ;) (expression_statement "iVar33 = (int)((long)pCVar6 - (long)pCVar7 >> 4);" (assignment_expression "iVar33 = (int)((long)pCVar6 - (long)pCVar7 >> 4)" identifier = (cast_expression "(int)((long)pCVar6 - (long)pCVar7 >> 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((long)pCVar6 - (long)pCVar7 >> 4)" ( (binary_expression "(long)pCVar6 - (long)pCVar7 >> 4" (binary_expression "(long)pCVar6 - (long)pCVar7" (cast_expression "(long)pCVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pCVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) ;) (if_statement "if (iVar33 != 0) {\n    puVar24 = buffer;\n    puVar30 = &pCVar7->cu_length;\n    do {\n      puVar25 = puVar24 + 2;\n      *puVar24 = ((Comp_unit *)(puVar30 + -1))->cu_offset;\n      puVar24[1] = *puVar30;\n      puVar24 = puVar25;\n      puVar30 = puVar30 + 2;\n    } while (puVar25 != (uint64_t *)(puVar32 + (ulong)(iVar33 - 1) * 0x10 + 0x28));\n    buffer = buffer + ((ulong)(iVar33 - 1) + 1) * 2;\n    oVar35 = this->tu_offset_;\n    lVar23 = (long)buffer - (long)puVar32;\n  }" if (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar24 = buffer;\n    puVar30 = &pCVar7->cu_length;\n    do {\n      puVar25 = puVar24 + 2;\n      *puVar24 = ((Comp_unit *)(puVar30 + -1))->cu_offset;\n      puVar24[1] = *puVar30;\n      puVar24 = puVar25;\n      puVar30 = puVar30 + 2;\n    } while (puVar25 != (uint64_t *)(puVar32 + (ulong)(iVar33 - 1) * 0x10 + 0x28));\n    buffer = buffer + ((ulong)(iVar33 - 1) + 1) * 2;\n    oVar35 = this->tu_offset_;\n    lVar23 = (long)buffer - (long)puVar32;\n  }" { (expression_statement "puVar24 = buffer;" (assignment_expression "puVar24 = buffer" identifier = identifier) ;) (expression_statement "puVar30 = &pCVar7->cu_length;" (assignment_expression "puVar30 = &pCVar7->cu_length" identifier = (pointer_expression "&pCVar7->cu_length" & (field_expression "pCVar7->cu_length" identifier -> field_identifier))) ;) (do_statement "do {\n      puVar25 = puVar24 + 2;\n      *puVar24 = ((Comp_unit *)(puVar30 + -1))->cu_offset;\n      puVar24[1] = *puVar30;\n      puVar24 = puVar25;\n      puVar30 = puVar30 + 2;\n    } while (puVar25 != (uint64_t *)(puVar32 + (ulong)(iVar33 - 1) * 0x10 + 0x28));" do (compound_statement "{\n      puVar25 = puVar24 + 2;\n      *puVar24 = ((Comp_unit *)(puVar30 + -1))->cu_offset;\n      puVar24[1] = *puVar30;\n      puVar24 = puVar25;\n      puVar30 = puVar30 + 2;\n    }" { (expression_statement "puVar25 = puVar24 + 2;" (assignment_expression "puVar25 = puVar24 + 2" identifier = (binary_expression "puVar24 + 2" identifier + number_literal)) ;) (expression_statement "*puVar24 = ((Comp_unit *)(puVar30 + -1))->cu_offset;" (assignment_expression "*puVar24 = ((Comp_unit *)(puVar30 + -1))->cu_offset" (pointer_expression "*puVar24" * identifier) = (field_expression "((Comp_unit *)(puVar30 + -1))->cu_offset" (parenthesized_expression "((Comp_unit *)(puVar30 + -1))" ( (cast_expression "(Comp_unit *)(puVar30 + -1)" ( (type_descriptor "Comp_unit *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -1)" ( (binary_expression "puVar30 + -1" identifier + number_literal) ))) )) -> field_identifier)) ;) (expression_statement "puVar24[1] = *puVar30;" (assignment_expression "puVar24[1] = *puVar30" (subscript_expression "puVar24[1]" identifier [ number_literal ]) = (pointer_expression "*puVar30" * identifier)) ;) (expression_statement "puVar24 = puVar25;" (assignment_expression "puVar24 = puVar25" identifier = identifier) ;) (expression_statement "puVar30 = puVar30 + 2;" (assignment_expression "puVar30 = puVar30 + 2" identifier = (binary_expression "puVar30 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar25 != (uint64_t *)(puVar32 + (ulong)(iVar33 - 1) * 0x10 + 0x28))" ( (binary_expression "puVar25 != (uint64_t *)(puVar32 + (ulong)(iVar33 - 1) * 0x10 + 0x28)" identifier != (cast_expression "(uint64_t *)(puVar32 + (ulong)(iVar33 - 1) * 0x10 + 0x28)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + (ulong)(iVar33 - 1) * 0x10 + 0x28)" ( (binary_expression "puVar32 + (ulong)(iVar33 - 1) * 0x10 + 0x28" (binary_expression "puVar32 + (ulong)(iVar33 - 1) * 0x10" identifier + (binary_expression "(ulong)(iVar33 - 1) * 0x10" (call_expression "(ulong)(iVar33 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar33 - 1)" ( (binary_expression "iVar33 - 1" identifier - number_literal) ))) * number_literal)) + number_literal) )))) )) ;) (expression_statement "buffer = buffer + ((ulong)(iVar33 - 1) + 1) * 2;" (assignment_expression "buffer = buffer + ((ulong)(iVar33 - 1) + 1) * 2" identifier = (binary_expression "buffer + ((ulong)(iVar33 - 1) + 1) * 2" identifier + (binary_expression "((ulong)(iVar33 - 1) + 1) * 2" (parenthesized_expression "((ulong)(iVar33 - 1) + 1)" ( (binary_expression "(ulong)(iVar33 - 1) + 1" (call_expression "(ulong)(iVar33 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar33 - 1)" ( (binary_expression "iVar33 - 1" identifier - number_literal) ))) + number_literal) )) * number_literal))) ;) (expression_statement "oVar35 = this->tu_offset_;" (assignment_expression "oVar35 = this->tu_offset_" identifier = (field_expression "this->tu_offset_" identifier -> field_identifier)) ;) (expression_statement "lVar23 = (long)buffer - (long)puVar32;" (assignment_expression "lVar23 = (long)buffer - (long)puVar32" identifier = (binary_expression "(long)buffer - (long)puVar32" (cast_expression "(long)buffer" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar32" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (lVar23 != oVar35) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }" if (parenthesized_expression "(lVar23 != oVar35)" ( (binary_expression "lVar23 != oVar35" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/gdb-index.cc",0x4ee,"do_write");" (call_expression "do_gold_unreachable("../../gold/gdb-index.cc",0x4ee,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x4ee,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (ERROR "pTVar9 = (this->type_units_).\n           super__Vector_base<gold::" (assignment_expression "pTVar9 = (this->type_units_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->type_units_).\n           super__Vector_base<gold" (field_expression "(this->type_units_).\n           super__Vector_base" (parenthesized_expression "(this->type_units_)" ( (field_expression "this->type_units_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n           ._M_impl._M_start;" statement_identifier (ERROR "::Type_unit,_std::allocator<gold:" : : (comma_expression "Type_unit,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Type_unit>_>\n           ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Type_unit>_>\n           ._M_impl._M_start;" (field_expression "Type_unit>_>\n           ._M_impl._M_start" (field_expression "Type_unit>_>\n           ._M_impl" (binary_expression "Type_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "uVar36 = ((long)(this->type_units_).\n                  super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n                  ._M_impl._M_finish - (long)pTVar9 >> 3) * -0x5555555555555555;" (assignment_expression "uVar36 = ((long)(this->type_units_).\n                  super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n                  ._M_impl._M_finish - (long)pTVar9 >> 3) * -0x5555555555555555" identifier = (binary_expression "((long)(this->type_units_).\n                  super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n                  ._M_impl._M_finish - (long)pTVar9 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)(this->type_units_).\n                  super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n                  ._M_impl._M_finish - (long)pTVar9 >> 3)" ( (ERROR "(long)(this->type_units_).\n                  super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::" (comma_expression "(long)(this->type_units_).\n                  super__Vector_base<gold::Gdb_index::Type_unit,_std" (binary_expression "(long)(this->type_units_).\n                  super__Vector_base<gold" (cast_expression "(long)(this->type_units_).\n                  super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(this->type_units_).\n                  super__Vector_base" (parenthesized_expression "(this->type_units_)" ( (field_expression "this->type_units_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Gdb_index::Type_unit" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Type_unit>_>\n                  ._M_impl._M_finish - (long)pTVar9 >> 3" (binary_expression "Type_unit>_>\n                  ._M_impl._M_finish - (long)pTVar9" (field_expression "Type_unit>_>\n                  ._M_impl._M_finish" (field_expression "Type_unit>_>\n                  ._M_impl" (binary_expression "Type_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)pTVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )) * number_literal)) ;) (if_statement "if (uVar36 != 0) {\n    uVar26 = 0;\n    puVar24 = buffer;\n    do {\n      buffer = puVar24 + 3;\n      pTVar1 = pTVar9 + uVar26;\n      *puVar24 = pTVar1->tu_offset;\n      puVar24[1] = pTVar1->type_offset;\n      puVar24[2] = pTVar1->type_signature;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      puVar24 = buffer;\n    } while (uVar26 < uVar36);\n    lVar23 = (long)buffer - (long)puVar32;\n  }" if (parenthesized_expression "(uVar36 != 0)" ( (binary_expression "uVar36 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar26 = 0;\n    puVar24 = buffer;\n    do {\n      buffer = puVar24 + 3;\n      pTVar1 = pTVar9 + uVar26;\n      *puVar24 = pTVar1->tu_offset;\n      puVar24[1] = pTVar1->type_offset;\n      puVar24[2] = pTVar1->type_signature;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      puVar24 = buffer;\n    } while (uVar26 < uVar36);\n    lVar23 = (long)buffer - (long)puVar32;\n  }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "puVar24 = buffer;" (assignment_expression "puVar24 = buffer" identifier = identifier) ;) (do_statement "do {\n      buffer = puVar24 + 3;\n      pTVar1 = pTVar9 + uVar26;\n      *puVar24 = pTVar1->tu_offset;\n      puVar24[1] = pTVar1->type_offset;\n      puVar24[2] = pTVar1->type_signature;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      puVar24 = buffer;\n    } while (uVar26 < uVar36);" do (compound_statement "{\n      buffer = puVar24 + 3;\n      pTVar1 = pTVar9 + uVar26;\n      *puVar24 = pTVar1->tu_offset;\n      puVar24[1] = pTVar1->type_offset;\n      puVar24[2] = pTVar1->type_signature;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      puVar24 = buffer;\n    }" { (expression_statement "buffer = puVar24 + 3;" (assignment_expression "buffer = puVar24 + 3" identifier = (binary_expression "puVar24 + 3" identifier + number_literal)) ;) (expression_statement "pTVar1 = pTVar9 + uVar26;" (assignment_expression "pTVar1 = pTVar9 + uVar26" identifier = (binary_expression "pTVar9 + uVar26" identifier + identifier)) ;) (expression_statement "*puVar24 = pTVar1->tu_offset;" (assignment_expression "*puVar24 = pTVar1->tu_offset" (pointer_expression "*puVar24" * identifier) = (field_expression "pTVar1->tu_offset" identifier -> field_identifier)) ;) (expression_statement "puVar24[1] = pTVar1->type_offset;" (assignment_expression "puVar24[1] = pTVar1->type_offset" (subscript_expression "puVar24[1]" identifier [ number_literal ]) = (field_expression "pTVar1->type_offset" identifier -> field_identifier)) ;) (expression_statement "puVar24[2] = pTVar1->type_signature;" (assignment_expression "puVar24[2] = pTVar1->type_signature" (subscript_expression "puVar24[2]" identifier [ number_literal ]) = (field_expression "pTVar1->type_signature" identifier -> field_identifier)) ;) (expression_statement "uVar26 = (ulong)((int)uVar26 + 1);" (assignment_expression "uVar26 = (ulong)((int)uVar26 + 1)" identifier = (call_expression "(ulong)((int)uVar26 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar26 + 1)" ( (binary_expression "(int)uVar26 + 1" (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar24 = buffer;" (assignment_expression "puVar24 = buffer" identifier = identifier) ;) }) while (parenthesized_expression "(uVar26 < uVar36)" ( (binary_expression "uVar26 < uVar36" identifier < identifier) )) ;) (expression_statement "lVar23 = (long)buffer - (long)puVar32;" (assignment_expression "lVar23 = (long)buffer - (long)puVar32" identifier = (binary_expression "(long)buffer - (long)puVar32" (cast_expression "(long)buffer" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar32" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (this->addr_offset_ != lVar23) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }" if (parenthesized_expression "(this->addr_offset_ != lVar23)" ( (binary_expression "this->addr_offset_ != lVar23" (field_expression "this->addr_offset_" identifier -> field_identifier) != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/gdb-index.cc",0x4fa,"do_write");" (call_expression "do_gold_unreachable("../../gold/gdb-index.cc",0x4fa,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x4fa,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (ERROR "pPVar31 = (this->ranges_).\n            super__Vector_base<gold::" (assignment_expression "pPVar31 = (this->ranges_).\n            super__Vector_base<gold" identifier = (binary_expression "(this->ranges_).\n            super__Vector_base<gold" (field_expression "(this->ranges_).\n            super__Vector_base" (parenthesized_expression "(this->ranges_)" ( (field_expression "this->ranges_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n            ._M_impl._M_start;" statement_identifier (ERROR "::Per_cu_range_list,_std::allocator<gold:" : : (comma_expression "Per_cu_range_list,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Per_cu_range_list>_>\n            ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Per_cu_range_list>_>\n            ._M_impl._M_start;" (field_expression "Per_cu_range_list>_>\n            ._M_impl._M_start" (field_expression "Per_cu_range_list>_>\n            ._M_impl" (binary_expression "Per_cu_range_list>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (if_statement "if (pPVar31 !=\n      (this->ranges_).\n      super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n      ._M_impl._M_finish) {\n    local_5c = 0;\n    uVar36 = 0;\n    do {\n      pPVar2 = pPVar31 + uVar36;\n      uVar34 = pPVar2->cu_index;\n      pDVar10 = pPVar2->ranges;\n      pRVar11 = pPVar2->object;\n      pRVar37 = (pDVar10->range_list_).\n                super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                ._M_impl._M_start;\n      if ((int)uVar34 < 0) {\n        uVar34 = (iVar33 + -1) - uVar34;\n      }\n      if ((pDVar10->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish != pRVar37) {\n        uVar36 = 0;\n        puVar24 = buffer;\n        do {\n          pRVar15 = pRVar37 + uVar36;\n          uVar22 = pRVar15->shndx;\n          if (uVar22 == 0) {\n            lVar23 = 0;\n          }\n          else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }\n          buffer = (uint64_t *)((long)puVar24 + 0x14);\n          lVar29 = pRVar15->start + lVar23;\n          lVar23 = lVar23 + pRVar15->end;\n          *(uint *)(puVar24 + 2) = uVar34;\n          *(uint *)(puVar24 + 1) = (uint)lVar23;\n          pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;\n          *(uint *)puVar24 = (uint)lVar29;\n          *(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);\n          uVar36 = (ulong)((int)uVar36 + 1);\n          *(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);\n          puVar24 = buffer;\n        } while (uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555));\n        pPVar31 = (this->ranges_).\n                  super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                  ._M_impl._M_start;\n      }\n      local_5c = local_5c + 1;\n      uVar36 = (ulong)local_5c;\n    } while (uVar36 < (ulong)(((long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3) * -0x5555555555555555)\n            );\n    lVar23 = (long)buffer - (long)puVar32;\n  }" if (parenthesized_expression "(pPVar31 !=\n      (this->ranges_).\n      super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n      ._M_impl._M_finish)" ( (ERROR "pPVar31 !=\n      (this->ranges_).\n      super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::" (comma_expression "pPVar31 !=\n      (this->ranges_).\n      super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std" (binary_expression "pPVar31 !=\n      (this->ranges_).\n      super__Vector_base<gold" identifier != (binary_expression "(this->ranges_).\n      super__Vector_base<gold" (field_expression "(this->ranges_).\n      super__Vector_base" (parenthesized_expression "(this->ranges_)" ( (field_expression "this->ranges_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Gdb_index::Per_cu_range_list" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Per_cu_range_list>_>\n      ._M_impl._M_finish" (field_expression "Per_cu_range_list>_>\n      ._M_impl" (binary_expression "Per_cu_range_list>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    local_5c = 0;\n    uVar36 = 0;\n    do {\n      pPVar2 = pPVar31 + uVar36;\n      uVar34 = pPVar2->cu_index;\n      pDVar10 = pPVar2->ranges;\n      pRVar11 = pPVar2->object;\n      pRVar37 = (pDVar10->range_list_).\n                super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                ._M_impl._M_start;\n      if ((int)uVar34 < 0) {\n        uVar34 = (iVar33 + -1) - uVar34;\n      }\n      if ((pDVar10->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish != pRVar37) {\n        uVar36 = 0;\n        puVar24 = buffer;\n        do {\n          pRVar15 = pRVar37 + uVar36;\n          uVar22 = pRVar15->shndx;\n          if (uVar22 == 0) {\n            lVar23 = 0;\n          }\n          else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }\n          buffer = (uint64_t *)((long)puVar24 + 0x14);\n          lVar29 = pRVar15->start + lVar23;\n          lVar23 = lVar23 + pRVar15->end;\n          *(uint *)(puVar24 + 2) = uVar34;\n          *(uint *)(puVar24 + 1) = (uint)lVar23;\n          pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;\n          *(uint *)puVar24 = (uint)lVar29;\n          *(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);\n          uVar36 = (ulong)((int)uVar36 + 1);\n          *(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);\n          puVar24 = buffer;\n        } while (uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555));\n        pPVar31 = (this->ranges_).\n                  super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                  ._M_impl._M_start;\n      }\n      local_5c = local_5c + 1;\n      uVar36 = (ulong)local_5c;\n    } while (uVar36 < (ulong)(((long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3) * -0x5555555555555555)\n            );\n    lVar23 = (long)buffer - (long)puVar32;\n  }" { (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (do_statement "do {\n      pPVar2 = pPVar31 + uVar36;\n      uVar34 = pPVar2->cu_index;\n      pDVar10 = pPVar2->ranges;\n      pRVar11 = pPVar2->object;\n      pRVar37 = (pDVar10->range_list_).\n                super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                ._M_impl._M_start;\n      if ((int)uVar34 < 0) {\n        uVar34 = (iVar33 + -1) - uVar34;\n      }\n      if ((pDVar10->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish != pRVar37) {\n        uVar36 = 0;\n        puVar24 = buffer;\n        do {\n          pRVar15 = pRVar37 + uVar36;\n          uVar22 = pRVar15->shndx;\n          if (uVar22 == 0) {\n            lVar23 = 0;\n          }\n          else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }\n          buffer = (uint64_t *)((long)puVar24 + 0x14);\n          lVar29 = pRVar15->start + lVar23;\n          lVar23 = lVar23 + pRVar15->end;\n          *(uint *)(puVar24 + 2) = uVar34;\n          *(uint *)(puVar24 + 1) = (uint)lVar23;\n          pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;\n          *(uint *)puVar24 = (uint)lVar29;\n          *(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);\n          uVar36 = (ulong)((int)uVar36 + 1);\n          *(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);\n          puVar24 = buffer;\n        } while (uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555));\n        pPVar31 = (this->ranges_).\n                  super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                  ._M_impl._M_start;\n      }\n      local_5c = local_5c + 1;\n      uVar36 = (ulong)local_5c;\n    } while (uVar36 < (ulong)(((long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3) * -0x5555555555555555)\n            );" do (compound_statement "{\n      pPVar2 = pPVar31 + uVar36;\n      uVar34 = pPVar2->cu_index;\n      pDVar10 = pPVar2->ranges;\n      pRVar11 = pPVar2->object;\n      pRVar37 = (pDVar10->range_list_).\n                super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                ._M_impl._M_start;\n      if ((int)uVar34 < 0) {\n        uVar34 = (iVar33 + -1) - uVar34;\n      }\n      if ((pDVar10->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish != pRVar37) {\n        uVar36 = 0;\n        puVar24 = buffer;\n        do {\n          pRVar15 = pRVar37 + uVar36;\n          uVar22 = pRVar15->shndx;\n          if (uVar22 == 0) {\n            lVar23 = 0;\n          }\n          else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }\n          buffer = (uint64_t *)((long)puVar24 + 0x14);\n          lVar29 = pRVar15->start + lVar23;\n          lVar23 = lVar23 + pRVar15->end;\n          *(uint *)(puVar24 + 2) = uVar34;\n          *(uint *)(puVar24 + 1) = (uint)lVar23;\n          pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;\n          *(uint *)puVar24 = (uint)lVar29;\n          *(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);\n          uVar36 = (ulong)((int)uVar36 + 1);\n          *(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);\n          puVar24 = buffer;\n        } while (uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555));\n        pPVar31 = (this->ranges_).\n                  super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                  ._M_impl._M_start;\n      }\n      local_5c = local_5c + 1;\n      uVar36 = (ulong)local_5c;\n    }" { (expression_statement "pPVar2 = pPVar31 + uVar36;" (assignment_expression "pPVar2 = pPVar31 + uVar36" identifier = (binary_expression "pPVar31 + uVar36" identifier + identifier)) ;) (expression_statement "uVar34 = pPVar2->cu_index;" (assignment_expression "uVar34 = pPVar2->cu_index" identifier = (field_expression "pPVar2->cu_index" identifier -> field_identifier)) ;) (expression_statement "pDVar10 = pPVar2->ranges;" (assignment_expression "pDVar10 = pPVar2->ranges" identifier = (field_expression "pPVar2->ranges" identifier -> field_identifier)) ;) (expression_statement "pRVar11 = pPVar2->object;" (assignment_expression "pRVar11 = pPVar2->object" identifier = (field_expression "pPVar2->object" identifier -> field_identifier)) ;) (ERROR "pRVar37 = (pDVar10->range_list_).\n                super__Vector_base<gold::" (assignment_expression "pRVar37 = (pDVar10->range_list_).\n                super__Vector_base<gold" identifier = (binary_expression "(pDVar10->range_list_).\n                super__Vector_base<gold" (field_expression "(pDVar10->range_list_).\n                super__Vector_base" (parenthesized_expression "(pDVar10->range_list_)" ( (field_expression "pDVar10->range_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                ._M_impl._M_start;" statement_identifier (ERROR "::Range,_std::allocator<gold:" : : (comma_expression "Range,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range>_>\n                ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Range>_>\n                ._M_impl._M_start;" (field_expression "Range>_>\n                ._M_impl._M_start" (field_expression "Range>_>\n                ._M_impl" (binary_expression "Range>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (if_statement "if ((int)uVar34 < 0) {\n        uVar34 = (iVar33 + -1) - uVar34;\n      }" if (parenthesized_expression "((int)uVar34 < 0)" ( (binary_expression "(int)uVar34 < 0" (cast_expression "(int)uVar34" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        uVar34 = (iVar33 + -1) - uVar34;\n      }" { (expression_statement "uVar34 = (iVar33 + -1) - uVar34;" (assignment_expression "uVar34 = (iVar33 + -1) - uVar34" identifier = (binary_expression "(iVar33 + -1) - uVar34" (parenthesized_expression "(iVar33 + -1)" ( (binary_expression "iVar33 + -1" identifier + number_literal) )) - identifier)) ;) })) (if_statement "if ((pDVar10->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish != pRVar37) {\n        uVar36 = 0;\n        puVar24 = buffer;\n        do {\n          pRVar15 = pRVar37 + uVar36;\n          uVar22 = pRVar15->shndx;\n          if (uVar22 == 0) {\n            lVar23 = 0;\n          }\n          else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }\n          buffer = (uint64_t *)((long)puVar24 + 0x14);\n          lVar29 = pRVar15->start + lVar23;\n          lVar23 = lVar23 + pRVar15->end;\n          *(uint *)(puVar24 + 2) = uVar34;\n          *(uint *)(puVar24 + 1) = (uint)lVar23;\n          pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;\n          *(uint *)puVar24 = (uint)lVar29;\n          *(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);\n          uVar36 = (ulong)((int)uVar36 + 1);\n          *(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);\n          puVar24 = buffer;\n        } while (uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555));\n        pPVar31 = (this->ranges_).\n                  super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                  ._M_impl._M_start;\n      }" if (parenthesized_expression "((pDVar10->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n          ._M_impl._M_finish != pRVar37)" ( (ERROR "(pDVar10->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::" (comma_expression "(pDVar10->range_list_).\n          super__Vector_base<gold::Dwarf_range_list::Range,_std" (binary_expression "(pDVar10->range_list_).\n          super__Vector_base<gold" (field_expression "(pDVar10->range_list_).\n          super__Vector_base" (parenthesized_expression "(pDVar10->range_list_)" ( (field_expression "pDVar10->range_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Dwarf_range_list::Range" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Range>_>\n          ._M_impl._M_finish != pRVar37" (field_expression "Range>_>\n          ._M_impl._M_finish" (field_expression "Range>_>\n          ._M_impl" (binary_expression "Range>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) (compound_statement "{\n        uVar36 = 0;\n        puVar24 = buffer;\n        do {\n          pRVar15 = pRVar37 + uVar36;\n          uVar22 = pRVar15->shndx;\n          if (uVar22 == 0) {\n            lVar23 = 0;\n          }\n          else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }\n          buffer = (uint64_t *)((long)puVar24 + 0x14);\n          lVar29 = pRVar15->start + lVar23;\n          lVar23 = lVar23 + pRVar15->end;\n          *(uint *)(puVar24 + 2) = uVar34;\n          *(uint *)(puVar24 + 1) = (uint)lVar23;\n          pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;\n          *(uint *)puVar24 = (uint)lVar29;\n          *(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);\n          uVar36 = (ulong)((int)uVar36 + 1);\n          *(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);\n          puVar24 = buffer;\n        } while (uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555));\n        pPVar31 = (this->ranges_).\n                  super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                  ._M_impl._M_start;\n      }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (expression_statement "puVar24 = buffer;" (assignment_expression "puVar24 = buffer" identifier = identifier) ;) (do_statement "do {\n          pRVar15 = pRVar37 + uVar36;\n          uVar22 = pRVar15->shndx;\n          if (uVar22 == 0) {\n            lVar23 = 0;\n          }\n          else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }\n          buffer = (uint64_t *)((long)puVar24 + 0x14);\n          lVar29 = pRVar15->start + lVar23;\n          lVar23 = lVar23 + pRVar15->end;\n          *(uint *)(puVar24 + 2) = uVar34;\n          *(uint *)(puVar24 + 1) = (uint)lVar23;\n          pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;\n          *(uint *)puVar24 = (uint)lVar29;\n          *(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);\n          uVar36 = (ulong)((int)uVar36 + 1);\n          *(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);\n          puVar24 = buffer;\n        } while (uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555));" do (compound_statement "{\n          pRVar15 = pRVar37 + uVar36;\n          uVar22 = pRVar15->shndx;\n          if (uVar22 == 0) {\n            lVar23 = 0;\n          }\n          else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }\n          buffer = (uint64_t *)((long)puVar24 + 0x14);\n          lVar29 = pRVar15->start + lVar23;\n          lVar23 = lVar23 + pRVar15->end;\n          *(uint *)(puVar24 + 2) = uVar34;\n          *(uint *)(puVar24 + 1) = (uint)lVar23;\n          pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;\n          *(uint *)puVar24 = (uint)lVar29;\n          *(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);\n          uVar36 = (ulong)((int)uVar36 + 1);\n          *(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);\n          puVar24 = buffer;\n        }" { (expression_statement "pRVar15 = pRVar37 + uVar36;" (assignment_expression "pRVar15 = pRVar37 + uVar36" identifier = (binary_expression "pRVar37 + uVar36" identifier + identifier)) ;) (expression_statement "uVar22 = pRVar15->shndx;" (assignment_expression "uVar22 = pRVar15->shndx" identifier = (field_expression "pRVar15->shndx" identifier -> field_identifier)) ;) (if_statement "if (uVar22 == 0) {\n            lVar23 = 0;\n          }\n          else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            lVar23 = 0;\n          }" { (expression_statement "lVar23 = 0;" (assignment_expression "lVar23 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }" else (compound_statement "{\n            p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];\n            if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }\n            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }\n            uVar14 = (pOVar27->super_Output_data).address_;\n            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);\n            pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;\n            lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;\n          }" { (expression_statement "p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18];" (assignment_expression "p_Var12 = (pRVar11->super_Object)._vptr_Object[0x18]" identifier = (subscript_expression "(pRVar11->super_Object)._vptr_Object[0x18]" (field_expression "(pRVar11->super_Object)._vptr_Object" (parenthesized_expression "(pRVar11->super_Object)" ( (field_expression "pRVar11->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var12 == Relobj::do_output_section) {\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }\n            else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }" if (parenthesized_expression "(p_Var12 == Relobj::do_output_section)" ( (binary_expression "p_Var12 == Relobj" identifier == identifier) (ERROR "::do_output_section" : : identifier) )) (compound_statement "{\n              ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;\n              if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              pOVar27 = ppOVar13[uVar22];\n            }" { (expression_statement "ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start;" (field_expression "ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl._M_start" (field_expression "ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                         ._M_impl" (binary_expression "ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold::Output_section*,_std" (assignment_expression "ppOVar13 = (pRVar11->output_sections_).\n                         super__Vector_base<gold" identifier = (binary_expression "(pRVar11->output_sections_).\n                         super__Vector_base<gold" (field_expression "(pRVar11->output_sections_).\n                         super__Vector_base" (parenthesized_expression "(pRVar11->output_sections_)" ( (field_expression "pRVar11->output_sections_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if ((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }" if (parenthesized_expression "((ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22)" ( (binary_expression "(ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (ulong)uVar22" (call_expression "(ulong)((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3)" ( (binary_expression "(long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13 >> 3" (binary_expression "(long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish - (long)ppOVar13" (field_expression "(long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl._M_finish" (field_expression "(long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                                ._M_impl" (binary_expression "(long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(long)(pRVar11->output_sections_).\n                                super__Vector_base<gold::Output_section*,_std" (binary_expression "(long)(pRVar11->output_sections_).\n                                super__Vector_base<gold" (cast_expression "(long)(pRVar11->output_sections_).\n                                super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(pRVar11->output_sections_).\n                                super__Vector_base" (parenthesized_expression "(pRVar11->output_sections_)" ( (field_expression "pRVar11->output_sections_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)ppOVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) ))) <= (cast_expression "(ulong)uVar22" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n              }" { comment (expression_statement "do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section")" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") ))) ;) })) (expression_statement "pOVar27 = ppOVar13[uVar22];" (assignment_expression "pOVar27 = ppOVar13[uVar22]" identifier = (subscript_expression "ppOVar13[uVar22]" identifier [ identifier ])) ;) }) (else_clause "else {\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }" else (compound_statement "{\n              iVar21 = (*p_Var12)(pRVar11);\n              pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);\n            }" { (expression_statement "iVar21 = (*p_Var12)(pRVar11);" (assignment_expression "iVar21 = (*p_Var12)(pRVar11)" identifier = (call_expression "(*p_Var12)(pRVar11)" (parenthesized_expression "(*p_Var12)" ( (pointer_expression "*p_Var12" * identifier) )) (argument_list "(pRVar11)" ( identifier )))) ;) (expression_statement "pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21);" (assignment_expression "pOVar27 = (Output_section *)CONCAT44(extraout_var_00,iVar21)" identifier = (cast_expression "(Output_section *)CONCAT44(extraout_var_00,iVar21)" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var_00,iVar21)" identifier (argument_list "(extraout_var_00,iVar21)" ( identifier , identifier ))))) ;) }))) (if_statement "if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }" if (parenthesized_expression "(((pOVar27->super_Output_data).field_0x20 & 1) == 0)" ( (binary_expression "((pOVar27->super_Output_data).field_0x20 & 1) == 0" (parenthesized_expression "((pOVar27->super_Output_data).field_0x20 & 1)" ( (binary_expression "(pOVar27->super_Output_data).field_0x20 & 1" (field_expression "(pOVar27->super_Output_data).field_0x20" (parenthesized_expression "(pOVar27->super_Output_data)" ( (field_expression "pOVar27->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.h",0xc5,"address");\n            }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xc5,"address");" (call_expression "do_gold_unreachable("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (expression_statement "uVar14 = (pOVar27->super_Output_data).address_;" (assignment_expression "uVar14 = (pOVar27->super_Output_data).address_" identifier = (field_expression "(pOVar27->super_Output_data).address_" (parenthesized_expression "(pOVar27->super_Output_data)" ( (field_expression "pOVar27->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx);" (assignment_expression "iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx)" identifier = (call_expression "(*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(ulong)pRVar15->shndx)" (parenthesized_expression "(*(pRVar11->super_Object)._vptr_Object[0x1a])" ( (pointer_expression "*(pRVar11->super_Object)._vptr_Object[0x1a]" * (subscript_expression "(pRVar11->super_Object)._vptr_Object[0x1a]" (field_expression "(pRVar11->super_Object)._vptr_Object" (parenthesized_expression "(pRVar11->super_Object)" ( (field_expression "pRVar11->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(pRVar11,(ulong)pRVar15->shndx)" ( identifier , (cast_expression "(ulong)pRVar15->shndx" ( (type_descriptor "ulong" type_identifier) ) (field_expression "pRVar15->shndx" identifier -> field_identifier)) )))) ;) (ERROR "pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold::" (assignment_expression "pRVar37 = (pDVar10->range_list_).\n                      super__Vector_base<gold" identifier = (binary_expression "(pDVar10->range_list_).\n                      super__Vector_base<gold" (field_expression "(pDVar10->range_list_).\n                      super__Vector_base" (parenthesized_expression "(pDVar10->range_list_)" ( (field_expression "pDVar10->range_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;" statement_identifier (ERROR "::Range,_std::allocator<gold:" : : (comma_expression "Range,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range>_>\n                      ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Range>_>\n                      ._M_impl._M_start;" (field_expression "Range>_>\n                      ._M_impl._M_start" (field_expression "Range>_>\n                      ._M_impl" (binary_expression "Range>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "lVar23 = CONCAT44(extraout_var,iVar21) + uVar14;" (assignment_expression "lVar23 = CONCAT44(extraout_var,iVar21) + uVar14" identifier = (binary_expression "CONCAT44(extraout_var,iVar21) + uVar14" (call_expression "CONCAT44(extraout_var,iVar21)" identifier (argument_list "(extraout_var,iVar21)" ( identifier , identifier ))) + identifier)) ;) }))) (expression_statement "buffer = (uint64_t *)((long)puVar24 + 0x14);" (assignment_expression "buffer = (uint64_t *)((long)puVar24 + 0x14)" identifier = (cast_expression "(uint64_t *)((long)puVar24 + 0x14)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar24 + 0x14)" ( (binary_expression "(long)puVar24 + 0x14" (cast_expression "(long)puVar24" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "lVar29 = pRVar15->start + lVar23;" (assignment_expression "lVar29 = pRVar15->start + lVar23" identifier = (binary_expression "pRVar15->start + lVar23" (field_expression "pRVar15->start" identifier -> field_identifier) + identifier)) ;) (expression_statement "lVar23 = lVar23 + pRVar15->end;" (assignment_expression "lVar23 = lVar23 + pRVar15->end" identifier = (binary_expression "lVar23 + pRVar15->end" identifier + (field_expression "pRVar15->end" identifier -> field_identifier))) ;) (expression_statement "*(uint *)(puVar24 + 2) = uVar34;" (assignment_expression "*(uint *)(puVar24 + 2) = uVar34" (pointer_expression "*(uint *)(puVar24 + 2)" * (cast_expression "(uint *)(puVar24 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 2)" ( (binary_expression "puVar24 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar24 + 1) = (uint)lVar23;" (assignment_expression "*(uint *)(puVar24 + 1) = (uint)lVar23" (pointer_expression "*(uint *)(puVar24 + 1)" * (cast_expression "(uint *)(puVar24 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 1)" ( (binary_expression "puVar24 + 1" identifier + number_literal) )))) = (cast_expression "(uint)lVar23" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (ERROR "pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold::" (assignment_expression "pRVar15 = (pDVar10->range_list_).\n                    super__Vector_base<gold" identifier = (binary_expression "(pDVar10->range_list_).\n                    super__Vector_base<gold" (field_expression "(pDVar10->range_list_).\n                    super__Vector_base" (parenthesized_expression "(pDVar10->range_list_)" ( (field_expression "pDVar10->range_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;" statement_identifier (ERROR "::Range,_std::allocator<gold:" : : (comma_expression "Range,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Range>_>\n                    ._M_impl._M_finish;" (field_expression "Range>_>\n                    ._M_impl._M_finish" (field_expression "Range>_>\n                    ._M_impl" (binary_expression "Range>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "*(uint *)puVar24 = (uint)lVar29;" (assignment_expression "*(uint *)puVar24 = (uint)lVar29" (pointer_expression "*(uint *)puVar24" * (cast_expression "(uint *)puVar24" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(uint)lVar29" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20);" (assignment_expression "*(uint *)((long)puVar24 + 0xc) = (uint)((ulong)lVar23 >> 0x20)" (pointer_expression "*(uint *)((long)puVar24 + 0xc)" * (cast_expression "(uint *)((long)puVar24 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar24 + 0xc)" ( (binary_expression "(long)puVar24 + 0xc" (cast_expression "(long)puVar24" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (call_expression "(uint)((ulong)lVar23 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulong)lVar23 >> 0x20)" ( (binary_expression "(ulong)lVar23 >> 0x20" (cast_expression "(ulong)lVar23" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar36 = (ulong)((int)uVar36 + 1);" (assignment_expression "uVar36 = (ulong)((int)uVar36 + 1)" identifier = (call_expression "(ulong)((int)uVar36 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar36 + 1)" ( (binary_expression "(int)uVar36 + 1" (cast_expression "(int)uVar36" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20);" (assignment_expression "*(uint *)((long)puVar24 + 4) = (uint)((ulong)lVar29 >> 0x20)" (pointer_expression "*(uint *)((long)puVar24 + 4)" * (cast_expression "(uint *)((long)puVar24 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar24 + 4)" ( (binary_expression "(long)puVar24 + 4" (cast_expression "(long)puVar24" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (call_expression "(uint)((ulong)lVar29 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulong)lVar29 >> 0x20)" ( (binary_expression "(ulong)lVar29 >> 0x20" (cast_expression "(ulong)lVar29" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar24 = buffer;" (assignment_expression "puVar24 = buffer" identifier = identifier) ;) }) while (parenthesized_expression "(uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555))" ( (binary_expression "uVar36 < (ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555)" identifier < (call_expression "(ulong)(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555)" ( (binary_expression "((long)pRVar15 - (long)pRVar37 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)pRVar15 - (long)pRVar37 >> 3)" ( (binary_expression "(long)pRVar15 - (long)pRVar37 >> 3" (binary_expression "(long)pRVar15 - (long)pRVar37" (cast_expression "(long)pRVar15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pRVar37" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )) * number_literal) )))) )) ;) (ERROR "pPVar31 = (this->ranges_).\n                  super__Vector_base<gold::" (assignment_expression "pPVar31 = (this->ranges_).\n                  super__Vector_base<gold" identifier = (binary_expression "(this->ranges_).\n                  super__Vector_base<gold" (field_expression "(this->ranges_).\n                  super__Vector_base" (parenthesized_expression "(this->ranges_)" ( (field_expression "this->ranges_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                  ._M_impl._M_start;" statement_identifier (ERROR "::Per_cu_range_list,_std::allocator<gold:" : : (comma_expression "Per_cu_range_list,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Per_cu_range_list>_>\n                  ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Per_cu_range_list>_>\n                  ._M_impl._M_start;" (field_expression "Per_cu_range_list>_>\n                  ._M_impl._M_start" (field_expression "Per_cu_range_list>_>\n                  ._M_impl" (binary_expression "Per_cu_range_list>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) })) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) (expression_statement "uVar36 = (ulong)local_5c;" (assignment_expression "uVar36 = (ulong)local_5c" identifier = (cast_expression "(ulong)local_5c" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(uVar36 < (ulong)(((long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3) * -0x5555555555555555)\n            )" ( (binary_expression "uVar36 < (ulong)(((long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3) * -0x5555555555555555)" identifier < (call_expression "(ulong)(((long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(((long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3) * -0x5555555555555555)" ( (binary_expression "((long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3)" ( (ERROR "(long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::" (comma_expression "(long)(this->ranges_).\n                                     super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std" (binary_expression "(long)(this->ranges_).\n                                     super__Vector_base<gold" (cast_expression "(long)(this->ranges_).\n                                     super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(this->ranges_).\n                                     super__Vector_base" (parenthesized_expression "(this->ranges_)" ( (field_expression "this->ranges_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Gdb_index::Per_cu_range_list" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31 >> 3" (binary_expression "Per_cu_range_list>_>\n                                     ._M_impl._M_finish - (long)pPVar31" (field_expression "Per_cu_range_list>_>\n                                     ._M_impl._M_finish" (field_expression "Per_cu_range_list>_>\n                                     ._M_impl" (binary_expression "Per_cu_range_list>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)pPVar31" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )) * number_literal) )))) )) ;) (expression_statement "lVar23 = (long)buffer - (long)puVar32;" (assignment_expression "lVar23 = (long)buffer - (long)puVar32" identifier = (binary_expression "(long)buffer - (long)puVar32" (cast_expression "(long)buffer" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar32" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (this->symtab_offset_ != lVar23) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x518,"do_write");\n  }" if (parenthesized_expression "(this->symtab_offset_ != lVar23)" ( (binary_expression "this->symtab_offset_ != lVar23" (field_expression "this->symtab_offset_" identifier -> field_identifier) != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x518,"do_write");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/gdb-index.cc",0x518,"do_write");" (call_expression "do_gold_unreachable("../../gold/gdb-index.cc",0x518,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x518,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (expression_statement "uVar36 = this->gdb_symtab_->capacity_;" (assignment_expression "uVar36 = this->gdb_symtab_->capacity_" identifier = (field_expression "this->gdb_symtab_->capacity_" (field_expression "this->gdb_symtab_" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (uVar36 != 0) {\n    ppGVar16 = this->gdb_symtab_->hashtab_;\n    uVar26 = 0;\n    puVar24 = buffer;\n    do {\n      pGVar17 = ppGVar16[uVar26];\n      if (pGVar17 == (Gdb_symbol *)0x0) {\n        uVar22 = 0;\n        uVar34 = 0;\n      }\n      else {\n        if ((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar38 = pGVar17->name_key - 1;\n        uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index);\n        uVar22 = ((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_;\n      }\n      *(uint *)puVar24 = uVar22;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      buffer = puVar24 + 1;\n      *(uint *)((long)puVar24 + 4) = uVar34;\n      puVar24 = buffer;\n    } while (uVar26 < uVar36);\n    lVar23 = (long)buffer - (long)puVar32;\n  }" if (parenthesized_expression "(uVar36 != 0)" ( (binary_expression "uVar36 != 0" identifier != number_literal) )) (compound_statement "{\n    ppGVar16 = this->gdb_symtab_->hashtab_;\n    uVar26 = 0;\n    puVar24 = buffer;\n    do {\n      pGVar17 = ppGVar16[uVar26];\n      if (pGVar17 == (Gdb_symbol *)0x0) {\n        uVar22 = 0;\n        uVar34 = 0;\n      }\n      else {\n        if ((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar38 = pGVar17->name_key - 1;\n        uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index);\n        uVar22 = ((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_;\n      }\n      *(uint *)puVar24 = uVar22;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      buffer = puVar24 + 1;\n      *(uint *)((long)puVar24 + 4) = uVar34;\n      puVar24 = buffer;\n    } while (uVar26 < uVar36);\n    lVar23 = (long)buffer - (long)puVar32;\n  }" { (expression_statement "ppGVar16 = this->gdb_symtab_->hashtab_;" (assignment_expression "ppGVar16 = this->gdb_symtab_->hashtab_" identifier = (field_expression "this->gdb_symtab_->hashtab_" (field_expression "this->gdb_symtab_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "puVar24 = buffer;" (assignment_expression "puVar24 = buffer" identifier = identifier) ;) (do_statement "do {\n      pGVar17 = ppGVar16[uVar26];\n      if (pGVar17 == (Gdb_symbol *)0x0) {\n        uVar22 = 0;\n        uVar34 = 0;\n      }\n      else {\n        if ((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar38 = pGVar17->name_key - 1;\n        uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index);\n        uVar22 = ((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_;\n      }\n      *(uint *)puVar24 = uVar22;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      buffer = puVar24 + 1;\n      *(uint *)((long)puVar24 + 4) = uVar34;\n      puVar24 = buffer;\n    } while (uVar26 < uVar36);" do (compound_statement "{\n      pGVar17 = ppGVar16[uVar26];\n      if (pGVar17 == (Gdb_symbol *)0x0) {\n        uVar22 = 0;\n        uVar34 = 0;\n      }\n      else {\n        if ((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar38 = pGVar17->name_key - 1;\n        uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index);\n        uVar22 = ((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_;\n      }\n      *(uint *)puVar24 = uVar22;\n      uVar26 = (ulong)((int)uVar26 + 1);\n      buffer = puVar24 + 1;\n      *(uint *)((long)puVar24 + 4) = uVar34;\n      puVar24 = buffer;\n    }" { (expression_statement "pGVar17 = ppGVar16[uVar26];" (assignment_expression "pGVar17 = ppGVar16[uVar26]" identifier = (subscript_expression "ppGVar16[uVar26]" identifier [ identifier ])) ;) (if_statement "if (pGVar17 == (Gdb_symbol *)0x0) {\n        uVar22 = 0;\n        uVar34 = 0;\n      }\n      else {\n        if ((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar38 = pGVar17->name_key - 1;\n        uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index);\n        uVar22 = ((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_;\n      }" if (parenthesized_expression "(pGVar17 == (Gdb_symbol *)0x0)" ( (binary_expression "pGVar17 == (Gdb_symbol *)0x0" identifier == (cast_expression "(Gdb_symbol *)0x0" ( (type_descriptor "Gdb_symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar22 = 0;\n        uVar34 = 0;\n      }" { (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" identifier = number_literal) ;) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        if ((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar38 = pGVar17->name_key - 1;\n        uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index);\n        uVar22 = ((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_;\n      }" else (compound_statement "{\n        if ((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar38 = pGVar17->name_key - 1;\n        uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index);\n        uVar22 = ((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_;\n      }" { (if_statement "if ((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }" if (parenthesized_expression "((this->stringpool_).key_to_offset_.size_ < pGVar17->name_key)" ( (binary_expression "(this->stringpool_).key_to_offset_.size_ < pGVar17->name_key" (field_expression "(this->stringpool_).key_to_offset_.size_" (field_expression "(this->stringpool_).key_to_offset_" (parenthesized_expression "(this->stringpool_)" ( (field_expression "this->stringpool_" identifier -> field_identifier) )) . field_identifier) . field_identifier) < (field_expression "pGVar17->name_key" identifier -> field_identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }" { comment (expression_statement "do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key");" (call_expression "do_gold_unreachable("../../gold/stringpool.h",0x108,"get_offset_from_key")" identifier (argument_list "("../../gold/stringpool.h",0x108,"get_offset_from_key")" ( (string_literal ""../../gold/stringpool.h"" " string_content ") , number_literal , (string_literal ""get_offset_from_key"" " string_content ") ))) ;) })) (expression_statement "uVar38 = pGVar17->name_key - 1;" (assignment_expression "uVar38 = pGVar17->name_key - 1" identifier = (binary_expression "pGVar17->name_key - 1" (field_expression "pGVar17->name_key" identifier -> field_identifier) - number_literal)) ;) (expression_statement "uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index);" (assignment_expression "uVar34 = *(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index)" identifier = (pointer_expression "*(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index)" * (cast_expression "(uint *)(this->cu_vector_offsets_ + pGVar17->cu_vector_index)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this->cu_vector_offsets_ + pGVar17->cu_vector_index)" ( (binary_expression "this->cu_vector_offsets_ + pGVar17->cu_vector_index" (field_expression "this->cu_vector_offsets_" identifier -> field_identifier) + (field_expression "pGVar17->cu_vector_index" identifier -> field_identifier)) ))))) ;) (expression_statement "uVar22 = ((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_;" (assignment_expression "uVar22 = ((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_" identifier = (binary_expression "((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)) -\n                 (int)this->cu_pool_offset_" (parenthesized_expression "((int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8))" ( (binary_expression "(int)this->stringpool_offset_ +\n                 (int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)" (cast_expression "(int)this->stringpool_offset_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->stringpool_offset_" identifier -> field_identifier)) + (cast_expression "(int)*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)" * (cast_expression "(undefined8 *)\n                       ((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8)" ( (ERROR "(long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std::" (comma_expression "(long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int,_std" (binary_expression "(long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std::vector<long_int" (binary_expression "(long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base<std" (cast_expression "(long)(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(this->stringpool_).key_to_offset_.chunks_.\n                              super__Vector_base" (field_expression "(this->stringpool_).key_to_offset_.chunks_" (field_expression "(this->stringpool_).key_to_offset_" (parenthesized_expression "(this->stringpool_)" ( (field_expression "this->stringpool_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) < identifier) (ERROR "::vector" : : identifier) < identifier) , identifier) : : (binary_expression "allocator<long_int>_>,_std" (binary_expression "allocator<long_int>_" (binary_expression "allocator<long_int" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "vector<long_int,_std" (binary_expression "vector<long_int" identifier < identifier) , identifier) : : (comma_expression "allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int,_std" (binary_expression "allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base<long_int" (field_expression "allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd].\n                              super__Vector_base" (subscript_expression "allocator<long_int>_>_>_>\n                              ._M_impl._M_start[uVar38 >> 0xd]" (field_expression "allocator<long_int>_>_>_>\n                              ._M_impl._M_start" (field_expression "allocator<long_int>_>_>_>\n                              ._M_impl" (binary_expression "allocator<long_int>_>_>_" (binary_expression "allocator<long_int>_>_" (binary_expression "allocator<long_int>_" (binary_expression "allocator<long_int" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) [ (binary_expression "uVar38 >> 0xd" identifier >> number_literal) ]) . field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<long_int>_>._M_impl.\n                              _M_start + (ulong)((uint)uVar38 & 0x1fff) * 8" (field_expression "allocator<long_int>_>._M_impl.\n                              _M_start" (field_expression "allocator<long_int>_>._M_impl" (binary_expression "allocator<long_int>_" (binary_expression "allocator<long_int" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) + (binary_expression "(ulong)((uint)uVar38 & 0x1fff) * 8" (call_expression "(ulong)((uint)uVar38 & 0x1fff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)uVar38 & 0x1fff)" ( (binary_expression "(uint)uVar38 & 0x1fff" (cast_expression "(uint)uVar38" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) * number_literal)) )))))) )) - (cast_expression "(int)this->cu_pool_offset_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->cu_pool_offset_" identifier -> field_identifier)))) ;) }))) (expression_statement "*(uint *)puVar24 = uVar22;" (assignment_expression "*(uint *)puVar24 = uVar22" (pointer_expression "*(uint *)puVar24" * (cast_expression "(uint *)puVar24" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "uVar26 = (ulong)((int)uVar26 + 1);" (assignment_expression "uVar26 = (ulong)((int)uVar26 + 1)" identifier = (call_expression "(ulong)((int)uVar26 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar26 + 1)" ( (binary_expression "(int)uVar26 + 1" (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "buffer = puVar24 + 1;" (assignment_expression "buffer = puVar24 + 1" identifier = (binary_expression "puVar24 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)((long)puVar24 + 4) = uVar34;" (assignment_expression "*(uint *)((long)puVar24 + 4) = uVar34" (pointer_expression "*(uint *)((long)puVar24 + 4)" * (cast_expression "(uint *)((long)puVar24 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar24 + 4)" ( (binary_expression "(long)puVar24 + 4" (cast_expression "(long)puVar24" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "puVar24 = buffer;" (assignment_expression "puVar24 = buffer" identifier = identifier) ;) }) while (parenthesized_expression "(uVar26 < uVar36)" ( (binary_expression "uVar26 < uVar36" identifier < identifier) )) ;) (expression_statement "lVar23 = (long)buffer - (long)puVar32;" (assignment_expression "lVar23 = (long)buffer - (long)puVar32" identifier = (binary_expression "(long)buffer - (long)puVar32" (cast_expression "(long)buffer" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar32" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (this->cu_pool_offset_ == lVar23) {\n    ppvVar18 = (this->cu_vector_list_).\n               super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n               ._M_impl._M_start;\n    uVar36 = (long)(this->cu_vector_list_).\n                   super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n                   ._M_impl._M_finish - (long)ppvVar18 >> 3;\n    if (uVar36 != 0) {\n      uVar26 = 0;\n      puVar24 = buffer;\n      do {\n        pvVar19 = ppvVar18[uVar26];\n        buffer = (uint64_t *)((long)puVar24 + 4);\n        ppVar20 = (pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl._M_start;\n        uVar38 = (long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20 >> 3;\n        *(uint *)puVar24 = (uint)uVar38;\n        if (uVar38 != 0) {\n          uVar28 = 0;\n          puVar24 = buffer;\n          do {\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          } while (uVar28 < uVar38);\n        }\n        uVar26 = (ulong)((int)uVar26 + 1);\n        puVar24 = buffer;\n      } while (uVar26 < uVar36);\n      lVar23 = (long)buffer - (long)puVar32;\n    }\n    if (this->stringpool_offset_ == lVar23) {\n      Stringpool_template<char>::write_to_buffer(&this->stringpool_,(uchar *)buffer,lVar5 - lVar23);\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x53f,"do_write");\n  }" if (parenthesized_expression "(this->cu_pool_offset_ == lVar23)" ( (binary_expression "this->cu_pool_offset_ == lVar23" (field_expression "this->cu_pool_offset_" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    ppvVar18 = (this->cu_vector_list_).\n               super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n               ._M_impl._M_start;\n    uVar36 = (long)(this->cu_vector_list_).\n                   super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n                   ._M_impl._M_finish - (long)ppvVar18 >> 3;\n    if (uVar36 != 0) {\n      uVar26 = 0;\n      puVar24 = buffer;\n      do {\n        pvVar19 = ppvVar18[uVar26];\n        buffer = (uint64_t *)((long)puVar24 + 4);\n        ppVar20 = (pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl._M_start;\n        uVar38 = (long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20 >> 3;\n        *(uint *)puVar24 = (uint)uVar38;\n        if (uVar38 != 0) {\n          uVar28 = 0;\n          puVar24 = buffer;\n          do {\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          } while (uVar28 < uVar38);\n        }\n        uVar26 = (ulong)((int)uVar26 + 1);\n        puVar24 = buffer;\n      } while (uVar26 < uVar36);\n      lVar23 = (long)buffer - (long)puVar32;\n    }\n    if (this->stringpool_offset_ == lVar23) {\n      Stringpool_template<char>::write_to_buffer(&this->stringpool_,(uchar *)buffer,lVar5 - lVar23);\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/gdb-index.cc",0x53f,"do_write");\n  }" { (ERROR "ppvVar18 = (this->cu_vector_list_).\n               super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::" (comma_expression "ppvVar18 = (this->cu_vector_list_).\n               super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std" (binary_expression "ppvVar18 = (this->cu_vector_list_).\n               super__Vector_base<std::vector<std::pair<int" (binary_expression "ppvVar18 = (this->cu_vector_list_).\n               super__Vector_base<std::vector<std" (assignment_expression "ppvVar18 = (this->cu_vector_list_).\n               super__Vector_base<std" identifier = (binary_expression "(this->cu_vector_list_).\n               super__Vector_base<std" (field_expression "(this->cu_vector_list_).\n               super__Vector_base" (parenthesized_expression "(this->cu_vector_list_)" ( (field_expression "this->cu_vector_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>_>_>*,_std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_>*,_std" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier))) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>,_std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<int,_unsigned_char>_>_>*>_>\n               ._M_impl._M_start;" (comma_expression "pair<int,_unsigned_char>_>_>*>_>\n               ._M_impl._M_start" (binary_expression "pair<int" identifier < identifier) , (field_expression "_unsigned_char>_>_>*>_>\n               ._M_impl._M_start" (field_expression "_unsigned_char>_>_>*>_>\n               ._M_impl" (binary_expression "_unsigned_char>_>_>*>_" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (pointer_expression "*>_" * (ERROR ">" >) identifier)) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (ERROR "uVar36 = (long)(this->cu_vector_list_).\n                   super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::" (comma_expression "uVar36 = (long)(this->cu_vector_list_).\n                   super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std" (binary_expression "uVar36 = (long)(this->cu_vector_list_).\n                   super__Vector_base<std::vector<std::pair<int" (binary_expression "uVar36 = (long)(this->cu_vector_list_).\n                   super__Vector_base<std::vector<std" (assignment_expression "uVar36 = (long)(this->cu_vector_list_).\n                   super__Vector_base<std" identifier = (binary_expression "(long)(this->cu_vector_list_).\n                   super__Vector_base<std" (cast_expression "(long)(this->cu_vector_list_).\n                   super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(this->cu_vector_list_).\n                   super__Vector_base" (parenthesized_expression "(this->cu_vector_list_)" ( (field_expression "this->cu_vector_list_" identifier -> field_identifier) )) . field_identifier)) < identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>_>_>*,_std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_>*,_std" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier))) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>,_std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<int,_unsigned_char>_>_>*>_>\n                   ._M_impl._M_finish - (long)ppvVar18 >> 3;" (comma_expression "pair<int,_unsigned_char>_>_>*>_>\n                   ._M_impl._M_finish - (long)ppvVar18 >> 3" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_>*>_>\n                   ._M_impl._M_finish - (long)ppvVar18 >> 3" (binary_expression "_unsigned_char>_>_>*>_>\n                   ._M_impl._M_finish - (long)ppvVar18" (field_expression "_unsigned_char>_>_>*>_>\n                   ._M_impl._M_finish" (field_expression "_unsigned_char>_>_>*>_>\n                   ._M_impl" (binary_expression "_unsigned_char>_>_>*>_" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (pointer_expression "*>_" * (ERROR ">" >) identifier)) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)ppvVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar36 != 0) {\n      uVar26 = 0;\n      puVar24 = buffer;\n      do {\n        pvVar19 = ppvVar18[uVar26];\n        buffer = (uint64_t *)((long)puVar24 + 4);\n        ppVar20 = (pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl._M_start;\n        uVar38 = (long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20 >> 3;\n        *(uint *)puVar24 = (uint)uVar38;\n        if (uVar38 != 0) {\n          uVar28 = 0;\n          puVar24 = buffer;\n          do {\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          } while (uVar28 < uVar38);\n        }\n        uVar26 = (ulong)((int)uVar26 + 1);\n        puVar24 = buffer;\n      } while (uVar26 < uVar36);\n      lVar23 = (long)buffer - (long)puVar32;\n    }" if (parenthesized_expression "(uVar36 != 0)" ( (binary_expression "uVar36 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar26 = 0;\n      puVar24 = buffer;\n      do {\n        pvVar19 = ppvVar18[uVar26];\n        buffer = (uint64_t *)((long)puVar24 + 4);\n        ppVar20 = (pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl._M_start;\n        uVar38 = (long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20 >> 3;\n        *(uint *)puVar24 = (uint)uVar38;\n        if (uVar38 != 0) {\n          uVar28 = 0;\n          puVar24 = buffer;\n          do {\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          } while (uVar28 < uVar38);\n        }\n        uVar26 = (ulong)((int)uVar26 + 1);\n        puVar24 = buffer;\n      } while (uVar26 < uVar36);\n      lVar23 = (long)buffer - (long)puVar32;\n    }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "puVar24 = buffer;" (assignment_expression "puVar24 = buffer" identifier = identifier) ;) (do_statement "do {\n        pvVar19 = ppvVar18[uVar26];\n        buffer = (uint64_t *)((long)puVar24 + 4);\n        ppVar20 = (pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl._M_start;\n        uVar38 = (long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20 >> 3;\n        *(uint *)puVar24 = (uint)uVar38;\n        if (uVar38 != 0) {\n          uVar28 = 0;\n          puVar24 = buffer;\n          do {\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          } while (uVar28 < uVar38);\n        }\n        uVar26 = (ulong)((int)uVar26 + 1);\n        puVar24 = buffer;\n      } while (uVar26 < uVar36);" do (compound_statement "{\n        pvVar19 = ppvVar18[uVar26];\n        buffer = (uint64_t *)((long)puVar24 + 4);\n        ppVar20 = (pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl._M_start;\n        uVar38 = (long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20 >> 3;\n        *(uint *)puVar24 = (uint)uVar38;\n        if (uVar38 != 0) {\n          uVar28 = 0;\n          puVar24 = buffer;\n          do {\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          } while (uVar28 < uVar38);\n        }\n        uVar26 = (ulong)((int)uVar26 + 1);\n        puVar24 = buffer;\n      }" { (expression_statement "pvVar19 = ppvVar18[uVar26];" (assignment_expression "pvVar19 = ppvVar18[uVar26]" identifier = (subscript_expression "ppvVar18[uVar26]" identifier [ identifier ])) ;) (expression_statement "buffer = (uint64_t *)((long)puVar24 + 4);" (assignment_expression "buffer = (uint64_t *)((long)puVar24 + 4)" identifier = (cast_expression "(uint64_t *)((long)puVar24 + 4)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar24 + 4)" ( (binary_expression "(long)puVar24 + 4" (cast_expression "(long)puVar24" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "ppVar20 = (pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl._M_start;" (assignment_expression "ppVar20 = (pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl._M_start" identifier = (field_expression "(pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl._M_start" (field_expression "(pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )._M_impl" (parenthesized_expression "(pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                  )" ( (ERROR "pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::" (comma_expression "pvVar19->\n                  super__Vector_base<std::pair<int,_unsigned_char>,_std" (binary_expression "pvVar19->\n                  super__Vector_base<std::pair<int" (binary_expression "pvVar19->\n                  super__Vector_base<std" (field_expression "pvVar19->\n                  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (comma_expression "pair<int,_unsigned_char>_>_" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier)) (ERROR ">" >) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar38 = (long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20 >> 3;" (assignment_expression "uVar38 = (long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20 >> 3" identifier = (binary_expression "(long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20 >> 3" (binary_expression "(long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish - (long)ppVar20" (cast_expression "(long)(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl._M_finish" (field_expression "(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )._M_impl" (parenthesized_expression "(pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                       )" ( (ERROR "pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::" (comma_expression "pvVar19->\n                       super__Vector_base<std::pair<int,_unsigned_char>,_std" (binary_expression "pvVar19->\n                       super__Vector_base<std::pair<int" (binary_expression "pvVar19->\n                       super__Vector_base<std" (field_expression "pvVar19->\n                       super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (comma_expression "pair<int,_unsigned_char>_>_" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier)) (ERROR ">" >) )) . field_identifier) . field_identifier)) - (cast_expression "(long)ppVar20" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (expression_statement "*(uint *)puVar24 = (uint)uVar38;" (assignment_expression "*(uint *)puVar24 = (uint)uVar38" (pointer_expression "*(uint *)puVar24" * (cast_expression "(uint *)puVar24" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(uint)uVar38" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar38 != 0) {\n          uVar28 = 0;\n          puVar24 = buffer;\n          do {\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          } while (uVar28 < uVar38);\n        }" if (parenthesized_expression "(uVar38 != 0)" ( (binary_expression "uVar38 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar28 = 0;\n          puVar24 = buffer;\n          do {\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          } while (uVar28 < uVar38);\n        }" { (expression_statement "uVar28 = 0;" (assignment_expression "uVar28 = 0" identifier = number_literal) ;) (expression_statement "puVar24 = buffer;" (assignment_expression "puVar24 = buffer" identifier = identifier) ;) (do_statement "do {\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          } while (uVar28 < uVar38);" do (compound_statement "{\n            ppVar3 = ppVar20 + uVar28;\n            uVar34 = ppVar3->first;\n            if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }\n            buffer = (uint64_t *)((long)puVar24 + 4);\n            *(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;\n            uVar28 = (ulong)((int)uVar28 + 1);\n            puVar24 = buffer;\n          }" { (expression_statement "ppVar3 = ppVar20 + uVar28;" (assignment_expression "ppVar3 = ppVar20 + uVar28" identifier = (binary_expression "ppVar20 + uVar28" identifier + identifier)) ;) (expression_statement "uVar34 = ppVar3->first;" (assignment_expression "uVar34 = ppVar3->first" identifier = (field_expression "ppVar3->first" identifier -> field_identifier)) ;) (if_statement "if ((int)uVar34 < 0) {\n              uVar34 = (iVar33 + -1) - uVar34;\n            }" if (parenthesized_expression "((int)uVar34 < 0)" ( (binary_expression "(int)uVar34 < 0" (cast_expression "(int)uVar34" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              uVar34 = (iVar33 + -1) - uVar34;\n            }" { (expression_statement "uVar34 = (iVar33 + -1) - uVar34;" (assignment_expression "uVar34 = (iVar33 + -1) - uVar34" identifier = (binary_expression "(iVar33 + -1) - uVar34" (parenthesized_expression "(iVar33 + -1)" ( (binary_expression "iVar33 + -1" identifier + number_literal) )) - identifier)) ;) })) (expression_statement "buffer = (uint64_t *)((long)puVar24 + 4);" (assignment_expression "buffer = (uint64_t *)((long)puVar24 + 4)" identifier = (cast_expression "(uint64_t *)((long)puVar24 + 4)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar24 + 4)" ( (binary_expression "(long)puVar24 + 4" (cast_expression "(long)puVar24" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "*(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18;" (assignment_expression "*(uint *)puVar24 = uVar34 | (uint)ppVar3->second << 0x18" (pointer_expression "*(uint *)puVar24" * (cast_expression "(uint *)puVar24" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "uVar34 | (uint)ppVar3->second << 0x18" identifier | (binary_expression "(uint)ppVar3->second << 0x18" (cast_expression "(uint)ppVar3->second" ( (type_descriptor "uint" type_identifier) ) (field_expression "ppVar3->second" identifier -> field_identifier)) << number_literal))) ;) (expression_statement "uVar28 = (ulong)((int)uVar28 + 1);" (assignment_expression "uVar28 = (ulong)((int)uVar28 + 1)" identifier = (call_expression "(ulong)((int)uVar28 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar28 + 1)" ( (binary_expression "(int)uVar28 + 1" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar24 = buffer;" (assignment_expression "puVar24 = buffer" identifier = identifier) ;) }) while (parenthesized_expression "(uVar28 < uVar38)" ( (binary_expression "uVar28 < uVar38" identifier < identifier) )) ;) })) (expression_statement "uVar26 = (ulong)((int)uVar26 + 1);" (assignment_expression "uVar26 = (ulong)((int)uVar26 + 1)" identifier = (call_expression "(ulong)((int)uVar26 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar26 + 1)" ( (binary_expression "(int)uVar26 + 1" (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar24 = buffer;" (assignment_expression "puVar24 = buffer" identifier = identifier) ;) }) while (parenthesized_expression "(uVar26 < uVar36)" ( (binary_expression "uVar26 < uVar36" identifier < identifier) )) ;) (expression_statement "lVar23 = (long)buffer - (long)puVar32;" (assignment_expression "lVar23 = (long)buffer - (long)puVar32" identifier = (binary_expression "(long)buffer - (long)puVar32" (cast_expression "(long)buffer" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar32" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (this->stringpool_offset_ == lVar23) {\n      Stringpool_template<char>::write_to_buffer(&this->stringpool_,(uchar *)buffer,lVar5 - lVar23);\n      return;\n    }" if (parenthesized_expression "(this->stringpool_offset_ == lVar23)" ( (binary_expression "this->stringpool_offset_ == lVar23" (field_expression "this->stringpool_offset_" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      Stringpool_template<char>::write_to_buffer(&this->stringpool_,(uchar *)buffer,lVar5 - lVar23);\n      return;\n    }" { (expression_statement "Stringpool_template<char>::write_to_buffer(&this->stringpool_,(uchar *)buffer,lVar5 - lVar23);" (binary_expression "Stringpool_template<char>::write_to_buffer(&this->stringpool_,(uchar *)buffer,lVar5 - lVar23)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "write_to_buffer(&this->stringpool_,(uchar *)buffer,lVar5 - lVar23)" identifier (argument_list "(&this->stringpool_,(uchar *)buffer,lVar5 - lVar23)" ( (pointer_expression "&this->stringpool_" & (field_expression "this->stringpool_" identifier -> field_identifier)) , (cast_expression "(uchar *)buffer" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "lVar5 - lVar23" identifier - identifier) )))) ;) (return_statement "return;" return ;) })) comment (expression_statement "do_gold_unreachable("../../gold/gdb-index.cc",0x53f,"do_write");" (call_expression "do_gold_unreachable("../../gold/gdb-index.cc",0x53f,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x53f,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) comment (expression_statement "do_gold_unreachable("../../gold/gdb-index.cc",0x52b,"do_write");" (call_expression "do_gold_unreachable("../../gold/gdb-index.cc",0x52b,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x52b,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })))
(translation_unit "void FUN_00252130(long param_1,long param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  long lVar5;\n  ulong *puVar6;\n  uint uVar7;\n  long lVar8;\n  uint *puVar9;\n  uint *puVar10;\n  ulong uVar11;\n  long lVar12;\n  long lVar13;\n  ulong uVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  uint uVar18;\n  ulong uVar19;\n  long lVar20;\n  ulong uVar21;\n  uint *puVar22;\n  uint local_5c;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  lVar13 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar2 = *(long *)(param_1 + 0x10);\n  if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }\n  puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);\n  lVar13 = *(long *)(param_1 + 0x1c0);\n  lVar20 = *(long *)(param_1 + 200);\n  *puVar16 = 0x1800000007;\n  puVar22 = (uint *)(puVar16 + 3);\n  lVar12 = *(long *)(param_1 + 0xc0);\n  *(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);\n  *(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);\n  uVar3 = *(undefined8 *)(param_1 + 0x1d8);\n  *(int *)(puVar16 + 1) = (int)lVar13;\n  *(int *)((long)puVar16 + 0x14) = (int)uVar3;\n  lVar8 = 0x18;\n  iVar17 = (int)(lVar20 - lVar12 >> 4);\n  if (iVar17 != 0) {\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (lVar8 != lVar13) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xd8);\n  uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;\n  if (uVar19 != 0) {\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1c8) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xf0);\n  if (lVar13 != *(long *)(param_1 + 0xf8)) {\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d0) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }\n  uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);\n  if (uVar19 != 0) {\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d8) == lVar8) {\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }\n                    \n  FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");\n}\n\n" (function_definition "void FUN_00252130(long param_1,long param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  long lVar5;\n  ulong *puVar6;\n  uint uVar7;\n  long lVar8;\n  uint *puVar9;\n  uint *puVar10;\n  ulong uVar11;\n  long lVar12;\n  long lVar13;\n  ulong uVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  uint uVar18;\n  ulong uVar19;\n  long lVar20;\n  ulong uVar21;\n  uint *puVar22;\n  uint local_5c;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  lVar13 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar2 = *(long *)(param_1 + 0x10);\n  if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }\n  puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);\n  lVar13 = *(long *)(param_1 + 0x1c0);\n  lVar20 = *(long *)(param_1 + 200);\n  *puVar16 = 0x1800000007;\n  puVar22 = (uint *)(puVar16 + 3);\n  lVar12 = *(long *)(param_1 + 0xc0);\n  *(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);\n  *(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);\n  uVar3 = *(undefined8 *)(param_1 + 0x1d8);\n  *(int *)(puVar16 + 1) = (int)lVar13;\n  *(int *)((long)puVar16 + 0x14) = (int)uVar3;\n  lVar8 = 0x18;\n  iVar17 = (int)(lVar20 - lVar12 >> 4);\n  if (iVar17 != 0) {\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (lVar8 != lVar13) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xd8);\n  uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;\n  if (uVar19 != 0) {\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1c8) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xf0);\n  if (lVar13 != *(long *)(param_1 + 0xf8)) {\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d0) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }\n  uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);\n  if (uVar19 != 0) {\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d8) == lVar8) {\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }\n                    \n  FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");\n}" primitive_type (function_declarator "FUN_00252130(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  long lVar5;\n  ulong *puVar6;\n  uint uVar7;\n  long lVar8;\n  uint *puVar9;\n  uint *puVar10;\n  ulong uVar11;\n  long lVar12;\n  long lVar13;\n  ulong uVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  uint uVar18;\n  ulong uVar19;\n  long lVar20;\n  ulong uVar21;\n  uint *puVar22;\n  uint local_5c;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  lVar13 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar2 = *(long *)(param_1 + 0x10);\n  if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }\n  puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);\n  lVar13 = *(long *)(param_1 + 0x1c0);\n  lVar20 = *(long *)(param_1 + 200);\n  *puVar16 = 0x1800000007;\n  puVar22 = (uint *)(puVar16 + 3);\n  lVar12 = *(long *)(param_1 + 0xc0);\n  *(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);\n  *(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);\n  uVar3 = *(undefined8 *)(param_1 + 0x1d8);\n  *(int *)(puVar16 + 1) = (int)lVar13;\n  *(int *)((long)puVar16 + 0x14) = (int)uVar3;\n  lVar8 = 0x18;\n  iVar17 = (int)(lVar20 - lVar12 >> 4);\n  if (iVar17 != 0) {\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (lVar8 != lVar13) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xd8);\n  uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;\n  if (uVar19 != 0) {\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1c8) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xf0);\n  if (lVar13 != *(long *)(param_1 + 0xf8)) {\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d0) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }\n  uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);\n  if (uVar19 != 0) {\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d8) == lVar8) {\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }\n                    \n  FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "undefined8 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined8 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "ulong uVar19;" type_identifier identifier ;) (declaration "long lVar20;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar21;" type_identifier identifier ;) (declaration "uint *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint local_5c;" type_identifier identifier ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }" { (expression_statement "FUN_0016cdf0("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })) (expression_statement "lVar13 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar13 = *(long *)(param_1 + 0x18)" identifier = (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 2" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }" { (expression_statement "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;) })) (expression_statement "lVar2 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x10)" identifier = (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }" if (parenthesized_expression "((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2))" ( (binary_expression "(lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)" (parenthesized_expression "(lVar13 < 0)" ( (binary_expression "lVar13 < 0" identifier < number_literal) )) || (parenthesized_expression "(*(long *)(param_2 + 0x10) < lVar13 + lVar2)" ( (binary_expression "*(long *)(param_2 + 0x10) < lVar13 + lVar2" (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) < (binary_expression "lVar13 + lVar2" identifier + identifier)) ))) )) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }" { (expression_statement "FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");" (call_expression "FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view")" identifier (argument_list "("../../gold/output.h",0x6f,"get_output_view")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""get_output_view"" " string_content ") ))) ;) })) (expression_statement "puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);" (assignment_expression "puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13)" identifier = (cast_expression "(undefined8 *)(*(long *)(param_2 + 0x18) + lVar13)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x18) + lVar13)" ( (binary_expression "*(long *)(param_2 + 0x18) + lVar13" (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "lVar13 = *(long *)(param_1 + 0x1c0);" (assignment_expression "lVar13 = *(long *)(param_1 + 0x1c0)" identifier = (pointer_expression "*(long *)(param_1 + 0x1c0)" * (cast_expression "(long *)(param_1 + 0x1c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c0)" ( (binary_expression "param_1 + 0x1c0" identifier + number_literal) ))))) ;) (expression_statement "lVar20 = *(long *)(param_1 + 200);" (assignment_expression "lVar20 = *(long *)(param_1 + 200)" identifier = (pointer_expression "*(long *)(param_1 + 200)" * (cast_expression "(long *)(param_1 + 200)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) ))))) ;) (expression_statement "*puVar16 = 0x1800000007;" (assignment_expression "*puVar16 = 0x1800000007" (pointer_expression "*puVar16" * identifier) = number_literal) ;) (expression_statement "puVar22 = (uint *)(puVar16 + 3);" (assignment_expression "puVar22 = (uint *)(puVar16 + 3)" identifier = (cast_expression "(uint *)(puVar16 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 3)" ( (binary_expression "puVar16 + 3" identifier + number_literal) )))) ;) (expression_statement "lVar12 = *(long *)(param_1 + 0xc0);" (assignment_expression "lVar12 = *(long *)(param_1 + 0xc0)" identifier = (pointer_expression "*(long *)(param_1 + 0xc0)" * (cast_expression "(long *)(param_1 + 0xc0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc0)" ( (binary_expression "param_1 + 0xc0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);" (assignment_expression "*(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8)" (pointer_expression "*(int *)((long)puVar16 + 0xc)" * (cast_expression "(int *)((long)puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar16 + 0xc)" ( (binary_expression "(long)puVar16 + 0xc" (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(int)*(undefined8 *)(param_1 + 0x1c8)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(undefined8 *)(param_1 + 0x1c8)" * (cast_expression "(undefined8 *)(param_1 + 0x1c8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c8)" ( (binary_expression "param_1 + 0x1c8" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);" (assignment_expression "*(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0)" (pointer_expression "*(int *)(puVar16 + 2)" * (cast_expression "(int *)(puVar16 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 2)" ( (binary_expression "puVar16 + 2" identifier + number_literal) )))) = (cast_expression "(int)*(undefined8 *)(param_1 + 0x1d0)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(undefined8 *)(param_1 + 0x1d0)" * (cast_expression "(undefined8 *)(param_1 + 0x1d0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d0)" ( (binary_expression "param_1 + 0x1d0" identifier + number_literal) )))))) ;) (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x1d8);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x1d8)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x1d8)" * (cast_expression "(undefined8 *)(param_1 + 0x1d8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d8)" ( (binary_expression "param_1 + 0x1d8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 1) = (int)lVar13;" (assignment_expression "*(int *)(puVar16 + 1) = (int)lVar13" (pointer_expression "*(int *)(puVar16 + 1)" * (cast_expression "(int *)(puVar16 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 1)" ( (binary_expression "puVar16 + 1" identifier + number_literal) )))) = (cast_expression "(int)lVar13" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int *)((long)puVar16 + 0x14) = (int)uVar3;" (assignment_expression "*(int *)((long)puVar16 + 0x14) = (int)uVar3" (pointer_expression "*(int *)((long)puVar16 + 0x14)" * (cast_expression "(int *)((long)puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar16 + 0x14)" ( (binary_expression "(long)puVar16 + 0x14" (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "lVar8 = 0x18;" (assignment_expression "lVar8 = 0x18" identifier = number_literal) ;) (expression_statement "iVar17 = (int)(lVar20 - lVar12 >> 4);" (assignment_expression "iVar17 = (int)(lVar20 - lVar12 >> 4)" identifier = (cast_expression "(int)(lVar20 - lVar12 >> 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(lVar20 - lVar12 >> 4)" ( (binary_expression "lVar20 - lVar12 >> 4" (binary_expression "lVar20 - lVar12" identifier - identifier) >> number_literal) )))) ;) (if_statement "if (iVar17 != 0) {\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" { (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) (expression_statement "puVar15 = (undefined8 *)(lVar12 + 8);" (assignment_expression "puVar15 = (undefined8 *)(lVar12 + 8)" identifier = (cast_expression "(undefined8 *)(lVar12 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 8)" ( (binary_expression "lVar12 + 8" identifier + number_literal) )))) ;) (do_statement "do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));" do (compound_statement "{\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    }" { (expression_statement "puVar10 = puVar9 + 4;" (assignment_expression "puVar10 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)puVar9 = puVar15[-1];" (assignment_expression "*(undefined8 *)puVar9 = puVar15[-1]" (pointer_expression "*(undefined8 *)puVar9" * (cast_expression "(undefined8 *)puVar9" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (subscript_expression "puVar15[-1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined8 *)(puVar9 + 2) = *puVar15;" (assignment_expression "*(undefined8 *)(puVar9 + 2) = *puVar15" (pointer_expression "*(undefined8 *)(puVar9 + 2)" * (cast_expression "(undefined8 *)(puVar9 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 2)" ( (binary_expression "puVar9 + 2" identifier + number_literal) )))) = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5))" ( (binary_expression "puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5)" identifier != (cast_expression "(uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + (ulong)(iVar17 - 1) * 2 + 5)" ( (binary_expression "puVar16 + (ulong)(iVar17 - 1) * 2 + 5" (binary_expression "puVar16 + (ulong)(iVar17 - 1) * 2" identifier + (binary_expression "(ulong)(iVar17 - 1) * 2" (call_expression "(ulong)(iVar17 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar17 - 1)" ( (binary_expression "iVar17 - 1" identifier - number_literal) ))) * number_literal)) + number_literal) )))) )) ;) (expression_statement "puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;" (assignment_expression "puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4" identifier = (binary_expression "puVar22 + ((ulong)(iVar17 - 1) + 1) * 4" identifier + (binary_expression "((ulong)(iVar17 - 1) + 1) * 4" (parenthesized_expression "((ulong)(iVar17 - 1) + 1)" ( (binary_expression "(ulong)(iVar17 - 1) + 1" (call_expression "(ulong)(iVar17 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar17 - 1)" ( (binary_expression "iVar17 - 1" identifier - number_literal) ))) + number_literal) )) * number_literal))) ;) (expression_statement "lVar13 = *(long *)(param_1 + 0x1c0);" (assignment_expression "lVar13 = *(long *)(param_1 + 0x1c0)" identifier = (pointer_expression "*(long *)(param_1 + 0x1c0)" * (cast_expression "(long *)(param_1 + 0x1c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c0)" ( (binary_expression "param_1 + 0x1c0" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" identifier = (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (lVar8 != lVar13) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }" if (parenthesized_expression "(lVar8 != lVar13)" ( (binary_expression "lVar8 != lVar13" identifier != identifier) )) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }" { (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x4ee,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (expression_statement "lVar13 = *(long *)(param_1 + 0xd8);" (assignment_expression "lVar13 = *(long *)(param_1 + 0xd8)" identifier = (pointer_expression "*(long *)(param_1 + 0xd8)" * (cast_expression "(long *)(param_1 + 0xd8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;" (assignment_expression "uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555" identifier = (binary_expression "(*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(param_1 + 0xe0) - lVar13 >> 3)" ( (binary_expression "*(long *)(param_1 + 0xe0) - lVar13 >> 3" (binary_expression "*(long *)(param_1 + 0xe0) - lVar13" (pointer_expression "*(long *)(param_1 + 0xe0)" * (cast_expression "(long *)(param_1 + 0xe0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))) - identifier) >> number_literal) )) * number_literal)) ;) (if_statement "if (uVar19 != 0) {\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) (do_statement "do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);" do (compound_statement "{\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    }" { (expression_statement "puVar22 = puVar9 + 6;" (assignment_expression "puVar22 = puVar9 + 6" identifier = (binary_expression "puVar9 + 6" identifier + number_literal)) ;) (expression_statement "puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);" (assignment_expression "puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18)" identifier = (cast_expression "(undefined8 *)(lVar13 + uVar11 * 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + uVar11 * 0x18)" ( (binary_expression "lVar13 + uVar11 * 0x18" identifier + (binary_expression "uVar11 * 0x18" identifier * number_literal)) )))) ;) (expression_statement "*(undefined8 *)puVar9 = *puVar15;" (assignment_expression "*(undefined8 *)puVar9 = *puVar15" (pointer_expression "*(undefined8 *)puVar9" * (cast_expression "(undefined8 *)puVar9" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "*(undefined8 *)(puVar9 + 2) = puVar15[1];" (assignment_expression "*(undefined8 *)(puVar9 + 2) = puVar15[1]" (pointer_expression "*(undefined8 *)(puVar9 + 2)" * (cast_expression "(undefined8 *)(puVar9 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 2)" ( (binary_expression "puVar9 + 2" identifier + number_literal) )))) = (subscript_expression "puVar15[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined8 *)(puVar9 + 4) = puVar15[2];" (assignment_expression "*(undefined8 *)(puVar9 + 4) = puVar15[2]" (pointer_expression "*(undefined8 *)(puVar9 + 4)" * (cast_expression "(undefined8 *)(puVar9 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) = (subscript_expression "puVar15[2]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = (ulong)((int)uVar11 + 1);" (assignment_expression "uVar11 = (ulong)((int)uVar11 + 1)" identifier = (call_expression "(ulong)((int)uVar11 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar11 + 1)" ( (binary_expression "(int)uVar11 + 1" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) }) while (parenthesized_expression "(uVar11 < uVar19)" ( (binary_expression "uVar11 < uVar19" identifier < identifier) )) ;) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" identifier = (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (*(long *)(param_1 + 0x1c8) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x1c8) != lVar8)" ( (binary_expression "*(long *)(param_1 + 0x1c8) != lVar8" (pointer_expression "*(long *)(param_1 + 0x1c8)" * (cast_expression "(long *)(param_1 + 0x1c8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c8)" ( (binary_expression "param_1 + 0x1c8" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }" { (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x4fa,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (expression_statement "lVar13 = *(long *)(param_1 + 0xf0);" (assignment_expression "lVar13 = *(long *)(param_1 + 0xf0)" identifier = (pointer_expression "*(long *)(param_1 + 0xf0)" * (cast_expression "(long *)(param_1 + 0xf0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf0)" ( (binary_expression "param_1 + 0xf0" identifier + number_literal) ))))) ;) (if_statement "if (lVar13 != *(long *)(param_1 + 0xf8)) {\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" if (parenthesized_expression "(lVar13 != *(long *)(param_1 + 0xf8))" ( (binary_expression "lVar13 != *(long *)(param_1 + 0xf8)" identifier != (pointer_expression "*(long *)(param_1 + 0xf8)" * (cast_expression "(long *)(param_1 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) ))))) )) (compound_statement "{\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" { (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));" do (compound_statement "{\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    }" { (expression_statement "plVar1 = (long *)(lVar13 + uVar19 * 0x18);" (assignment_expression "plVar1 = (long *)(lVar13 + uVar19 * 0x18)" identifier = (cast_expression "(long *)(lVar13 + uVar19 * 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + uVar19 * 0x18)" ( (binary_expression "lVar13 + uVar19 * 0x18" identifier + (binary_expression "uVar19 * 0x18" identifier * number_literal)) )))) ;) (expression_statement "uVar18 = *(uint *)(plVar1 + 1);" (assignment_expression "uVar18 = *(uint *)(plVar1 + 1)" identifier = (pointer_expression "*(uint *)(plVar1 + 1)" * (cast_expression "(uint *)(plVar1 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar1 + 1)" ( (binary_expression "plVar1 + 1" identifier + number_literal) ))))) ;) (expression_statement "plVar4 = (long *)plVar1[2];" (assignment_expression "plVar4 = (long *)plVar1[2]" identifier = (cast_expression "(long *)plVar1[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar1[2]" identifier [ number_literal ]))) ;) (expression_statement "plVar1 = (long *)*plVar1;" (assignment_expression "plVar1 = (long *)*plVar1" identifier = (cast_expression "(long *)*plVar1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar1" * identifier))) ;) (expression_statement "lVar20 = *plVar4;" (assignment_expression "lVar20 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;) (if_statement "if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }" if (parenthesized_expression "((int)uVar18 < 0)" ( (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        uVar18 = (iVar17 + -1) - uVar18;\n      }" { (expression_statement "uVar18 = (iVar17 + -1) - uVar18;" (assignment_expression "uVar18 = (iVar17 + -1) - uVar18" identifier = (binary_expression "(iVar17 + -1) - uVar18" (parenthesized_expression "(iVar17 + -1)" ( (binary_expression "iVar17 + -1" identifier + number_literal) )) - identifier)) ;) })) (if_statement "if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }" if (parenthesized_expression "(plVar4[1] != lVar20)" ( (binary_expression "plVar4[1] != lVar20" (subscript_expression "plVar4[1]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) (do_statement "do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));" do (compound_statement "{\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        }" { (expression_statement "puVar10 = (uint *)(lVar20 + uVar19 * 0x18);" (assignment_expression "puVar10 = (uint *)(lVar20 + uVar19 * 0x18)" identifier = (cast_expression "(uint *)(lVar20 + uVar19 * 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + uVar19 * 0x18)" ( (binary_expression "lVar20 + uVar19 * 0x18" identifier + (binary_expression "uVar19 * 0x18" identifier * number_literal)) )))) ;) (expression_statement "uVar7 = *puVar10;" (assignment_expression "uVar7 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (if_statement "if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n            lVar12 = 0;\n          }" { (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }" else (compound_statement "{\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }" { (if_statement "if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }" if (parenthesized_expression "(*(code **)(*plVar1 + 0xc0) == FUN_0014c900)" ( (binary_expression "*(code **)(*plVar1 + 0xc0) == FUN_0014c900" (pointer_expression "*(code **)(*plVar1 + 0xc0)" * (cast_expression "(code **)(*plVar1 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0xc0)" ( (binary_expression "*plVar1 + 0xc0" (pointer_expression "*plVar1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }" { (if_statement "if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }" if (parenthesized_expression "((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7)" ( (binary_expression "(ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7" (call_expression "(ulong)(plVar1[0xb] - plVar1[10] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(plVar1[0xb] - plVar1[10] >> 3)" ( (binary_expression "plVar1[0xb] - plVar1[10] >> 3" (binary_expression "plVar1[0xb] - plVar1[10]" (subscript_expression "plVar1[0xb]" identifier [ number_literal ]) - (subscript_expression "plVar1[10]" identifier [ number_literal ])) >> number_literal) ))) <= (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }" { (expression_statement "FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section")" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") ))) ;) })) (expression_statement "lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);" (assignment_expression "lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8)" identifier = (pointer_expression "*(long *)(plVar1[10] + (ulong)uVar7 * 8)" * (cast_expression "(long *)(plVar1[10] + (ulong)uVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar1[10] + (ulong)uVar7 * 8)" ( (binary_expression "plVar1[10] + (ulong)uVar7 * 8" (subscript_expression "plVar1[10]" identifier [ number_literal ]) + (binary_expression "(ulong)uVar7 * 8" (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ))))) ;) }) (else_clause "else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }" else (compound_statement "{\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }" { (expression_statement "lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);" (assignment_expression "lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1)" identifier = (call_expression "(**(code **)(*plVar1 + 0xc0))(plVar1)" (parenthesized_expression "(**(code **)(*plVar1 + 0xc0))" ( (pointer_expression "**(code **)(*plVar1 + 0xc0)" * (pointer_expression "*(code **)(*plVar1 + 0xc0)" * (cast_expression "(code **)(*plVar1 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0xc0)" ( (binary_expression "*plVar1 + 0xc0" (pointer_expression "*plVar1" * identifier) + number_literal) ))))) )) (argument_list "(plVar1)" ( identifier )))) ;) }))) (if_statement "if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }" if (parenthesized_expression "((*(byte *)(lVar13 + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(lVar13 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(lVar13 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar13 + 0x20) & 1" (pointer_expression "*(byte *)(lVar13 + 0x20)" * (cast_expression "(byte *)(lVar13 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x20)" ( (binary_expression "lVar13 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }" { (expression_statement "FUN_0016cdf0("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (expression_statement "lVar13 = *(long *)(lVar13 + 8);" (assignment_expression "lVar13 = *(long *)(lVar13 + 8)" identifier = (pointer_expression "*(long *)(lVar13 + 8)" * (cast_expression "(long *)(lVar13 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 8)" ( (binary_expression "lVar13 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);" (assignment_expression "lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10)" identifier = (call_expression "(**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10)" (parenthesized_expression "(**(code **)(*plVar1 + 0xd0))" ( (pointer_expression "**(code **)(*plVar1 + 0xd0)" * (pointer_expression "*(code **)(*plVar1 + 0xd0)" * (cast_expression "(code **)(*plVar1 + 0xd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0xd0)" ( (binary_expression "*plVar1 + 0xd0" (pointer_expression "*plVar1" * identifier) + number_literal) ))))) )) (argument_list "(plVar1,*puVar10)" ( identifier , (pointer_expression "*puVar10" * identifier) )))) ;) (expression_statement "lVar20 = *plVar4;" (assignment_expression "lVar20 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;) (expression_statement "lVar12 = lVar12 + lVar13;" (assignment_expression "lVar12 = lVar12 + lVar13" identifier = (binary_expression "lVar12 + lVar13" identifier + identifier)) ;) }))) (expression_statement "lVar13 = *(long *)(puVar10 + 2);" (assignment_expression "lVar13 = *(long *)(puVar10 + 2)" identifier = (pointer_expression "*(long *)(puVar10 + 2)" * (cast_expression "(long *)(puVar10 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 2)" ( (binary_expression "puVar10 + 2" identifier + number_literal) ))))) ;) (expression_statement "puVar22 = puVar9 + 5;" (assignment_expression "puVar22 = puVar9 + 5" identifier = (binary_expression "puVar9 + 5" identifier + number_literal)) ;) (expression_statement "lVar8 = *(long *)(puVar10 + 4);" (assignment_expression "lVar8 = *(long *)(puVar10 + 4)" identifier = (pointer_expression "*(long *)(puVar10 + 4)" * (cast_expression "(long *)(puVar10 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 4)" ( (binary_expression "puVar10 + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar9[4] = uVar18;" (assignment_expression "puVar9[4] = uVar18" (subscript_expression "puVar9[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[2] = (uint)(lVar12 + lVar8);" (assignment_expression "puVar9[2] = (uint)(lVar12 + lVar8)" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (call_expression "(uint)(lVar12 + lVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(lVar12 + lVar8)" ( (binary_expression "lVar12 + lVar8" identifier + identifier) )))) ;) (expression_statement "lVar5 = plVar4[1];" (assignment_expression "lVar5 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar9 = (uint)(lVar13 + lVar12);" (assignment_expression "*puVar9 = (uint)(lVar13 + lVar12)" (pointer_expression "*puVar9" * identifier) = (call_expression "(uint)(lVar13 + lVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(lVar13 + lVar12)" ( (binary_expression "lVar13 + lVar12" identifier + identifier) )))) ;) (expression_statement "puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);" (assignment_expression "puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20)" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = (call_expression "(uint)((ulong)(lVar12 + lVar8) >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulong)(lVar12 + lVar8) >> 0x20)" ( (binary_expression "(ulong)(lVar12 + lVar8) >> 0x20" (call_expression "(ulong)(lVar12 + lVar8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar12 + lVar8)" ( (binary_expression "lVar12 + lVar8" identifier + identifier) ))) >> number_literal) )))) ;) (expression_statement "uVar19 = (ulong)((int)uVar19 + 1);" (assignment_expression "uVar19 = (ulong)((int)uVar19 + 1)" identifier = (call_expression "(ulong)((int)uVar19 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar19 + 1)" ( (binary_expression "(int)uVar19 + 1" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);" (assignment_expression "puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20)" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = (call_expression "(uint)((ulong)(lVar13 + lVar12) >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulong)(lVar13 + lVar12) >> 0x20)" ( (binary_expression "(ulong)(lVar13 + lVar12) >> 0x20" (call_expression "(ulong)(lVar13 + lVar12)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar13 + lVar12)" ( (binary_expression "lVar13 + lVar12" identifier + identifier) ))) >> number_literal) )))) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) }) while (parenthesized_expression "(uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555))" ( (binary_expression "uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555)" identifier < (call_expression "(ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((lVar5 - lVar20 >> 3) * -0x5555555555555555)" ( (binary_expression "(lVar5 - lVar20 >> 3) * -0x5555555555555555" (parenthesized_expression "(lVar5 - lVar20 >> 3)" ( (binary_expression "lVar5 - lVar20 >> 3" (binary_expression "lVar5 - lVar20" identifier - identifier) >> number_literal) )) * number_literal) )))) )) ;) (expression_statement "lVar13 = *(long *)(param_1 + 0xf0);" (assignment_expression "lVar13 = *(long *)(param_1 + 0xf0)" identifier = (pointer_expression "*(long *)(param_1 + 0xf0)" * (cast_expression "(long *)(param_1 + 0xf0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf0)" ( (binary_expression "param_1 + 0xf0" identifier + number_literal) ))))) ;) })) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) (expression_statement "uVar19 = (ulong)local_5c;" (assignment_expression "uVar19 = (ulong)local_5c" identifier = (cast_expression "(ulong)local_5c" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555))" ( (binary_expression "uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555)" identifier < (call_expression "(ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555)" ( (binary_expression "(*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(param_1 + 0xf8) - lVar13 >> 3)" ( (binary_expression "*(long *)(param_1 + 0xf8) - lVar13 >> 3" (binary_expression "*(long *)(param_1 + 0xf8) - lVar13" (pointer_expression "*(long *)(param_1 + 0xf8)" * (cast_expression "(long *)(param_1 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) - identifier) >> number_literal) )) * number_literal) )))) )) ;) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" identifier = (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (*(long *)(param_1 + 0x1d0) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x1d0) != lVar8)" ( (binary_expression "*(long *)(param_1 + 0x1d0) != lVar8" (pointer_expression "*(long *)(param_1 + 0x1d0)" * (cast_expression "(long *)(param_1 + 0x1d0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d0)" ( (binary_expression "param_1 + 0x1d0" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }" { (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x518,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (expression_statement "uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);" (assignment_expression "uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8)" identifier = (pointer_expression "*(ulong *)(*(long *)(param_1 + 0x108) + 8)" * (cast_expression "(ulong *)(*(long *)(param_1 + 0x108) + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x108) + 8)" ( (binary_expression "*(long *)(param_1 + 0x108) + 8" (pointer_expression "*(long *)(param_1 + 0x108)" * (cast_expression "(long *)(param_1 + 0x108)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (uVar19 != 0) {\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" { (expression_statement "lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);" (assignment_expression "lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0x108) + 0x10)" * (cast_expression "(long *)(*(long *)(param_1 + 0x108) + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x108) + 0x10)" ( (binary_expression "*(long *)(param_1 + 0x108) + 0x10" (pointer_expression "*(long *)(param_1 + 0x108)" * (cast_expression "(long *)(param_1 + 0x108)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) (do_statement "do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);" do (compound_statement "{\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    }" { (expression_statement "puVar6 = *(ulong **)(lVar13 + uVar11 * 8);" (assignment_expression "puVar6 = *(ulong **)(lVar13 + uVar11 * 8)" identifier = (pointer_expression "*(ulong **)(lVar13 + uVar11 * 8)" * (cast_expression "(ulong **)(lVar13 + uVar11 * 8)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar13 + uVar11 * 8)" ( (binary_expression "lVar13 + uVar11 * 8" identifier + (binary_expression "uVar11 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }" if (parenthesized_expression "(puVar6 == (ulong *)0x0)" ( (binary_expression "puVar6 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar7 = 0;\n        uVar18 = 0;\n      }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }" else (compound_statement "{\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }" { (if_statement "if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x180) < *puVar6)" ( (binary_expression "*(ulong *)(param_1 + 0x180) < *puVar6" (pointer_expression "*(ulong *)(param_1 + 0x180)" * (cast_expression "(ulong *)(param_1 + 0x180)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x180)" ( (binary_expression "param_1 + 0x180" identifier + number_literal) )))) < (pointer_expression "*puVar6" * identifier)) )) (compound_statement "{\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }" { (expression_statement "FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");" (call_expression "FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key")" identifier (argument_list "("../../gold/stringpool.h",0x108,"get_offset_from_key")" ( (string_literal ""../../gold/stringpool.h"" " string_content ") , number_literal , (string_literal ""get_offset_from_key"" " string_content ") ))) ;) })) (expression_statement "uVar21 = *puVar6 - 1;" (assignment_expression "uVar21 = *puVar6 - 1" identifier = (binary_expression "*puVar6 - 1" (pointer_expression "*puVar6" * identifier) - number_literal)) ;) (expression_statement "uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);" (assignment_expression "uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8)" identifier = (pointer_expression "*(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8)" * (cast_expression "(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8)" ( (binary_expression "*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8" (pointer_expression "*(long *)(param_1 + 0x128)" * (cast_expression "(long *)(param_1 + 0x128)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) + (binary_expression "(ulong)*(uint *)((long)puVar6 + 0xc) * 8" (binary_expression "(ulong)*(uint *)((long)puVar6 + 0xc)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)((long)puVar6 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 0xc)" ( (binary_expression "(long)puVar6 + 0xc" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);" (assignment_expression "uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8)" identifier = (binary_expression "((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8)" (parenthesized_expression "((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8))" ( (binary_expression "(int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" (cast_expression "(int)*(undefined8 *)(param_1 + 0x1e0)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(undefined8 *)(param_1 + 0x1e0)" * (cast_expression "(undefined8 *)(param_1 + 0x1e0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) ))))) + (cast_expression "(int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" * (cast_expression "(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" ( (binary_expression "*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8" (pointer_expression "*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18)" * (cast_expression "(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18" (pointer_expression "*(long *)(param_1 + 0x168)" * (cast_expression "(long *)(param_1 + 0x168)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x168)" ( (binary_expression "param_1 + 0x168" identifier + number_literal) )))) + (binary_expression "(uVar21 >> 0xd) * 0x18" (parenthesized_expression "(uVar21 >> 0xd)" ( (binary_expression "uVar21 >> 0xd" identifier >> number_literal) )) * number_literal)) )))) + (binary_expression "(ulong)((uint)uVar21 & 0x1fff) * 8" (call_expression "(ulong)((uint)uVar21 & 0x1fff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)uVar21 & 0x1fff)" ( (binary_expression "(uint)uVar21 & 0x1fff" (cast_expression "(uint)uVar21" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) * number_literal)) )))))) )) - (pointer_expression "*(int *)(param_1 + 0x1d8)" * (cast_expression "(int *)(param_1 + 0x1d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d8)" ( (binary_expression "param_1 + 0x1d8" identifier + number_literal) )))))) ;) }))) (expression_statement "*puVar9 = uVar7;" (assignment_expression "*puVar9 = uVar7" (pointer_expression "*puVar9" * identifier) = identifier) ;) (expression_statement "uVar11 = (ulong)((int)uVar11 + 1);" (assignment_expression "uVar11 = (ulong)((int)uVar11 + 1)" identifier = (call_expression "(ulong)((int)uVar11 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar11 + 1)" ( (binary_expression "(int)uVar11 + 1" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar22 = puVar9 + 2;" (assignment_expression "puVar22 = puVar9 + 2" identifier = (binary_expression "puVar9 + 2" identifier + number_literal)) ;) (expression_statement "puVar9[1] = uVar18;" (assignment_expression "puVar9[1] = uVar18" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) }) while (parenthesized_expression "(uVar11 < uVar19)" ( (binary_expression "uVar11 < uVar19" identifier < identifier) )) ;) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" identifier = (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (*(long *)(param_1 + 0x1d8) == lVar8) {\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x1d8) == lVar8)" ( (binary_expression "*(long *)(param_1 + 0x1d8) == lVar8" (pointer_expression "*(long *)(param_1 + 0x1d8)" * (cast_expression "(long *)(param_1 + 0x1d8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d8)" ( (binary_expression "param_1 + 0x1d8" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }" { (expression_statement "lVar13 = *(long *)(param_1 + 0x110);" (assignment_expression "lVar13 = *(long *)(param_1 + 0x110)" identifier = (pointer_expression "*(long *)(param_1 + 0x110)" * (cast_expression "(long *)(param_1 + 0x110)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;" (assignment_expression "uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3" identifier = (binary_expression "*(long *)(param_1 + 0x118) - lVar13 >> 3" (binary_expression "*(long *)(param_1 + 0x118) - lVar13" (pointer_expression "*(long *)(param_1 + 0x118)" * (cast_expression "(long *)(param_1 + 0x118)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) - identifier) >> number_literal)) ;) (if_statement "if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) (do_statement "do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);" do (compound_statement "{\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      }" { (expression_statement "plVar1 = *(long **)(lVar13 + uVar11 * 8);" (assignment_expression "plVar1 = *(long **)(lVar13 + uVar11 * 8)" identifier = (pointer_expression "*(long **)(lVar13 + uVar11 * 8)" * (cast_expression "(long **)(lVar13 + uVar11 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar13 + uVar11 * 8)" ( (binary_expression "lVar13 + uVar11 * 8" identifier + (binary_expression "uVar11 * 8" identifier * number_literal)) ))))) ;) (expression_statement "puVar22 = puVar9 + 1;" (assignment_expression "puVar22 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "lVar20 = *plVar1;" (assignment_expression "lVar20 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (expression_statement "uVar21 = plVar1[1] - lVar20 >> 3;" (assignment_expression "uVar21 = plVar1[1] - lVar20 >> 3" identifier = (binary_expression "plVar1[1] - lVar20 >> 3" (binary_expression "plVar1[1] - lVar20" (subscript_expression "plVar1[1]" identifier [ number_literal ]) - identifier) >> number_literal)) ;) (expression_statement "*puVar9 = (uint)uVar21;" (assignment_expression "*puVar9 = (uint)uVar21" (pointer_expression "*puVar9" * identifier) = (cast_expression "(uint)uVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }" if (parenthesized_expression "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) (do_statement "do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);" do (compound_statement "{\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          }" { (expression_statement "puVar10 = (uint *)(lVar20 + uVar14 * 8);" (assignment_expression "puVar10 = (uint *)(lVar20 + uVar14 * 8)" identifier = (cast_expression "(uint *)(lVar20 + uVar14 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + uVar14 * 8)" ( (binary_expression "lVar20 + uVar14 * 8" identifier + (binary_expression "uVar14 * 8" identifier * number_literal)) )))) ;) (expression_statement "uVar18 = *puVar10;" (assignment_expression "uVar18 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (if_statement "if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }" if (parenthesized_expression "((int)uVar18 < 0)" ( (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              uVar18 = (iVar17 + -1) - uVar18;\n            }" { (expression_statement "uVar18 = (iVar17 + -1) - uVar18;" (assignment_expression "uVar18 = (iVar17 + -1) - uVar18" identifier = (binary_expression "(iVar17 + -1) - uVar18" (parenthesized_expression "(iVar17 + -1)" ( (binary_expression "iVar17 + -1" identifier + number_literal) )) - identifier)) ;) })) (expression_statement "puVar22 = puVar9 + 1;" (assignment_expression "puVar22 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "*puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;" (assignment_expression "*puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18" (pointer_expression "*puVar9" * identifier) = (binary_expression "uVar18 | (uint)(byte)puVar10[1] << 0x18" identifier | (binary_expression "(uint)(byte)puVar10[1] << 0x18" (cast_expression "(uint)(byte)puVar10[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar10[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) << number_literal))) ;) (expression_statement "uVar14 = (ulong)((int)uVar14 + 1);" (assignment_expression "uVar14 = (ulong)((int)uVar14 + 1)" identifier = (call_expression "(ulong)((int)uVar14 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar14 + 1)" ( (binary_expression "(int)uVar14 + 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) }) while (parenthesized_expression "(uVar14 < uVar21)" ( (binary_expression "uVar14 < uVar21" identifier < identifier) )) ;) })) (expression_statement "uVar11 = (ulong)((int)uVar11 + 1);" (assignment_expression "uVar11 = (ulong)((int)uVar11 + 1)" identifier = (call_expression "(ulong)((int)uVar11 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)uVar11 + 1)" ( (binary_expression "(int)uVar11 + 1" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" identifier = identifier) ;) }) while (parenthesized_expression "(uVar11 < uVar19)" ( (binary_expression "uVar11 < uVar19" identifier < identifier) )) ;) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" identifier = (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (if_statement "if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0x1e0) == lVar8)" ( (binary_expression "*(long *)(param_1 + 0x1e0) == lVar8" (pointer_expression "*(long *)(param_1 + 0x1e0)" * (cast_expression "(long *)(param_1 + 0x1e0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }" { (expression_statement "FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);" (call_expression "FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8)" identifier (argument_list "(param_1 + 0x130,puVar22,lVar2 - lVar8)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) , identifier , (binary_expression "lVar2 - lVar8" identifier - identifier) ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x53f,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write")" identifier (argument_list "("../../gold/gdb-index.cc",0x52b,"do_write")" ( (string_literal ""../../gold/gdb-index.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (binary_expression IDENT + IDENT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) * LIT)) + LIT) )))) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) + LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) >> LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * 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 IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 IDENT + LIT) )) - IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) >> LIT) ))) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) }) (else_clause else (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 (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) ))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) ))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) >> LIT) )) * LIT) )))) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) >> LIT) )) * LIT) )))) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (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 + (binary_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 = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) )))) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) * LIT)) )))))) )) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (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 ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) >> LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 IDENT + LIT) )) - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) << LIT))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT - IDENT) ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "void FUN_00252130(long param_1,long param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  long lVar5;\n  ulong *puVar6;\n  uint uVar7;\n  long lVar8;\n  uint *puVar9;\n  uint *puVar10;\n  ulong uVar11;\n  long lVar12;\n  long lVar13;\n  ulong uVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  uint uVar18;\n  ulong uVar19;\n  long lVar20;\n  ulong uVar21;\n  uint *puVar22;\n  uint local_5c;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  lVar13 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar2 = *(long *)(param_1 + 0x10);\n  if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }\n  puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);\n  lVar13 = *(long *)(param_1 + 0x1c0);\n  lVar20 = *(long *)(param_1 + 200);\n  *puVar16 = 0x1800000007;\n  puVar22 = (uint *)(puVar16 + 3);\n  lVar12 = *(long *)(param_1 + 0xc0);\n  *(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);\n  *(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);\n  uVar3 = *(undefined8 *)(param_1 + 0x1d8);\n  *(int *)(puVar16 + 1) = (int)lVar13;\n  *(int *)((long)puVar16 + 0x14) = (int)uVar3;\n  lVar8 = 0x18;\n  iVar17 = (int)(lVar20 - lVar12 >> 4);\n  if (iVar17 != 0) {\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (lVar8 != lVar13) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xd8);\n  uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;\n  if (uVar19 != 0) {\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1c8) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xf0);\n  if (lVar13 != *(long *)(param_1 + 0xf8)) {\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d0) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }\n  uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);\n  if (uVar19 != 0) {\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d8) == lVar8) {\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }\n                    \n  FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");\n}" (primitive_type "void") (function_declarator "FUN_00252130(long param_1,long param_2)" (identifier "FUN_00252130") (parameter_list "(long param_1,long param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  long *plVar1;\n  long lVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  long lVar5;\n  ulong *puVar6;\n  uint uVar7;\n  long lVar8;\n  uint *puVar9;\n  uint *puVar10;\n  ulong uVar11;\n  long lVar12;\n  long lVar13;\n  ulong uVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  int iVar17;\n  uint uVar18;\n  ulong uVar19;\n  long lVar20;\n  ulong uVar21;\n  uint *puVar22;\n  uint local_5c;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  lVar13 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar2 = *(long *)(param_1 + 0x10);\n  if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }\n  puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);\n  lVar13 = *(long *)(param_1 + 0x1c0);\n  lVar20 = *(long *)(param_1 + 200);\n  *puVar16 = 0x1800000007;\n  puVar22 = (uint *)(puVar16 + 3);\n  lVar12 = *(long *)(param_1 + 0xc0);\n  *(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);\n  *(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);\n  uVar3 = *(undefined8 *)(param_1 + 0x1d8);\n  *(int *)(puVar16 + 1) = (int)lVar13;\n  *(int *)((long)puVar16 + 0x14) = (int)uVar3;\n  lVar8 = 0x18;\n  iVar17 = (int)(lVar20 - lVar12 >> 4);\n  if (iVar17 != 0) {\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (lVar8 != lVar13) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xd8);\n  uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;\n  if (uVar19 != 0) {\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1c8) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }\n  lVar13 = *(long *)(param_1 + 0xf0);\n  if (lVar13 != *(long *)(param_1 + 0xf8)) {\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d0) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }\n  uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);\n  if (uVar19 != 0) {\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }\n  if (*(long *)(param_1 + 0x1d8) == lVar8) {\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }\n                    \n  FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "ulong *puVar6;" (type_identifier "ulong") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "long lVar12;" (sized_type_specifier "long" (long "long")) (identifier "lVar12") (; ";")) (declaration "long lVar13;" (sized_type_specifier "long" (long "long")) (identifier "lVar13") (; ";")) (declaration "ulong uVar14;" (type_identifier "ulong") (identifier "uVar14") (; ";")) (declaration "undefined8 *puVar15;" (type_identifier "undefined8") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "undefined8 *puVar16;" (type_identifier "undefined8") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "ulong uVar19;" (type_identifier "ulong") (identifier "uVar19") (; ";")) (declaration "long lVar20;" (sized_type_specifier "long" (long "long")) (identifier "lVar20") (; ";")) (declaration "ulong uVar21;" (type_identifier "ulong") (identifier "uVar21") (; ";")) (declaration "uint *puVar22;" (type_identifier "uint") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "uint local_5c;" (type_identifier "uint") (identifier "local_5c") (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xe3,"offset")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.h",0xe3,"offset")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xe3") (, ",") (string_literal ""offset"" (" """) (string_content "offset") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar13 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar13 = *(long *)(param_1 + 0x18)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 2" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n  }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.h",0xcf,"data_size")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xcf") (, ",") (string_literal ""data_size"" (" """) (string_content "data_size") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar2 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x10)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }" (if "if") (parenthesized_expression "((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2))" (( "(") (binary_expression "(lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)" (parenthesized_expression "(lVar13 < 0)" (( "(") (binary_expression "lVar13 < 0" (identifier "lVar13") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(long *)(param_2 + 0x10) < lVar13 + lVar2)" (( "(") (binary_expression "*(long *)(param_2 + 0x10) < lVar13 + lVar2" (pointer_expression "*(long *)(param_2 + 0x10)" (* "*") (cast_expression "(long *)(param_2 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (< "<") (binary_expression "lVar13 + lVar2" (identifier "lVar13") (+ "+") (identifier "lVar2"))) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");\n  }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");" (call_expression "FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.h",0x6f,"get_output_view")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x6f") (, ",") (string_literal ""get_output_view"" (" """) (string_content "get_output_view") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);" (assignment_expression "puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13)" (identifier "puVar16") (= "=") (cast_expression "(undefined8 *)(*(long *)(param_2 + 0x18) + lVar13)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x18) + lVar13)" (( "(") (binary_expression "*(long *)(param_2 + 0x18) + lVar13" (pointer_expression "*(long *)(param_2 + 0x18)" (* "*") (cast_expression "(long *)(param_2 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (identifier "lVar13")) () ")")))) (; ";")) (expression_statement "lVar13 = *(long *)(param_1 + 0x1c0);" (assignment_expression "lVar13 = *(long *)(param_1 + 0x1c0)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_1 + 0x1c0)" (* "*") (cast_expression "(long *)(param_1 + 0x1c0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c0)" (( "(") (binary_expression "param_1 + 0x1c0" (identifier "param_1") (+ "+") (number_literal "0x1c0")) () ")"))))) (; ";")) (expression_statement "lVar20 = *(long *)(param_1 + 200);" (assignment_expression "lVar20 = *(long *)(param_1 + 200)" (identifier "lVar20") (= "=") (pointer_expression "*(long *)(param_1 + 200)" (* "*") (cast_expression "(long *)(param_1 + 200)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 200)" (( "(") (binary_expression "param_1 + 200" (identifier "param_1") (+ "+") (number_literal "200")) () ")"))))) (; ";")) (expression_statement "*puVar16 = 0x1800000007;" (assignment_expression "*puVar16 = 0x1800000007" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (number_literal "0x1800000007")) (; ";")) (expression_statement "puVar22 = (uint *)(puVar16 + 3);" (assignment_expression "puVar22 = (uint *)(puVar16 + 3)" (identifier "puVar22") (= "=") (cast_expression "(uint *)(puVar16 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 3)" (( "(") (binary_expression "puVar16 + 3" (identifier "puVar16") (+ "+") (number_literal "3")) () ")")))) (; ";")) (expression_statement "lVar12 = *(long *)(param_1 + 0xc0);" (assignment_expression "lVar12 = *(long *)(param_1 + 0xc0)" (identifier "lVar12") (= "=") (pointer_expression "*(long *)(param_1 + 0xc0)" (* "*") (cast_expression "(long *)(param_1 + 0xc0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc0)" (( "(") (binary_expression "param_1 + 0xc0" (identifier "param_1") (+ "+") (number_literal "0xc0")) () ")"))))) (; ";")) (expression_statement "*(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);" (assignment_expression "*(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8)" (pointer_expression "*(int *)((long)puVar16 + 0xc)" (* "*") (cast_expression "(int *)((long)puVar16 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar16 + 0xc)" (( "(") (binary_expression "(long)puVar16 + 0xc" (cast_expression "(long)puVar16" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar16")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (cast_expression "(int)*(undefined8 *)(param_1 + 0x1c8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(undefined8 *)(param_1 + 0x1c8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x1c8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c8)" (( "(") (binary_expression "param_1 + 0x1c8" (identifier "param_1") (+ "+") (number_literal "0x1c8")) () ")")))))) (; ";")) (expression_statement "*(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);" (assignment_expression "*(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0)" (pointer_expression "*(int *)(puVar16 + 2)" (* "*") (cast_expression "(int *)(puVar16 + 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 2)" (( "(") (binary_expression "puVar16 + 2" (identifier "puVar16") (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(int)*(undefined8 *)(param_1 + 0x1d0)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(undefined8 *)(param_1 + 0x1d0)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x1d0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d0)" (( "(") (binary_expression "param_1 + 0x1d0" (identifier "param_1") (+ "+") (number_literal "0x1d0")) () ")")))))) (; ";")) (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x1d8);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x1d8)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x1d8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x1d8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d8)" (( "(") (binary_expression "param_1 + 0x1d8" (identifier "param_1") (+ "+") (number_literal "0x1d8")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + 1) = (int)lVar13;" (assignment_expression "*(int *)(puVar16 + 1) = (int)lVar13" (pointer_expression "*(int *)(puVar16 + 1)" (* "*") (cast_expression "(int *)(puVar16 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 1)" (( "(") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(int)lVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar13"))) (; ";")) (expression_statement "*(int *)((long)puVar16 + 0x14) = (int)uVar3;" (assignment_expression "*(int *)((long)puVar16 + 0x14) = (int)uVar3" (pointer_expression "*(int *)((long)puVar16 + 0x14)" (* "*") (cast_expression "(int *)((long)puVar16 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar16 + 0x14)" (( "(") (binary_expression "(long)puVar16 + 0x14" (cast_expression "(long)puVar16" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar16")) (+ "+") (number_literal "0x14")) () ")")))) (= "=") (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3"))) (; ";")) (expression_statement "lVar8 = 0x18;" (assignment_expression "lVar8 = 0x18" (identifier "lVar8") (= "=") (number_literal "0x18")) (; ";")) (expression_statement "iVar17 = (int)(lVar20 - lVar12 >> 4);" (assignment_expression "iVar17 = (int)(lVar20 - lVar12 >> 4)" (identifier "iVar17") (= "=") (cast_expression "(int)(lVar20 - lVar12 >> 4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(lVar20 - lVar12 >> 4)" (( "(") (binary_expression "lVar20 - lVar12 >> 4" (binary_expression "lVar20 - lVar12" (identifier "lVar20") (- "-") (identifier "lVar12")) (>> ">>") (number_literal "4")) () ")")))) (; ";")) (if_statement "if (iVar17 != 0) {\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" (if "if") (parenthesized_expression "(iVar17 != 0)" (( "(") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar9 = puVar22;\n    puVar15 = (undefined8 *)(lVar12 + 8);\n    do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));\n    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;\n    lVar13 = *(long *)(param_1 + 0x1c0);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" ({ "{") (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" (identifier "puVar9") (= "=") (identifier "puVar22")) (; ";")) (expression_statement "puVar15 = (undefined8 *)(lVar12 + 8);" (assignment_expression "puVar15 = (undefined8 *)(lVar12 + 8)" (identifier "puVar15") (= "=") (cast_expression "(undefined8 *)(lVar12 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 8)" (( "(") (binary_expression "lVar12 + 8" (identifier "lVar12") (+ "+") (number_literal "8")) () ")")))) (; ";")) (do_statement "do {\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));" (do "do") (compound_statement "{\n      puVar10 = puVar9 + 4;\n      *(undefined8 *)puVar9 = puVar15[-1];\n      *(undefined8 *)(puVar9 + 2) = *puVar15;\n      puVar9 = puVar10;\n      puVar15 = puVar15 + 2;\n    }" ({ "{") (expression_statement "puVar10 = puVar9 + 4;" (assignment_expression "puVar10 = puVar9 + 4" (identifier "puVar10") (= "=") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*(undefined8 *)puVar9 = puVar15[-1];" (assignment_expression "*(undefined8 *)puVar9 = puVar15[-1]" (pointer_expression "*(undefined8 *)puVar9" (* "*") (cast_expression "(undefined8 *)puVar9" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9"))) (= "=") (subscript_expression "puVar15[-1]" (identifier "puVar15") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "*(undefined8 *)(puVar9 + 2) = *puVar15;" (assignment_expression "*(undefined8 *)(puVar9 + 2) = *puVar15" (pointer_expression "*(undefined8 *)(puVar9 + 2)" (* "*") (cast_expression "(undefined8 *)(puVar9 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 2)" (( "(") (binary_expression "puVar9 + 2" (identifier "puVar9") (+ "+") (number_literal "2")) () ")")))) (= "=") (pointer_expression "*puVar15" (* "*") (identifier "puVar15"))) (; ";")) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" (identifier "puVar9") (= "=") (identifier "puVar10")) (; ";")) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 2" (identifier "puVar15") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5))" (( "(") (binary_expression "puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5)" (identifier "puVar10") (!= "!=") (cast_expression "(uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + (ulong)(iVar17 - 1) * 2 + 5)" (( "(") (binary_expression "puVar16 + (ulong)(iVar17 - 1) * 2 + 5" (binary_expression "puVar16 + (ulong)(iVar17 - 1) * 2" (identifier "puVar16") (+ "+") (binary_expression "(ulong)(iVar17 - 1) * 2" (call_expression "(ulong)(iVar17 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(iVar17 - 1)" (( "(") (binary_expression "iVar17 - 1" (identifier "iVar17") (- "-") (number_literal "1")) () ")"))) (* "*") (number_literal "2"))) (+ "+") (number_literal "5")) () ")")))) () ")")) (; ";")) (expression_statement "puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;" (assignment_expression "puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4" (identifier "puVar22") (= "=") (binary_expression "puVar22 + ((ulong)(iVar17 - 1) + 1) * 4" (identifier "puVar22") (+ "+") (binary_expression "((ulong)(iVar17 - 1) + 1) * 4" (parenthesized_expression "((ulong)(iVar17 - 1) + 1)" (( "(") (binary_expression "(ulong)(iVar17 - 1) + 1" (call_expression "(ulong)(iVar17 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(iVar17 - 1)" (( "(") (binary_expression "iVar17 - 1" (identifier "iVar17") (- "-") (number_literal "1")) () ")"))) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar13 = *(long *)(param_1 + 0x1c0);" (assignment_expression "lVar13 = *(long *)(param_1 + 0x1c0)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_1 + 0x1c0)" (* "*") (cast_expression "(long *)(param_1 + 0x1c0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c0)" (( "(") (binary_expression "param_1 + 0x1c0" (identifier "param_1") (+ "+") (number_literal "0x1c0")) () ")"))))) (; ";")) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" (identifier "lVar8") (= "=") (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar22")) (- "-") (cast_expression "(long)puVar16" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar16")))) (; ";")) (} "}"))) (if_statement "if (lVar8 != lVar13) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }" (if "if") (parenthesized_expression "(lVar8 != lVar13)" (( "(") (binary_expression "lVar8 != lVar13" (identifier "lVar8") (!= "!=") (identifier "lVar13")) () ")")) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");\n  }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/gdb-index.cc",0x4ee,"do_write")" (( "(") (string_literal ""../../gold/gdb-index.cc"" (" """) (string_content "../../gold/gdb-index.cc") (" """)) (, ",") (number_literal "0x4ee") (, ",") (string_literal ""do_write"" (" """) (string_content "do_write") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar13 = *(long *)(param_1 + 0xd8);" (assignment_expression "lVar13 = *(long *)(param_1 + 0xd8)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_1 + 0xd8)" (* "*") (cast_expression "(long *)(param_1 + 0xd8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")"))))) (; ";")) (expression_statement "uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;" (assignment_expression "uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555" (identifier "uVar19") (= "=") (binary_expression "(*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(param_1 + 0xe0) - lVar13 >> 3)" (( "(") (binary_expression "*(long *)(param_1 + 0xe0) - lVar13 >> 3" (binary_expression "*(long *)(param_1 + 0xe0) - lVar13" (pointer_expression "*(long *)(param_1 + 0xe0)" (* "*") (cast_expression "(long *)(param_1 + 0xe0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe0)" (( "(") (binary_expression "param_1 + 0xe0" (identifier "param_1") (+ "+") (number_literal "0xe0")) () ")")))) (- "-") (identifier "lVar13")) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x5555555555555555"))) (; ";")) (if_statement "if (uVar19 != 0) {\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" (if "if") (parenthesized_expression "(uVar19 != 0)" (( "(") (binary_expression "uVar19 != 0" (identifier "uVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" (identifier "puVar9") (= "=") (identifier "puVar22")) (; ";")) (do_statement "do {\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);" (do "do") (compound_statement "{\n      puVar22 = puVar9 + 6;\n      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);\n      *(undefined8 *)puVar9 = *puVar15;\n      *(undefined8 *)(puVar9 + 2) = puVar15[1];\n      *(undefined8 *)(puVar9 + 4) = puVar15[2];\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar9 = puVar22;\n    }" ({ "{") (expression_statement "puVar22 = puVar9 + 6;" (assignment_expression "puVar22 = puVar9 + 6" (identifier "puVar22") (= "=") (binary_expression "puVar9 + 6" (identifier "puVar9") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);" (assignment_expression "puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18)" (identifier "puVar15") (= "=") (cast_expression "(undefined8 *)(lVar13 + uVar11 * 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + uVar11 * 0x18)" (( "(") (binary_expression "lVar13 + uVar11 * 0x18" (identifier "lVar13") (+ "+") (binary_expression "uVar11 * 0x18" (identifier "uVar11") (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "*(undefined8 *)puVar9 = *puVar15;" (assignment_expression "*(undefined8 *)puVar9 = *puVar15" (pointer_expression "*(undefined8 *)puVar9" (* "*") (cast_expression "(undefined8 *)puVar9" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9"))) (= "=") (pointer_expression "*puVar15" (* "*") (identifier "puVar15"))) (; ";")) (expression_statement "*(undefined8 *)(puVar9 + 2) = puVar15[1];" (assignment_expression "*(undefined8 *)(puVar9 + 2) = puVar15[1]" (pointer_expression "*(undefined8 *)(puVar9 + 2)" (* "*") (cast_expression "(undefined8 *)(puVar9 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 2)" (( "(") (binary_expression "puVar9 + 2" (identifier "puVar9") (+ "+") (number_literal "2")) () ")")))) (= "=") (subscript_expression "puVar15[1]" (identifier "puVar15") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined8 *)(puVar9 + 4) = puVar15[2];" (assignment_expression "*(undefined8 *)(puVar9 + 4) = puVar15[2]" (pointer_expression "*(undefined8 *)(puVar9 + 4)" (* "*") (cast_expression "(undefined8 *)(puVar9 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")")))) (= "=") (subscript_expression "puVar15[2]" (identifier "puVar15") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar11 = (ulong)((int)uVar11 + 1);" (assignment_expression "uVar11 = (ulong)((int)uVar11 + 1)" (identifier "uVar11") (= "=") (call_expression "(ulong)((int)uVar11 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)uVar11 + 1)" (( "(") (binary_expression "(int)uVar11 + 1" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" (identifier "puVar9") (= "=") (identifier "puVar22")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 < uVar19)" (( "(") (binary_expression "uVar11 < uVar19" (identifier "uVar11") (< "<") (identifier "uVar19")) () ")")) (; ";")) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" (identifier "lVar8") (= "=") (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar22")) (- "-") (cast_expression "(long)puVar16" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar16")))) (; ";")) (} "}"))) (if_statement "if (*(long *)(param_1 + 0x1c8) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x1c8) != lVar8)" (( "(") (binary_expression "*(long *)(param_1 + 0x1c8) != lVar8" (pointer_expression "*(long *)(param_1 + 0x1c8)" (* "*") (cast_expression "(long *)(param_1 + 0x1c8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c8)" (( "(") (binary_expression "param_1 + 0x1c8" (identifier "param_1") (+ "+") (number_literal "0x1c8")) () ")")))) (!= "!=") (identifier "lVar8")) () ")")) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");\n  }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/gdb-index.cc",0x4fa,"do_write")" (( "(") (string_literal ""../../gold/gdb-index.cc"" (" """) (string_content "../../gold/gdb-index.cc") (" """)) (, ",") (number_literal "0x4fa") (, ",") (string_literal ""do_write"" (" """) (string_content "do_write") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar13 = *(long *)(param_1 + 0xf0);" (assignment_expression "lVar13 = *(long *)(param_1 + 0xf0)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_1 + 0xf0)" (* "*") (cast_expression "(long *)(param_1 + 0xf0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf0)" (( "(") (binary_expression "param_1 + 0xf0" (identifier "param_1") (+ "+") (number_literal "0xf0")) () ")"))))) (; ";")) (if_statement "if (lVar13 != *(long *)(param_1 + 0xf8)) {\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" (if "if") (parenthesized_expression "(lVar13 != *(long *)(param_1 + 0xf8))" (( "(") (binary_expression "lVar13 != *(long *)(param_1 + 0xf8)" (identifier "lVar13") (!= "!=") (pointer_expression "*(long *)(param_1 + 0xf8)" (* "*") (cast_expression "(long *)(param_1 + 0xf8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")"))))) () ")")) (compound_statement "{\n    local_5c = 0;\n    uVar19 = 0;\n    do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" ({ "{") (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" (identifier "local_5c") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));" (do "do") (compound_statement "{\n      plVar1 = (long *)(lVar13 + uVar19 * 0x18);\n      uVar18 = *(uint *)(plVar1 + 1);\n      plVar4 = (long *)plVar1[2];\n      plVar1 = (long *)*plVar1;\n      lVar20 = *plVar4;\n      if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }\n      if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }\n      local_5c = local_5c + 1;\n      uVar19 = (ulong)local_5c;\n    }" ({ "{") (expression_statement "plVar1 = (long *)(lVar13 + uVar19 * 0x18);" (assignment_expression "plVar1 = (long *)(lVar13 + uVar19 * 0x18)" (identifier "plVar1") (= "=") (cast_expression "(long *)(lVar13 + uVar19 * 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + uVar19 * 0x18)" (( "(") (binary_expression "lVar13 + uVar19 * 0x18" (identifier "lVar13") (+ "+") (binary_expression "uVar19 * 0x18" (identifier "uVar19") (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "uVar18 = *(uint *)(plVar1 + 1);" (assignment_expression "uVar18 = *(uint *)(plVar1 + 1)" (identifier "uVar18") (= "=") (pointer_expression "*(uint *)(plVar1 + 1)" (* "*") (cast_expression "(uint *)(plVar1 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar1 + 1)" (( "(") (binary_expression "plVar1 + 1" (identifier "plVar1") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "plVar4 = (long *)plVar1[2];" (assignment_expression "plVar4 = (long *)plVar1[2]" (identifier "plVar4") (= "=") (cast_expression "(long *)plVar1[2]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar1[2]" (identifier "plVar1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "plVar1 = (long *)*plVar1;" (assignment_expression "plVar1 = (long *)*plVar1" (identifier "plVar1") (= "=") (cast_expression "(long *)*plVar1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar1" (* "*") (identifier "plVar1")))) (; ";")) (expression_statement "lVar20 = *plVar4;" (assignment_expression "lVar20 = *plVar4" (identifier "lVar20") (= "=") (pointer_expression "*plVar4" (* "*") (identifier "plVar4"))) (; ";")) (if_statement "if ((int)uVar18 < 0) {\n        uVar18 = (iVar17 + -1) - uVar18;\n      }" (if "if") (parenthesized_expression "((int)uVar18 < 0)" (( "(") (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        uVar18 = (iVar17 + -1) - uVar18;\n      }" ({ "{") (expression_statement "uVar18 = (iVar17 + -1) - uVar18;" (assignment_expression "uVar18 = (iVar17 + -1) - uVar18" (identifier "uVar18") (= "=") (binary_expression "(iVar17 + -1) - uVar18" (parenthesized_expression "(iVar17 + -1)" (( "(") (binary_expression "iVar17 + -1" (identifier "iVar17") (+ "+") (number_literal "-1")) () ")")) (- "-") (identifier "uVar18"))) (; ";")) (} "}"))) (if_statement "if (plVar4[1] != lVar20) {\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }" (if "if") (parenthesized_expression "(plVar4[1] != lVar20)" (( "(") (binary_expression "plVar4[1] != lVar20" (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]")) (!= "!=") (identifier "lVar20")) () ")")) (compound_statement "{\n        uVar19 = 0;\n        puVar9 = puVar22;\n        do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));\n        lVar13 = *(long *)(param_1 + 0xf0);\n      }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" (identifier "puVar9") (= "=") (identifier "puVar22")) (; ";")) (do_statement "do {\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));" (do "do") (compound_statement "{\n          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);\n          uVar7 = *puVar10;\n          if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }\n          lVar13 = *(long *)(puVar10 + 2);\n          puVar22 = puVar9 + 5;\n          lVar8 = *(long *)(puVar10 + 4);\n          puVar9[4] = uVar18;\n          puVar9[2] = (uint)(lVar12 + lVar8);\n          lVar5 = plVar4[1];\n          *puVar9 = (uint)(lVar13 + lVar12);\n          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);\n          uVar19 = (ulong)((int)uVar19 + 1);\n          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);\n          puVar9 = puVar22;\n        }" ({ "{") (expression_statement "puVar10 = (uint *)(lVar20 + uVar19 * 0x18);" (assignment_expression "puVar10 = (uint *)(lVar20 + uVar19 * 0x18)" (identifier "puVar10") (= "=") (cast_expression "(uint *)(lVar20 + uVar19 * 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + uVar19 * 0x18)" (( "(") (binary_expression "lVar20 + uVar19 * 0x18" (identifier "lVar20") (+ "+") (binary_expression "uVar19 * 0x18" (identifier "uVar19") (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "uVar7 = *puVar10;" (assignment_expression "uVar7 = *puVar10" (identifier "uVar7") (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (if_statement "if (uVar7 == 0) {\n            lVar12 = 0;\n          }\n          else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            lVar12 = 0;\n          }" ({ "{") (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" (identifier "lVar12") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }" (else "else") (compound_statement "{\n            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }\n            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }\n            lVar13 = *(long *)(lVar13 + 8);\n            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);\n            lVar20 = *plVar4;\n            lVar12 = lVar12 + lVar13;\n          }" ({ "{") (if_statement "if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }\n            else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }" (if "if") (parenthesized_expression "(*(code **)(*plVar1 + 0xc0) == FUN_0014c900)" (( "(") (binary_expression "*(code **)(*plVar1 + 0xc0) == FUN_0014c900" (pointer_expression "*(code **)(*plVar1 + 0xc0)" (* "*") (cast_expression "(code **)(*plVar1 + 0xc0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar1 + 0xc0)" (( "(") (binary_expression "*plVar1 + 0xc0" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (+ "+") (number_literal "0xc0")) () ")")))) (== "==") (identifier "FUN_0014c900")) () ")")) (compound_statement "{\n              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }\n              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);\n            }" ({ "{") (if_statement "if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }" (if "if") (parenthesized_expression "((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7)" (( "(") (binary_expression "(ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7" (call_expression "(ulong)(plVar1[0xb] - plVar1[10] >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(plVar1[0xb] - plVar1[10] >> 3)" (( "(") (binary_expression "plVar1[0xb] - plVar1[10] >> 3" (binary_expression "plVar1[0xb] - plVar1[10]" (subscript_expression "plVar1[0xb]" (identifier "plVar1") ([ "[") (number_literal "0xb") (] "]")) (- "-") (subscript_expression "plVar1[10]" (identifier "plVar1") ([ "[") (number_literal "10") (] "]"))) (>> ">>") (number_literal "3")) () ")"))) (<= "<=") (cast_expression "(ulong)uVar7" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar7"))) () ")")) (compound_statement "{\n                    \n                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");\n              }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x5c8") (, ",") (string_literal ""do_output_section"" (" """) (string_content "do_output_section") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);" (assignment_expression "lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(plVar1[10] + (ulong)uVar7 * 8)" (* "*") (cast_expression "(long *)(plVar1[10] + (ulong)uVar7 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar1[10] + (ulong)uVar7 * 8)" (( "(") (binary_expression "plVar1[10] + (ulong)uVar7 * 8" (subscript_expression "plVar1[10]" (identifier "plVar1") ([ "[") (number_literal "10") (] "]")) (+ "+") (binary_expression "(ulong)uVar7 * 8" (cast_expression "(ulong)uVar7" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar7")) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }" (else "else") (compound_statement "{\n              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);\n            }" ({ "{") (expression_statement "lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);" (assignment_expression "lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1)" (identifier "lVar13") (= "=") (call_expression "(**(code **)(*plVar1 + 0xc0))(plVar1)" (parenthesized_expression "(**(code **)(*plVar1 + 0xc0))" (( "(") (pointer_expression "**(code **)(*plVar1 + 0xc0)" (* "*") (pointer_expression "*(code **)(*plVar1 + 0xc0)" (* "*") (cast_expression "(code **)(*plVar1 + 0xc0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar1 + 0xc0)" (( "(") (binary_expression "*plVar1 + 0xc0" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (+ "+") (number_literal "0xc0")) () ")"))))) () ")")) (argument_list "(plVar1)" (( "(") (identifier "plVar1") () ")")))) (; ";")) (} "}")))) (if_statement "if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }" (if "if") (parenthesized_expression "((*(byte *)(lVar13 + 0x20) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(lVar13 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(lVar13 + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(lVar13 + 0x20) & 1" (pointer_expression "*(byte *)(lVar13 + 0x20)" (* "*") (cast_expression "(byte *)(lVar13 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + 0x20)" (( "(") (binary_expression "lVar13 + 0x20" (identifier "lVar13") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n              FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n            }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xc5,"address")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.h",0xc5,"address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xc5") (, ",") (string_literal ""address"" (" """) (string_content "address") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar13 = *(long *)(lVar13 + 8);" (assignment_expression "lVar13 = *(long *)(lVar13 + 8)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(lVar13 + 8)" (* "*") (cast_expression "(long *)(lVar13 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + 8)" (( "(") (binary_expression "lVar13 + 8" (identifier "lVar13") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);" (assignment_expression "lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10)" (identifier "lVar12") (= "=") (call_expression "(**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10)" (parenthesized_expression "(**(code **)(*plVar1 + 0xd0))" (( "(") (pointer_expression "**(code **)(*plVar1 + 0xd0)" (* "*") (pointer_expression "*(code **)(*plVar1 + 0xd0)" (* "*") (cast_expression "(code **)(*plVar1 + 0xd0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar1 + 0xd0)" (( "(") (binary_expression "*plVar1 + 0xd0" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (+ "+") (number_literal "0xd0")) () ")"))))) () ")")) (argument_list "(plVar1,*puVar10)" (( "(") (identifier "plVar1") (, ",") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) () ")")))) (; ";")) (expression_statement "lVar20 = *plVar4;" (assignment_expression "lVar20 = *plVar4" (identifier "lVar20") (= "=") (pointer_expression "*plVar4" (* "*") (identifier "plVar4"))) (; ";")) (expression_statement "lVar12 = lVar12 + lVar13;" (assignment_expression "lVar12 = lVar12 + lVar13" (identifier "lVar12") (= "=") (binary_expression "lVar12 + lVar13" (identifier "lVar12") (+ "+") (identifier "lVar13"))) (; ";")) (} "}")))) (expression_statement "lVar13 = *(long *)(puVar10 + 2);" (assignment_expression "lVar13 = *(long *)(puVar10 + 2)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(puVar10 + 2)" (* "*") (cast_expression "(long *)(puVar10 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 2)" (( "(") (binary_expression "puVar10 + 2" (identifier "puVar10") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "puVar22 = puVar9 + 5;" (assignment_expression "puVar22 = puVar9 + 5" (identifier "puVar22") (= "=") (binary_expression "puVar9 + 5" (identifier "puVar9") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "lVar8 = *(long *)(puVar10 + 4);" (assignment_expression "lVar8 = *(long *)(puVar10 + 4)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(puVar10 + 4)" (* "*") (cast_expression "(long *)(puVar10 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 4)" (( "(") (binary_expression "puVar10 + 4" (identifier "puVar10") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "puVar9[4] = uVar18;" (assignment_expression "puVar9[4] = uVar18" (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "puVar9[2] = (uint)(lVar12 + lVar8);" (assignment_expression "puVar9[2] = (uint)(lVar12 + lVar8)" (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (call_expression "(uint)(lVar12 + lVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(lVar12 + lVar8)" (( "(") (binary_expression "lVar12 + lVar8" (identifier "lVar12") (+ "+") (identifier "lVar8")) () ")")))) (; ";")) (expression_statement "lVar5 = plVar4[1];" (assignment_expression "lVar5 = plVar4[1]" (identifier "lVar5") (= "=") (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*puVar9 = (uint)(lVar13 + lVar12);" (assignment_expression "*puVar9 = (uint)(lVar13 + lVar12)" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (call_expression "(uint)(lVar13 + lVar12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(lVar13 + lVar12)" (( "(") (binary_expression "lVar13 + lVar12" (identifier "lVar13") (+ "+") (identifier "lVar12")) () ")")))) (; ";")) (expression_statement "puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);" (assignment_expression "puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20)" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (= "=") (call_expression "(uint)((ulong)(lVar12 + lVar8) >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulong)(lVar12 + lVar8) >> 0x20)" (( "(") (binary_expression "(ulong)(lVar12 + lVar8) >> 0x20" (call_expression "(ulong)(lVar12 + lVar8)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(lVar12 + lVar8)" (( "(") (binary_expression "lVar12 + lVar8" (identifier "lVar12") (+ "+") (identifier "lVar8")) () ")"))) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar19 = (ulong)((int)uVar19 + 1);" (assignment_expression "uVar19 = (ulong)((int)uVar19 + 1)" (identifier "uVar19") (= "=") (call_expression "(ulong)((int)uVar19 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)uVar19 + 1)" (( "(") (binary_expression "(int)uVar19 + 1" (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);" (assignment_expression "puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20)" (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (call_expression "(uint)((ulong)(lVar13 + lVar12) >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulong)(lVar13 + lVar12) >> 0x20)" (( "(") (binary_expression "(ulong)(lVar13 + lVar12) >> 0x20" (call_expression "(ulong)(lVar13 + lVar12)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(lVar13 + lVar12)" (( "(") (binary_expression "lVar13 + lVar12" (identifier "lVar13") (+ "+") (identifier "lVar12")) () ")"))) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" (identifier "puVar9") (= "=") (identifier "puVar22")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555))" (( "(") (binary_expression "uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555)" (identifier "uVar19") (< "<") (call_expression "(ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((lVar5 - lVar20 >> 3) * -0x5555555555555555)" (( "(") (binary_expression "(lVar5 - lVar20 >> 3) * -0x5555555555555555" (parenthesized_expression "(lVar5 - lVar20 >> 3)" (( "(") (binary_expression "lVar5 - lVar20 >> 3" (binary_expression "lVar5 - lVar20" (identifier "lVar5") (- "-") (identifier "lVar20")) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x5555555555555555")) () ")")))) () ")")) (; ";")) (expression_statement "lVar13 = *(long *)(param_1 + 0xf0);" (assignment_expression "lVar13 = *(long *)(param_1 + 0xf0)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_1 + 0xf0)" (* "*") (cast_expression "(long *)(param_1 + 0xf0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf0)" (( "(") (binary_expression "param_1 + 0xf0" (identifier "param_1") (+ "+") (number_literal "0xf0")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" (identifier "local_5c") (= "=") (binary_expression "local_5c + 1" (identifier "local_5c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar19 = (ulong)local_5c;" (assignment_expression "uVar19 = (ulong)local_5c" (identifier "uVar19") (= "=") (cast_expression "(ulong)local_5c" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_5c"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555))" (( "(") (binary_expression "uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555)" (identifier "uVar19") (< "<") (call_expression "(ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555)" (( "(") (binary_expression "(*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(param_1 + 0xf8) - lVar13 >> 3)" (( "(") (binary_expression "*(long *)(param_1 + 0xf8) - lVar13 >> 3" (binary_expression "*(long *)(param_1 + 0xf8) - lVar13" (pointer_expression "*(long *)(param_1 + 0xf8)" (* "*") (cast_expression "(long *)(param_1 + 0xf8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")")))) (- "-") (identifier "lVar13")) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x5555555555555555")) () ")")))) () ")")) (; ";")) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" (identifier "lVar8") (= "=") (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar22")) (- "-") (cast_expression "(long)puVar16" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar16")))) (; ";")) (} "}"))) (if_statement "if (*(long *)(param_1 + 0x1d0) != lVar8) {\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x1d0) != lVar8)" (( "(") (binary_expression "*(long *)(param_1 + 0x1d0) != lVar8" (pointer_expression "*(long *)(param_1 + 0x1d0)" (* "*") (cast_expression "(long *)(param_1 + 0x1d0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d0)" (( "(") (binary_expression "param_1 + 0x1d0" (identifier "param_1") (+ "+") (number_literal "0x1d0")) () ")")))) (!= "!=") (identifier "lVar8")) () ")")) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");\n  }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/gdb-index.cc",0x518,"do_write")" (( "(") (string_literal ""../../gold/gdb-index.cc"" (" """) (string_content "../../gold/gdb-index.cc") (" """)) (, ",") (number_literal "0x518") (, ",") (string_literal ""do_write"" (" """) (string_content "do_write") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);" (assignment_expression "uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8)" (identifier "uVar19") (= "=") (pointer_expression "*(ulong *)(*(long *)(param_1 + 0x108) + 8)" (* "*") (cast_expression "(ulong *)(*(long *)(param_1 + 0x108) + 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x108) + 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x108) + 8" (pointer_expression "*(long *)(param_1 + 0x108)" (* "*") (cast_expression "(long *)(param_1 + 0x108)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (uVar19 != 0) {\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" (if "if") (parenthesized_expression "(uVar19 != 0)" (( "(") (binary_expression "uVar19 != 0" (identifier "uVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);\n    uVar11 = 0;\n    puVar9 = puVar22;\n    do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);\n    lVar8 = (long)puVar22 - (long)puVar16;\n  }" ({ "{") (expression_statement "lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);" (assignment_expression "lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(*(long *)(param_1 + 0x108) + 0x10)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x108) + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x108) + 0x10)" (( "(") (binary_expression "*(long *)(param_1 + 0x108) + 0x10" (pointer_expression "*(long *)(param_1 + 0x108)" (* "*") (cast_expression "(long *)(param_1 + 0x108)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" (identifier "puVar9") (= "=") (identifier "puVar22")) (; ";")) (do_statement "do {\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    } while (uVar11 < uVar19);" (do "do") (compound_statement "{\n      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);\n      if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }\n      *puVar9 = uVar7;\n      uVar11 = (ulong)((int)uVar11 + 1);\n      puVar22 = puVar9 + 2;\n      puVar9[1] = uVar18;\n      puVar9 = puVar22;\n    }" ({ "{") (expression_statement "puVar6 = *(ulong **)(lVar13 + uVar11 * 8);" (assignment_expression "puVar6 = *(ulong **)(lVar13 + uVar11 * 8)" (identifier "puVar6") (= "=") (pointer_expression "*(ulong **)(lVar13 + uVar11 * 8)" (* "*") (cast_expression "(ulong **)(lVar13 + uVar11 * 8)" (( "(") (type_descriptor "ulong **" (type_identifier "ulong") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar13 + uVar11 * 8)" (( "(") (binary_expression "lVar13 + uVar11 * 8" (identifier "lVar13") (+ "+") (binary_expression "uVar11 * 8" (identifier "uVar11") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (puVar6 == (ulong *)0x0) {\n        uVar7 = 0;\n        uVar18 = 0;\n      }\n      else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }" (if "if") (parenthesized_expression "(puVar6 == (ulong *)0x0)" (( "(") (binary_expression "puVar6 == (ulong *)0x0" (identifier "puVar6") (== "==") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        uVar7 = 0;\n        uVar18 = 0;\n      }" ({ "{") (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }" (else "else") (compound_statement "{\n        if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }\n        uVar21 = *puVar6 - 1;\n        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);\n        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);\n      }" ({ "{") (if_statement "if (*(ulong *)(param_1 + 0x180) < *puVar6) {\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }" (if "if") (parenthesized_expression "(*(ulong *)(param_1 + 0x180) < *puVar6)" (( "(") (binary_expression "*(ulong *)(param_1 + 0x180) < *puVar6" (pointer_expression "*(ulong *)(param_1 + 0x180)" (* "*") (cast_expression "(ulong *)(param_1 + 0x180)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x180)" (( "(") (binary_expression "param_1 + 0x180" (identifier "param_1") (+ "+") (number_literal "0x180")) () ")")))) (< "<") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) () ")")) (compound_statement "{\n                    \n          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");\n        }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");" (call_expression "FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/stringpool.h",0x108,"get_offset_from_key")" (( "(") (string_literal ""../../gold/stringpool.h"" (" """) (string_content "../../gold/stringpool.h") (" """)) (, ",") (number_literal "0x108") (, ",") (string_literal ""get_offset_from_key"" (" """) (string_content "get_offset_from_key") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar21 = *puVar6 - 1;" (assignment_expression "uVar21 = *puVar6 - 1" (identifier "uVar21") (= "=") (binary_expression "*puVar6 - 1" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);" (assignment_expression "uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8)" (identifier "uVar18") (= "=") (pointer_expression "*(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8)" (* "*") (cast_expression "(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8" (pointer_expression "*(long *)(param_1 + 0x128)" (* "*") (cast_expression "(long *)(param_1 + 0x128)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (+ "+") (binary_expression "(ulong)*(uint *)((long)puVar6 + 0xc) * 8" (binary_expression "(ulong)*(uint *)((long)puVar6 + 0xc)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)((long)puVar6 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar6 + 0xc)" (( "(") (binary_expression "(long)puVar6 + 0xc" (cast_expression "(long)puVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar6")) (+ "+") (number_literal "0xc")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);" (assignment_expression "uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8)" (identifier "uVar7") (= "=") (binary_expression "((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8)" (parenthesized_expression "((int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8))" (( "(") (binary_expression "(int)*(undefined8 *)(param_1 + 0x1e0) +\n                (int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" (cast_expression "(int)*(undefined8 *)(param_1 + 0x1e0)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(undefined8 *)(param_1 + 0x1e0)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x1e0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1e0)" (( "(") (binary_expression "param_1 + 0x1e0" (identifier "param_1") (+ "+") (number_literal "0x1e0")) () ")"))))) (+ "+") (cast_expression "(int)*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" (* "*") (cast_expression "(undefined8 *)\n                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8)" (( "(") (binary_expression "*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +\n                      (ulong)((uint)uVar21 & 0x1fff) * 8" (pointer_expression "*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18)" (( "(") (binary_expression "*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18" (pointer_expression "*(long *)(param_1 + 0x168)" (* "*") (cast_expression "(long *)(param_1 + 0x168)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x168)" (( "(") (binary_expression "param_1 + 0x168" (identifier "param_1") (+ "+") (number_literal "0x168")) () ")")))) (+ "+") (binary_expression "(uVar21 >> 0xd) * 0x18" (parenthesized_expression "(uVar21 >> 0xd)" (( "(") (binary_expression "uVar21 >> 0xd" (identifier "uVar21") (>> ">>") (number_literal "0xd")) () ")")) (* "*") (number_literal "0x18"))) () ")")))) (+ "+") (binary_expression "(ulong)((uint)uVar21 & 0x1fff) * 8" (call_expression "(ulong)((uint)uVar21 & 0x1fff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((uint)uVar21 & 0x1fff)" (( "(") (binary_expression "(uint)uVar21 & 0x1fff" (cast_expression "(uint)uVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar21")) (& "&") (number_literal "0x1fff")) () ")"))) (* "*") (number_literal "8"))) () ")")))))) () ")")) (- "-") (pointer_expression "*(int *)(param_1 + 0x1d8)" (* "*") (cast_expression "(int *)(param_1 + 0x1d8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d8)" (( "(") (binary_expression "param_1 + 0x1d8" (identifier "param_1") (+ "+") (number_literal "0x1d8")) () ")")))))) (; ";")) (} "}")))) (expression_statement "*puVar9 = uVar7;" (assignment_expression "*puVar9 = uVar7" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar11 = (ulong)((int)uVar11 + 1);" (assignment_expression "uVar11 = (ulong)((int)uVar11 + 1)" (identifier "uVar11") (= "=") (call_expression "(ulong)((int)uVar11 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)uVar11 + 1)" (( "(") (binary_expression "(int)uVar11 + 1" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar22 = puVar9 + 2;" (assignment_expression "puVar22 = puVar9 + 2" (identifier "puVar22") (= "=") (binary_expression "puVar9 + 2" (identifier "puVar9") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar9[1] = uVar18;" (assignment_expression "puVar9[1] = uVar18" (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" (identifier "puVar9") (= "=") (identifier "puVar22")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 < uVar19)" (( "(") (binary_expression "uVar11 < uVar19" (identifier "uVar11") (< "<") (identifier "uVar19")) () ")")) (; ";")) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" (identifier "lVar8") (= "=") (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar22")) (- "-") (cast_expression "(long)puVar16" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar16")))) (; ";")) (} "}"))) (if_statement "if (*(long *)(param_1 + 0x1d8) == lVar8) {\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x1d8) == lVar8)" (( "(") (binary_expression "*(long *)(param_1 + 0x1d8) == lVar8" (pointer_expression "*(long *)(param_1 + 0x1d8)" (* "*") (cast_expression "(long *)(param_1 + 0x1d8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d8)" (( "(") (binary_expression "param_1 + 0x1d8" (identifier "param_1") (+ "+") (number_literal "0x1d8")) () ")")))) (== "==") (identifier "lVar8")) () ")")) (compound_statement "{\n    lVar13 = *(long *)(param_1 + 0x110);\n    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;\n    if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }\n    if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");\n  }" ({ "{") (expression_statement "lVar13 = *(long *)(param_1 + 0x110);" (assignment_expression "lVar13 = *(long *)(param_1 + 0x110)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_1 + 0x110)" (* "*") (cast_expression "(long *)(param_1 + 0x110)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")"))))) (; ";")) (expression_statement "uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;" (assignment_expression "uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3" (identifier "uVar19") (= "=") (binary_expression "*(long *)(param_1 + 0x118) - lVar13 >> 3" (binary_expression "*(long *)(param_1 + 0x118) - lVar13" (pointer_expression "*(long *)(param_1 + 0x118)" (* "*") (cast_expression "(long *)(param_1 + 0x118)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x118)" (( "(") (binary_expression "param_1 + 0x118" (identifier "param_1") (+ "+") (number_literal "0x118")) () ")")))) (- "-") (identifier "lVar13")) (>> ">>") (number_literal "3"))) (; ";")) (if_statement "if (uVar19 != 0) {\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }" (if "if") (parenthesized_expression "(uVar19 != 0)" (( "(") (binary_expression "uVar19 != 0" (identifier "uVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar11 = 0;\n      puVar9 = puVar22;\n      do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);\n      lVar8 = (long)puVar22 - (long)puVar16;\n    }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" (identifier "puVar9") (= "=") (identifier "puVar22")) (; ";")) (do_statement "do {\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      } while (uVar11 < uVar19);" (do "do") (compound_statement "{\n        plVar1 = *(long **)(lVar13 + uVar11 * 8);\n        puVar22 = puVar9 + 1;\n        lVar20 = *plVar1;\n        uVar21 = plVar1[1] - lVar20 >> 3;\n        *puVar9 = (uint)uVar21;\n        if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }\n        uVar11 = (ulong)((int)uVar11 + 1);\n        puVar9 = puVar22;\n      }" ({ "{") (expression_statement "plVar1 = *(long **)(lVar13 + uVar11 * 8);" (assignment_expression "plVar1 = *(long **)(lVar13 + uVar11 * 8)" (identifier "plVar1") (= "=") (pointer_expression "*(long **)(lVar13 + uVar11 * 8)" (* "*") (cast_expression "(long **)(lVar13 + uVar11 * 8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar13 + uVar11 * 8)" (( "(") (binary_expression "lVar13 + uVar11 * 8" (identifier "lVar13") (+ "+") (binary_expression "uVar11 * 8" (identifier "uVar11") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "puVar22 = puVar9 + 1;" (assignment_expression "puVar22 = puVar9 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar20 = *plVar1;" (assignment_expression "lVar20 = *plVar1" (identifier "lVar20") (= "=") (pointer_expression "*plVar1" (* "*") (identifier "plVar1"))) (; ";")) (expression_statement "uVar21 = plVar1[1] - lVar20 >> 3;" (assignment_expression "uVar21 = plVar1[1] - lVar20 >> 3" (identifier "uVar21") (= "=") (binary_expression "plVar1[1] - lVar20 >> 3" (binary_expression "plVar1[1] - lVar20" (subscript_expression "plVar1[1]" (identifier "plVar1") ([ "[") (number_literal "1") (] "]")) (- "-") (identifier "lVar20")) (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "*puVar9 = (uint)uVar21;" (assignment_expression "*puVar9 = (uint)uVar21" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (cast_expression "(uint)uVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar21"))) (; ";")) (if_statement "if (uVar21 != 0) {\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }" (if "if") (parenthesized_expression "(uVar21 != 0)" (( "(") (binary_expression "uVar21 != 0" (identifier "uVar21") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar14 = 0;\n          puVar9 = puVar22;\n          do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);\n        }" ({ "{") (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" (identifier "puVar9") (= "=") (identifier "puVar22")) (; ";")) (do_statement "do {\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          } while (uVar14 < uVar21);" (do "do") (compound_statement "{\n            puVar10 = (uint *)(lVar20 + uVar14 * 8);\n            uVar18 = *puVar10;\n            if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }\n            puVar22 = puVar9 + 1;\n            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;\n            uVar14 = (ulong)((int)uVar14 + 1);\n            puVar9 = puVar22;\n          }" ({ "{") (expression_statement "puVar10 = (uint *)(lVar20 + uVar14 * 8);" (assignment_expression "puVar10 = (uint *)(lVar20 + uVar14 * 8)" (identifier "puVar10") (= "=") (cast_expression "(uint *)(lVar20 + uVar14 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + uVar14 * 8)" (( "(") (binary_expression "lVar20 + uVar14 * 8" (identifier "lVar20") (+ "+") (binary_expression "uVar14 * 8" (identifier "uVar14") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "uVar18 = *puVar10;" (assignment_expression "uVar18 = *puVar10" (identifier "uVar18") (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (if_statement "if ((int)uVar18 < 0) {\n              uVar18 = (iVar17 + -1) - uVar18;\n            }" (if "if") (parenthesized_expression "((int)uVar18 < 0)" (( "(") (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              uVar18 = (iVar17 + -1) - uVar18;\n            }" ({ "{") (expression_statement "uVar18 = (iVar17 + -1) - uVar18;" (assignment_expression "uVar18 = (iVar17 + -1) - uVar18" (identifier "uVar18") (= "=") (binary_expression "(iVar17 + -1) - uVar18" (parenthesized_expression "(iVar17 + -1)" (( "(") (binary_expression "iVar17 + -1" (identifier "iVar17") (+ "+") (number_literal "-1")) () ")")) (- "-") (identifier "uVar18"))) (; ";")) (} "}"))) (expression_statement "puVar22 = puVar9 + 1;" (assignment_expression "puVar22 = puVar9 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;" (assignment_expression "*puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (binary_expression "uVar18 | (uint)(byte)puVar10[1] << 0x18" (identifier "uVar18") (| "|") (binary_expression "(uint)(byte)puVar10[1] << 0x18" (cast_expression "(uint)(byte)puVar10[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar10[1]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar10[1]" (identifier "puVar10") ([ "[") (number_literal "1") (] "]")))) (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar14 = (ulong)((int)uVar14 + 1);" (assignment_expression "uVar14 = (ulong)((int)uVar14 + 1)" (identifier "uVar14") (= "=") (call_expression "(ulong)((int)uVar14 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)uVar14 + 1)" (( "(") (binary_expression "(int)uVar14 + 1" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" (identifier "puVar9") (= "=") (identifier "puVar22")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar14 < uVar21)" (( "(") (binary_expression "uVar14 < uVar21" (identifier "uVar14") (< "<") (identifier "uVar21")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar11 = (ulong)((int)uVar11 + 1);" (assignment_expression "uVar11 = (ulong)((int)uVar11 + 1)" (identifier "uVar11") (= "=") (call_expression "(ulong)((int)uVar11 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)uVar11 + 1)" (( "(") (binary_expression "(int)uVar11 + 1" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar9 = puVar22;" (assignment_expression "puVar9 = puVar22" (identifier "puVar9") (= "=") (identifier "puVar22")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 < uVar19)" (( "(") (binary_expression "uVar11 < uVar19" (identifier "uVar11") (< "<") (identifier "uVar19")) () ")")) (; ";")) (expression_statement "lVar8 = (long)puVar22 - (long)puVar16;" (assignment_expression "lVar8 = (long)puVar22 - (long)puVar16" (identifier "lVar8") (= "=") (binary_expression "(long)puVar22 - (long)puVar16" (cast_expression "(long)puVar22" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar22")) (- "-") (cast_expression "(long)puVar16" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar16")))) (; ";")) (} "}"))) (if_statement "if (*(long *)(param_1 + 0x1e0) == lVar8) {\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x1e0) == lVar8)" (( "(") (binary_expression "*(long *)(param_1 + 0x1e0) == lVar8" (pointer_expression "*(long *)(param_1 + 0x1e0)" (* "*") (cast_expression "(long *)(param_1 + 0x1e0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1e0)" (( "(") (binary_expression "param_1 + 0x1e0" (identifier "param_1") (+ "+") (number_literal "0x1e0")) () ")")))) (== "==") (identifier "lVar8")) () ")")) (compound_statement "{\n      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);\n      return;\n    }" ({ "{") (expression_statement "FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);" (call_expression "FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8)" (identifier "FUN_00218cf0") (argument_list "(param_1 + 0x130,puVar22,lVar2 - lVar8)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) (, ",") (identifier "puVar22") (, ",") (binary_expression "lVar2 - lVar8" (identifier "lVar2") (- "-") (identifier "lVar8")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/gdb-index.cc",0x53f,"do_write")" (( "(") (string_literal ""../../gold/gdb-index.cc"" (" """) (string_content "../../gold/gdb-index.cc") (" """)) (, ",") (number_literal "0x53f") (, ",") (string_literal ""do_write"" (" """) (string_content "do_write") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");" (call_expression "FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/gdb-index.cc",0x52b,"do_write")" (( "(") (string_literal ""../../gold/gdb-index.cc"" (" """) (string_content "../../gold/gdb-index.cc") (" """)) (, ",") (number_literal "0x52b") (, ",") (string_literal ""do_write"" (" """) (string_content "do_write") (" """)) () ")"))) (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void do_write(Gdb_index * this, Output_file * of) */

void __thiscall var_28::type_1::function_1(type_1 *this,type_2 *of)

{
  type_3 pTVar1;
  type_3 pPVar2;
  type_3 ppVar3;
  type_4 var_5;
  long var_8;
  type_3 pCVar6;
  type_3 pCVar7;
  type_5 oVar8;
  type_3 var_19;
  type_6 *pDVar10;
  type_7 *pRVar11;
  type_8 *var_27;
  type_3 ppOVar13;
  uint64_t var_31;
  type_3 pRVar15;
  type_9 **ppGVar16;
  type_9 *var_33;
  type_3 ppvVar18;
  vector<std::var_1<var_2,var_3>,var_29::var_34<std::var_1<var_2,var_3>var_4>var_4> *pvVar19;
  type_3 var_37;
  int iVar21;
  type_10 var_26;
  long var_7;
  uint64_t *var_12;
  uint64_t *var_14;
  type_11 var_20;
  type_12 extraout_var;
  type_13 *pOVar27;
  type_11 var_38;
  long lVar29;
  uint64_t *var_13;
  type_3 var_22;
  type_14 *var_10;
  int var_11;
  type_10 var_24;
  type_5 var_16;
  type_11 var_18;
  type_3 var_25;
  type_11 var_36;
  uint64_t *var_15;
  type_10 var_32;
  type_12 extraout_var_00;
  
  var_5 = (this->super_Output_section_data).super_Output_data.field_0x20;
  if ((var_5 & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/output.h",0xe3,"offset");
  }
  var_7 = (this->super_Output_section_data).super_Output_data.offset_;
  if ((var_5 & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/output.h",0xcf,"data_size");
  }
  var_8 = (this->super_Output_section_data).super_Output_data.data_size_;
  if ((var_7 < 0) || (of->file_size_ < var_7 + var_8)) {
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/output.h",0x6f,"get_output_view");
  }
  var_10 = of->base_ + var_7;
  var_16 = this->tu_offset_;
  pCVar6 = (this->comp_units_).
           super__Vector_base<var_28::Gdb_index::var_9,var_29::var_34<var_28::Gdb_index::var_9>var_4>
           ._M_impl._M_finish;
  var_10[0] = '\a';
  var_10[1] = '\0';
  var_10[2] = '\0';
  var_10[3] = '\0';
  var_10[4] = '\x18';
  var_10[5] = '\0';
  var_10[6] = '\0';
  var_10[7] = '\0';
  var_15 = (uint64_t *)(var_10 + 0x18);
  pCVar7 = (this->comp_units_).
           super__Vector_base<var_28::Gdb_index::var_9,var_29::var_34<var_28::Gdb_index::var_9>var_4>
           ._M_impl._M_start;
  *(int *)(var_10 + 0xc) = (int)this->addr_offset_;
  *(int *)(var_10 + 0x10) = (int)this->symtab_offset_;
  oVar8 = this->cu_pool_offset_;
  *(int *)(var_10 + 8) = (int)var_16;
  *(int *)(var_10 + 0x14) = (int)oVar8;
  var_7 = 0x18;
  var_11 = (int)((long)pCVar6 - (long)pCVar7 >> 4);
  if (var_11 != 0) {
    var_12 = var_15;
    var_13 = &pCVar7->cu_length;
    do {
      var_14 = var_12 + 2;
      *var_12 = ((var_9 *)(var_13 + -1))->cu_offset;
      var_12[1] = *var_13;
      var_12 = var_14;
      var_13 = var_13 + 2;
    } while (var_14 != (uint64_t *)(var_10 + (type_11)(var_11 - 1) * 0x10 + 0x28));
    var_15 = var_15 + ((type_11)(var_11 - 1) + 1) * 2;
    var_16 = this->tu_offset_;
    var_7 = (long)var_15 - (long)var_10;
  }
  if (var_7 != var_16) {
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/gdb-index.cc",0x4ee,"do_write");
  }
  var_19 = (this->type_units_).
           super__Vector_base<var_28::Gdb_index::var_17,var_29::var_34<var_28::Gdb_index::var_17>var_4>
           ._M_impl._M_start;
  var_18 = ((long)(this->type_units_).
                  super__Vector_base<var_28::type_1::var_17,var_29::var_34<var_28::type_1::var_17>var_4>
                  ._M_impl._M_finish - (long)var_19 >> 3) * -0x5555555555555555;
  if (var_18 != 0) {
    var_20 = 0;
    var_12 = var_15;
    do {
      var_15 = var_12 + 3;
      pTVar1 = var_19 + var_20;
      *var_12 = pTVar1->tu_offset;
      var_12[1] = pTVar1->type_offset;
      var_12[2] = pTVar1->type_signature;
      var_20 = (type_11)((int)var_20 + 1);
      var_12 = var_15;
    } while (var_20 < var_18);
    var_7 = (long)var_15 - (long)var_10;
  }
  if (this->addr_offset_ != var_7) {
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/gdb-index.cc",0x4fa,"do_write");
  }
  var_22 = (this->ranges_).
            super__Vector_base<var_28::Gdb_index::var_21,var_29::var_34<var_28::Gdb_index::var_21>var_4>
            ._M_impl._M_start;
  if (var_22 !=
      (this->ranges_).
      super__Vector_base<var_28::type_1::var_21,var_29::var_34<var_28::type_1::var_21>var_4>
      ._M_impl._M_finish) {
    var_32 = 0;
    var_18 = 0;
    do {
      pPVar2 = var_22 + var_18;
      var_24 = pPVar2->cu_index;
      pDVar10 = pPVar2->ranges;
      pRVar11 = pPVar2->object;
      var_25 = (pDVar10->range_list_).
                super__Vector_base<var_28::Dwarf_range_list::var_23,var_29::var_34<var_28::Dwarf_range_list::var_23>var_4>
                ._M_impl._M_start;
      if ((int)var_24 < 0) {
        var_24 = (var_11 + -1) - var_24;
      }
      if ((pDVar10->range_list_).
          super__Vector_base<var_28::type_6::var_23,var_29::var_34<var_28::type_6::var_23>var_4>
          ._M_impl._M_finish != var_25) {
        var_18 = 0;
        var_12 = var_15;
        do {
          pRVar15 = var_25 + var_18;
          var_26 = pRVar15->shndx;
          if (var_26 == 0) {
            var_7 = 0;
          }
          else {
            var_27 = (pRVar11->super_Object)._vptr_Object[0x18];
            if (var_27 == type_7::do_output_section) {
              ppOVar13 = (pRVar11->output_sections_).
                         super__Vector_base<var_28::type_13*,var_29::var_34<var_28::type_13*>var_4>
                         ._M_impl._M_start;
              if ((type_11)((long)(pRVar11->output_sections_).
                                super__Vector_base<var_28::type_13*,var_29::var_34<var_28::type_13*>var_4>
                                ._M_impl._M_finish - (long)ppOVar13 >> 3) <= (type_11)var_26) {
                    /* WARNING: Subroutine does not return */
                var_6("../../gold/object.h",0x5c8,"do_output_section");
              }
              pOVar27 = ppOVar13[var_26];
            }
            else {
              iVar21 = (*var_27)(pRVar11);
              pOVar27 = (type_13 *)var_30(extraout_var_00,iVar21);
            }
            if (((pOVar27->super_Output_data).field_0x20 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
              var_6("../../gold/output.h",0xc5,"address");
            }
            var_31 = (pOVar27->super_Output_data).address_;
            iVar21 = (*(pRVar11->super_Object)._vptr_Object[0x1a])(pRVar11,(type_11)pRVar15->shndx);
            var_25 = (pDVar10->range_list_).
                      super__Vector_base<var_28::Dwarf_range_list::var_23,var_29::var_34<var_28::Dwarf_range_list::var_23>var_4>
                      ._M_impl._M_start;
            var_7 = var_30(extraout_var,iVar21) + var_31;
          }
          var_15 = (uint64_t *)((long)var_12 + 0x14);
          lVar29 = pRVar15->start + var_7;
          var_7 = var_7 + pRVar15->end;
          *(type_10 *)(var_12 + 2) = var_24;
          *(type_10 *)(var_12 + 1) = (type_10)var_7;
          pRVar15 = (pDVar10->range_list_).
                    super__Vector_base<var_28::Dwarf_range_list::var_23,var_29::var_34<var_28::Dwarf_range_list::var_23>var_4>
                    ._M_impl._M_finish;
          *(type_10 *)var_12 = (type_10)lVar29;
          *(type_10 *)((long)var_12 + 0xc) = (type_10)((type_11)var_7 >> 0x20);
          var_18 = (type_11)((int)var_18 + 1);
          *(type_10 *)((long)var_12 + 4) = (type_10)((type_11)lVar29 >> 0x20);
          var_12 = var_15;
        } while (var_18 < (type_11)(((long)pRVar15 - (long)var_25 >> 3) * -0x5555555555555555));
        var_22 = (this->ranges_).
                  super__Vector_base<var_28::Gdb_index::var_21,var_29::var_34<var_28::Gdb_index::var_21>var_4>
                  ._M_impl._M_start;
      }
      var_32 = var_32 + 1;
      var_18 = (type_11)var_32;
    } while (var_18 < (type_11)(((long)(this->ranges_).
                                     super__Vector_base<var_28::type_1::var_21,var_29::var_34<var_28::type_1::var_21>var_4>
                                     ._M_impl._M_finish - (long)var_22 >> 3) * -0x5555555555555555)
            );
    var_7 = (long)var_15 - (long)var_10;
  }
  if (this->symtab_offset_ != var_7) {
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/gdb-index.cc",0x518,"do_write");
  }
  var_18 = this->gdb_symtab_->capacity_;
  if (var_18 != 0) {
    ppGVar16 = this->gdb_symtab_->hashtab_;
    var_20 = 0;
    var_12 = var_15;
    do {
      var_33 = ppGVar16[var_20];
      if (var_33 == (type_9 *)0x0) {
        var_26 = 0;
        var_24 = 0;
      }
      else {
        if ((this->stringpool_).key_to_offset_.size_ < var_33->name_key) {
                    /* WARNING: Subroutine does not return */
          var_6("../../gold/stringpool.h",0x108,"get_offset_from_key");
        }
        var_36 = var_33->name_key - 1;
        var_24 = *(type_10 *)(this->cu_vector_offsets_ + var_33->cu_vector_index);
        var_26 = ((int)this->stringpool_offset_ +
                 (int)*(type_15 *)
                       ((long)(this->stringpool_).key_to_offset_.chunks_.
                              super__Vector_base<std::vector<var_35,var_29::var_34<var_35>var_4>,var_29::var_34<std::vector<var_35,var_29::var_34<var_35>var_4>var_4>var_4>
                              ._M_impl._M_start[var_36 >> 0xd].
                              super__Vector_base<var_35,var_29::var_34<var_35>var_4>._M_impl.
                              _M_start + (type_11)((type_10)var_36 & 0x1fff) * 8)) -
                 (int)this->cu_pool_offset_;
      }
      *(type_10 *)var_12 = var_26;
      var_20 = (type_11)((int)var_20 + 1);
      var_15 = var_12 + 1;
      *(type_10 *)((long)var_12 + 4) = var_24;
      var_12 = var_15;
    } while (var_20 < var_18);
    var_7 = (long)var_15 - (long)var_10;
  }
  if (this->cu_pool_offset_ == var_7) {
    ppvVar18 = (this->cu_vector_list_).
               super__Vector_base<std::vector<std::var_1<var_2,var_3>,var_29::var_34<std::var_1<var_2,var_3>var_4>var_4>*,var_29::var_34<std::vector<std::var_1<var_2,var_3>,var_29::var_34<std::var_1<var_2,var_3>var_4>var_4>*>var_4>
               ._M_impl._M_start;
    var_18 = (long)(this->cu_vector_list_).
                   super__Vector_base<std::vector<std::var_1<var_2,var_3>,var_29::var_34<std::var_1<var_2,var_3>var_4>var_4>*,var_29::var_34<std::vector<std::var_1<var_2,var_3>,var_29::var_34<std::var_1<var_2,var_3>var_4>var_4>*>var_4>
                   ._M_impl._M_finish - (long)ppvVar18 >> 3;
    if (var_18 != 0) {
      var_20 = 0;
      var_12 = var_15;
      do {
        pvVar19 = ppvVar18[var_20];
        var_15 = (uint64_t *)((long)var_12 + 4);
        var_37 = (pvVar19->
                  super__Vector_base<std::var_1<var_2,var_3>,var_29::var_34<std::var_1<var_2,var_3>var_4>var_4>
                  )._M_impl._M_start;
        var_36 = (long)(pvVar19->
                       super__Vector_base<std::var_1<var_2,var_3>,var_29::var_34<std::var_1<var_2,var_3>var_4>var_4>
                       )._M_impl._M_finish - (long)var_37 >> 3;
        *(type_10 *)var_12 = (type_10)var_36;
        if (var_36 != 0) {
          var_38 = 0;
          var_12 = var_15;
          do {
            ppVar3 = var_37 + var_38;
            var_24 = ppVar3->first;
            if ((int)var_24 < 0) {
              var_24 = (var_11 + -1) - var_24;
            }
            var_15 = (uint64_t *)((long)var_12 + 4);
            *(type_10 *)var_12 = var_24 | (type_10)ppVar3->second << 0x18;
            var_38 = (type_11)((int)var_38 + 1);
            var_12 = var_15;
          } while (var_38 < var_36);
        }
        var_20 = (type_11)((int)var_20 + 1);
        var_12 = var_15;
      } while (var_20 < var_18);
      var_7 = (long)var_15 - (long)var_10;
    }
    if (this->stringpool_offset_ == var_7) {
      var_39<var_40>::var_41(&this->stringpool_,(type_14 *)var_15,var_8 - var_7);
      return;
    }
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/gdb-index.cc",0x53f,"do_write");
  }
                    /* WARNING: Subroutine does not return */
  var_6("../../gold/gdb-index.cc",0x52b,"do_write");
}


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

void MASKED(long param_1,long param_2)

{
  long *plVar1;
  long lVar2;
  undefined8 uVar3;
  long *plVar4;
  long lVar5;
  ulong *puVar6;
  uint uVar7;
  long lVar8;
  uint *puVar9;
  uint *puVar10;
  ulong uVar11;
  long lVar12;
  long lVar13;
  ulong uVar14;
  undefined8 *puVar15;
  undefined8 *puVar16;
  int iVar17;
  uint uVar18;
  ulong uVar19;
  long lVar20;
  ulong uVar21;
  uint *puVar22;
  uint local_5c;
  
  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");
  }
  lVar13 = *(long *)(param_1 + 0x18);
  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");
  }
  lVar2 = *(long *)(param_1 + 0x10);
  if ((lVar13 < 0) || (*(long *)(param_2 + 0x10) < lVar13 + lVar2)) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.h",0x6f,"get_output_view");
  }
  puVar16 = (undefined8 *)(*(long *)(param_2 + 0x18) + lVar13);
  lVar13 = *(long *)(param_1 + 0x1c0);
  lVar20 = *(long *)(param_1 + 200);
  *puVar16 = 0x1800000007;
  puVar22 = (uint *)(puVar16 + 3);
  lVar12 = *(long *)(param_1 + 0xc0);
  *(int *)((long)puVar16 + 0xc) = (int)*(undefined8 *)(param_1 + 0x1c8);
  *(int *)(puVar16 + 2) = (int)*(undefined8 *)(param_1 + 0x1d0);
  uVar3 = *(undefined8 *)(param_1 + 0x1d8);
  *(int *)(puVar16 + 1) = (int)lVar13;
  *(int *)((long)puVar16 + 0x14) = (int)uVar3;
  lVar8 = 0x18;
  iVar17 = (int)(lVar20 - lVar12 >> 4);
  if (iVar17 != 0) {
    puVar9 = puVar22;
    puVar15 = (undefined8 *)(lVar12 + 8);
    do {
      puVar10 = puVar9 + 4;
      *(undefined8 *)puVar9 = puVar15[-1];
      *(undefined8 *)(puVar9 + 2) = *puVar15;
      puVar9 = puVar10;
      puVar15 = puVar15 + 2;
    } while (puVar10 != (uint *)(puVar16 + (ulong)(iVar17 - 1) * 2 + 5));
    puVar22 = puVar22 + ((ulong)(iVar17 - 1) + 1) * 4;
    lVar13 = *(long *)(param_1 + 0x1c0);
    lVar8 = (long)puVar22 - (long)puVar16;
  }
  if (lVar8 != lVar13) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/gdb-index.cc",0x4ee,"do_write");
  }
  lVar13 = *(long *)(param_1 + 0xd8);
  uVar19 = (*(long *)(param_1 + 0xe0) - lVar13 >> 3) * -0x5555555555555555;
  if (uVar19 != 0) {
    uVar11 = 0;
    puVar9 = puVar22;
    do {
      puVar22 = puVar9 + 6;
      puVar15 = (undefined8 *)(lVar13 + uVar11 * 0x18);
      *(undefined8 *)puVar9 = *puVar15;
      *(undefined8 *)(puVar9 + 2) = puVar15[1];
      *(undefined8 *)(puVar9 + 4) = puVar15[2];
      uVar11 = (ulong)((int)uVar11 + 1);
      puVar9 = puVar22;
    } while (uVar11 < uVar19);
    lVar8 = (long)puVar22 - (long)puVar16;
  }
  if (*(long *)(param_1 + 0x1c8) != lVar8) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/gdb-index.cc",0x4fa,"do_write");
  }
  lVar13 = *(long *)(param_1 + 0xf0);
  if (lVar13 != *(long *)(param_1 + 0xf8)) {
    local_5c = 0;
    uVar19 = 0;
    do {
      plVar1 = (long *)(lVar13 + uVar19 * 0x18);
      uVar18 = *(uint *)(plVar1 + 1);
      plVar4 = (long *)plVar1[2];
      plVar1 = (long *)*plVar1;
      lVar20 = *plVar4;
      if ((int)uVar18 < 0) {
        uVar18 = (iVar17 + -1) - uVar18;
      }
      if (plVar4[1] != lVar20) {
        uVar19 = 0;
        puVar9 = puVar22;
        do {
          puVar10 = (uint *)(lVar20 + uVar19 * 0x18);
          uVar7 = *puVar10;
          if (uVar7 == 0) {
            lVar12 = 0;
          }
          else {
            if (*(code **)(*plVar1 + 0xc0) == FUN_0014c900) {
              if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)uVar7) {
                    /* WARNING: Subroutine does not return */
                FUN_0016cdf0("../../gold/object.h",0x5c8,"do_output_section");
              }
              lVar13 = *(long *)(plVar1[10] + (ulong)uVar7 * 8);
            }
            else {
              lVar13 = (**(code **)(*plVar1 + 0xc0))(plVar1);
            }
            if ((*(byte *)(lVar13 + 0x20) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
              FUN_0016cdf0("../../gold/output.h",0xc5,"address");
            }
            lVar13 = *(long *)(lVar13 + 8);
            lVar12 = (**(code **)(*plVar1 + 0xd0))(plVar1,*puVar10);
            lVar20 = *plVar4;
            lVar12 = lVar12 + lVar13;
          }
          lVar13 = *(long *)(puVar10 + 2);
          puVar22 = puVar9 + 5;
          lVar8 = *(long *)(puVar10 + 4);
          puVar9[4] = uVar18;
          puVar9[2] = (uint)(lVar12 + lVar8);
          lVar5 = plVar4[1];
          *puVar9 = (uint)(lVar13 + lVar12);
          puVar9[3] = (uint)((ulong)(lVar12 + lVar8) >> 0x20);
          uVar19 = (ulong)((int)uVar19 + 1);
          puVar9[1] = (uint)((ulong)(lVar13 + lVar12) >> 0x20);
          puVar9 = puVar22;
        } while (uVar19 < (ulong)((lVar5 - lVar20 >> 3) * -0x5555555555555555));
        lVar13 = *(long *)(param_1 + 0xf0);
      }
      local_5c = local_5c + 1;
      uVar19 = (ulong)local_5c;
    } while (uVar19 < (ulong)((*(long *)(param_1 + 0xf8) - lVar13 >> 3) * -0x5555555555555555));
    lVar8 = (long)puVar22 - (long)puVar16;
  }
  if (*(long *)(param_1 + 0x1d0) != lVar8) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/gdb-index.cc",0x518,"do_write");
  }
  uVar19 = *(ulong *)(*(long *)(param_1 + 0x108) + 8);
  if (uVar19 != 0) {
    lVar13 = *(long *)(*(long *)(param_1 + 0x108) + 0x10);
    uVar11 = 0;
    puVar9 = puVar22;
    do {
      puVar6 = *(ulong **)(lVar13 + uVar11 * 8);
      if (puVar6 == (ulong *)0x0) {
        uVar7 = 0;
        uVar18 = 0;
      }
      else {
        if (*(ulong *)(param_1 + 0x180) < *puVar6) {
                    /* WARNING: Subroutine does not return */
          FUN_0016cdf0("../../gold/stringpool.h",0x108,"get_offset_from_key");
        }
        uVar21 = *puVar6 - 1;
        uVar18 = *(uint *)(*(long *)(param_1 + 0x128) + (ulong)*(uint *)((long)puVar6 + 0xc) * 8);
        uVar7 = ((int)*(undefined8 *)(param_1 + 0x1e0) +
                (int)*(undefined8 *)
                      (*(long *)(*(long *)(param_1 + 0x168) + (uVar21 >> 0xd) * 0x18) +
                      (ulong)((uint)uVar21 & 0x1fff) * 8)) - *(int *)(param_1 + 0x1d8);
      }
      *puVar9 = uVar7;
      uVar11 = (ulong)((int)uVar11 + 1);
      puVar22 = puVar9 + 2;
      puVar9[1] = uVar18;
      puVar9 = puVar22;
    } while (uVar11 < uVar19);
    lVar8 = (long)puVar22 - (long)puVar16;
  }
  if (*(long *)(param_1 + 0x1d8) == lVar8) {
    lVar13 = *(long *)(param_1 + 0x110);
    uVar19 = *(long *)(param_1 + 0x118) - lVar13 >> 3;
    if (uVar19 != 0) {
      uVar11 = 0;
      puVar9 = puVar22;
      do {
        plVar1 = *(long **)(lVar13 + uVar11 * 8);
        puVar22 = puVar9 + 1;
        lVar20 = *plVar1;
        uVar21 = plVar1[1] - lVar20 >> 3;
        *puVar9 = (uint)uVar21;
        if (uVar21 != 0) {
          uVar14 = 0;
          puVar9 = puVar22;
          do {
            puVar10 = (uint *)(lVar20 + uVar14 * 8);
            uVar18 = *puVar10;
            if ((int)uVar18 < 0) {
              uVar18 = (iVar17 + -1) - uVar18;
            }
            puVar22 = puVar9 + 1;
            *puVar9 = uVar18 | (uint)(byte)puVar10[1] << 0x18;
            uVar14 = (ulong)((int)uVar14 + 1);
            puVar9 = puVar22;
          } while (uVar14 < uVar21);
        }
        uVar11 = (ulong)((int)uVar11 + 1);
        puVar9 = puVar22;
      } while (uVar11 < uVar19);
      lVar8 = (long)puVar22 - (long)puVar16;
    }
    if (*(long *)(param_1 + 0x1e0) == lVar8) {
      FUN_00218cf0(param_1 + 0x130,puVar22,lVar2 - lVar8);
      return;
    }
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/gdb-index.cc",0x53f,"do_write");
  }
                    /* WARNING: Subroutine does not return */
  FUN_0016cdf0("../../gold/gdb-index.cc",0x52b,"do_write");
}

