
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: void do_read_symbols(Sized_relobj_file<64,_false> * this,
   Read_symbols_data * sd) */

void __thiscall
gold::Sized_relobj_file<64,_false>::do_read_symbols
          (Sized_relobj_file<64,_false> *this,Read_symbols_data *sd)

{
  Symbol_value<64> *pSVar1;
  uchar *pshdrs;
  Symbol_value<64> *pSVar2;
  pointer pSVar3;
  Input_file *pIVar4;
  section_size_type sVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  File_view *pFVar10;
  File_view *pFVar11;
  char *pcVar12;
  uint uVar13;
  Symbol_value<64> *this_00;
  Symbol_value<64> *pSVar14;
  uint uVar15;
  bool bVar16;
  Read_symbols_data *__in_chrg;
  Object *in_stack_ffffffc4;
  section_size_type sStack_38;
  
  Object::read_section_data<64,_false>((Object *)this,&this->elf_file_,sd);
  pshdrs = sd->section_headers->data_;
  find_symtab(this,pshdrs);
  __in_chrg = sd;
  iVar6 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x3e])
                    (this);
  uVar15 = this->symtab_shndx_;
  sd->symbols = (File_view *)0x0;
  sd->symbols_size = 0;
  sd->external_symbols_offset = 0;
  sd->symbol_names = (File_view *)0x0;
  sd->symbol_names_size = 0;
  if (uVar15 != 0) {
    if (*(int *)(pshdrs + uVar15 * 0x40 + 4) != 2) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/object.cc",0x360,"base_read_symbols");
    }
    pSVar2 = (this->local_values_).
             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.
             _M_impl._M_finish;
    pSVar3 = (this->local_values_).
             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.
             _M_impl._M_start;
    uVar13 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x2c);
    this->local_symbol_count_ = uVar13;
    iVar7 = (int)pSVar2 - (int)pSVar3 >> 2;
    uVar8 = iVar7 * -0x33333333;
    if (uVar8 < uVar13) {
      std::vector<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>::
      _M_default_append(&this->local_values_,uVar13 + iVar7 * 0x33333333);
    }
    else if ((uVar13 < uVar8) && (pSVar1 = pSVar3 + uVar13, this_00 = pSVar1, pSVar2 != pSVar1)) {
      do {
        pSVar14 = this_00 + 1;
        Symbol_value<64>::~Symbol_value(this_00,(int)__in_chrg);
        this_00 = pSVar14;
      } while (pSVar2 != pSVar14);
      (this->local_values_).
      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>._M_impl.
      _M_finish = pSVar1;
    }
    uVar8 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x18);
    iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 0x1c);
    uVar9 = uVar13 * 0x18;
    sStack_38 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);
    if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) {
LAB_000a9278:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");
    }
    if ((char)iVar6 == '\0') {
      bVar16 = CARRY4(uVar8,uVar9);
      uVar8 = uVar8 + uVar9;
      iVar7 = iVar7 + ((int)uVar9 >> 0x1f) + (uint)bVar16;
      sStack_38 = sStack_38 + uVar13 * -0x18;
    }
    if (sStack_38 != 0) {
      pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;
      if (pIVar4 == (Input_file *)0x0) {
LAB_000a9295:
                    /* WARNING: Subroutine does not return */
        Object::input_file(in_stack_ffffffc4);
      }
      pFVar10 = File_read::get_lasting_view
                          (&pIVar4->file_,
                           (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_,
                           CONCAT44(iVar7,uVar8),sStack_38,true,false);
      uVar15 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x28);
      if (0xfeff < uVar15) {
        elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);
        uVar15 = uVar15 + (this->elf_file_).large_shndx_offset_;
      }
      if (uVar15 < (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.shnum_) {
        iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 4);
        if (iVar7 != 3) {
          pcVar12 = (char *)gettext("symbol table name section has wrong type: %u");
          Object::error((Object *)this,pcVar12,iVar7);
          return;
        }
        pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;
        if (pIVar4 == (Input_file *)0x0) goto LAB_000a9295;
        pFVar11 = File_read::get_lasting_view
                            (&pIVar4->file_,
                             (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_
                             ,*(off_t *)(pshdrs + uVar15 * 0x40 + 0x18),
                             *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20),false,true);
        sd->symbol_names = pFVar11;
        sVar5 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);
        sd->symbols = pFVar10;
        uVar13 = 0;
        if ((char)iVar6 != '\0') {
          uVar13 = uVar9;
        }
        sd->symbols_size = sStack_38;
        sd->external_symbols_offset = uVar13;
        if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) goto LAB_000a9278;
        sd->symbol_names_size = sVar5;
      }
      else {
        pcVar12 = (char *)gettext("invalid symbol table name index: %u");
        Object::error((Object *)this,pcVar12,uVar15);
      }
    }
  }
  return;
}



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

void thunk_FUN_000a8fb0(int *param_1,int *param_2)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  bool bVar11;
  int iStack_38;
  
  FUN_000978e0(param_1,param_1 + 0x24,param_2);
  iVar9 = *(int *)(*param_2 + 8);
  FUN_0009c330(param_1,iVar9);
  uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);
  iVar8 = param_1[0x2b];
  param_2[3] = 0;
  param_2[4] = 0;
  param_2[5] = 0;
  param_2[6] = 0;
  param_2[7] = 0;
  if (iVar8 != 0) {
    iVar8 = iVar8 * 0x40 + iVar9;
    if (*(int *)(iVar8 + 4) != 2) {
                    /* WARNING: Subroutine does not return */
      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);
    }
    iVar7 = param_1[0x38];
    uVar10 = *(uint *)(iVar8 + 0x2c);
    param_1[0x2c] = uVar10;
    iVar2 = iVar7 - param_1[0x37] >> 2;
    uVar3 = iVar2 * -0x33333333;
    if (uVar3 < uVar10) {
      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);
    }
    else if ((uVar10 < uVar3) &&
            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {
      do {
        iVar6 = iVar5 + 0x14;
        FUN_000a8b90(iVar5);
        iVar5 = iVar6;
      } while (iVar7 != iVar6);
      param_1[0x38] = iVar2;
    }
    uVar3 = *(uint *)(iVar8 + 0x18);
    iVar7 = *(int *)(iVar8 + 0x1c);
    uVar4 = uVar10 * 0x18;
    iStack_38 = *(int *)(iVar8 + 0x20);
    iVar2 = *(int *)(iVar8 + 0x24);
    if (iVar2 != 0) {
LAB_000a9278:
                    /* WARNING: Subroutine does not return */
      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);
    }
    if ((char)uVar1 == '\0') {
      bVar11 = CARRY4(uVar3,uVar4);
      uVar3 = uVar3 + uVar4;
      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;
      iStack_38 = iStack_38 + uVar10 * -0x18;
    }
    if (iStack_38 != 0) {
      if (param_1[7] == 0) {
LAB_000a9295:
                    /* WARNING: Subroutine does not return */
        FUN_000917c0();
      }
      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);
      uVar10 = *(uint *)(iVar8 + 0x28);
      if (0xfeff < uVar10) {
        FUN_0004dee0(param_1 + 0x24);
        uVar10 = uVar10 + param_1[0x29];
      }
      if (uVar10 < (uint)param_1[10]) {
        iVar9 = uVar10 * 0x40 + iVar9;
        iVar8 = *(int *)(iVar9 + 4);
        if (iVar8 != 3) {
          uVar1 = gettext("symbol table name section has wrong type: %u");
          FUN_00091980(param_1,uVar1,iVar8);
          return;
        }
        if (param_1[7] == 0) goto LAB_000a9295;
        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),
                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);
        param_2[6] = iVar8;
        iVar2 = *(int *)(iVar9 + 0x20);
        param_2[3] = iVar7;
        uVar10 = 0;
        if ((char)uVar1 != '\0') {
          uVar10 = uVar4;
        }
        param_2[4] = iStack_38;
        param_2[5] = uVar10;
        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;
        param_2[7] = iVar2;
      }
      else {
        uVar1 = gettext("invalid symbol table name index: %u");
        FUN_00091980(param_1,uVar1,uVar10);
      }
    }
  }
  return;
}


JMP 0x000a8fb0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid thunk_FUN_000a8fb0(int *param_1,int *param_2)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  bool bVar11;\n  int iStack_38;\n  \n  FUN_000978e0(param_1,param_1 + 0x24,param_2);\n  iVar9 = *(int *)(*param_2 + 8);\n  FUN_0009c330(param_1,iVar9);\n  uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);\n  iVar8 = param_1[0x2b];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  if (iVar8 != 0) {\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void thunk_FUN_000a8fb0(int *param_1,int *param_2)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  bool bVar11;\n  int iStack_38;\n  \n  FUN_000978e0(param_1,param_1 + 0x24,param_2);\n  iVar9 = *(int *)(*param_2 + 8);\n  FUN_0009c330(param_1,iVar9);\n  uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);\n  iVar8 = param_1[0x2b];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  if (iVar8 != 0) {\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "thunk_FUN_000a8fb0(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  bool bVar11;\n  int iStack_38;\n  \n  FUN_000978e0(param_1,param_1 + 0x24,param_2);\n  iVar9 = *(int *)(*param_2 + 8);\n  FUN_0009c330(param_1,iVar9);\n  uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);\n  iVar8 = param_1[0x2b];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  if (iVar8 != 0) {\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "int iStack_38;" primitive_type identifier ;) (expression_statement "FUN_000978e0(param_1,param_1 + 0x24,param_2);" (call_expression "FUN_000978e0(param_1,param_1 + 0x24,param_2)" identifier (argument_list "(param_1,param_1 + 0x24,param_2)" ( identifier , (binary_expression "param_1 + 0x24" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar9 = *(int *)(*param_2 + 8);" (assignment_expression "iVar9 = *(int *)(*param_2 + 8)" identifier = (pointer_expression "*(int *)(*param_2 + 8)" * (cast_expression "(int *)(*param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 8)" ( (binary_expression "*param_2 + 8" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "FUN_0009c330(param_1,iVar9);" (call_expression "FUN_0009c330(param_1,iVar9)" identifier (argument_list "(param_1,iVar9)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2)" identifier = (call_expression "(**(code **)(*param_1 + 0xf8))(param_1,param_2)" (parenthesized_expression "(**(code **)(*param_1 + 0xf8))" ( (pointer_expression "**(code **)(*param_1 + 0xf8)" * (pointer_expression "*(code **)(*param_1 + 0xf8)" * (cast_expression "(code **)(*param_1 + 0xf8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xf8)" ( (binary_expression "*param_1 + 0xf8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (expression_statement "iVar8 = param_1[0x2b];" (assignment_expression "iVar8 = param_1[0x2b]" identifier = (subscript_expression "param_1[0x2b]" identifier [ number_literal ])) ;) (expression_statement "param_2[3] = 0;" (assignment_expression "param_2[3] = 0" (subscript_expression "param_2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[4] = 0;" (assignment_expression "param_2[4] = 0" (subscript_expression "param_2[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[5] = 0;" (assignment_expression "param_2[5] = 0" (subscript_expression "param_2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[7] = 0;" (assignment_expression "param_2[7] = 0" (subscript_expression "param_2[7]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar8 != 0) {\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }" { (expression_statement "iVar8 = iVar8 * 0x40 + iVar9;" (assignment_expression "iVar8 = iVar8 * 0x40 + iVar9" identifier = (binary_expression "iVar8 * 0x40 + iVar9" (binary_expression "iVar8 * 0x40" identifier * number_literal) + identifier)) ;) (if_statement "if (*(int *)(iVar8 + 4) != 2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }" if (parenthesized_expression "(*(int *)(iVar8 + 4) != 2)" ( (binary_expression "*(int *)(iVar8 + 4) != 2" (pointer_expression "*(int *)(iVar8 + 4)" * (cast_expression "(int *)(iVar8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }" { comment (expression_statement "FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);" (call_expression "FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1)" identifier (argument_list "("../../gold/object.cc",0x360,"base_read_symbols",uVar1)" ( (string_literal ""../../gold/object.cc"" " string_content ") , number_literal , (string_literal ""base_read_symbols"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar7 = param_1[0x38];" (assignment_expression "iVar7 = param_1[0x38]" identifier = (subscript_expression "param_1[0x38]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = *(uint *)(iVar8 + 0x2c);" (assignment_expression "uVar10 = *(uint *)(iVar8 + 0x2c)" identifier = (pointer_expression "*(uint *)(iVar8 + 0x2c)" * (cast_expression "(uint *)(iVar8 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "param_1[0x2c] = uVar10;" (assignment_expression "param_1[0x2c] = uVar10" (subscript_expression "param_1[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = iVar7 - param_1[0x37] >> 2;" (assignment_expression "iVar2 = iVar7 - param_1[0x37] >> 2" identifier = (binary_expression "iVar7 - param_1[0x37] >> 2" (binary_expression "iVar7 - param_1[0x37]" identifier - (subscript_expression "param_1[0x37]" identifier [ number_literal ])) >> number_literal)) ;) (expression_statement "uVar3 = iVar2 * -0x33333333;" (assignment_expression "uVar3 = iVar2 * -0x33333333" identifier = (binary_expression "iVar2 * -0x33333333" identifier * number_literal)) ;) (if_statement "if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }" if (parenthesized_expression "(uVar3 < uVar10)" ( (binary_expression "uVar3 < uVar10" identifier < identifier) )) (compound_statement "{\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }" { (expression_statement "FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);" (call_expression "FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333)" identifier (argument_list "(param_1 + 0x37,uVar10 + iVar2 * 0x33333333)" ( (binary_expression "param_1 + 0x37" identifier + number_literal) , (binary_expression "uVar10 + iVar2 * 0x33333333" identifier + (binary_expression "iVar2 * 0x33333333" identifier * number_literal)) ))) ;) }) (else_clause "else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }" else (if_statement "if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }" if (parenthesized_expression "((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2))" ( (binary_expression "(uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)" (parenthesized_expression "(uVar10 < uVar3)" ( (binary_expression "uVar10 < uVar3" identifier < identifier) )) && (parenthesized_expression "(iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)" ( (comma_expression "iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2" (assignment_expression "iVar2 = param_1[0x37] + uVar10 * 0x14" identifier = (binary_expression "param_1[0x37] + uVar10 * 0x14" (subscript_expression "param_1[0x37]" identifier [ number_literal ]) + (binary_expression "uVar10 * 0x14" identifier * number_literal))) , (comma_expression "iVar5 = iVar2, iVar7 != iVar2" (assignment_expression "iVar5 = iVar2" identifier = identifier) , (binary_expression "iVar7 != iVar2" identifier != identifier))) ))) )) (compound_statement "{\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }" { (do_statement "do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);" do (compound_statement "{\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      }" { (expression_statement "iVar6 = iVar5 + 0x14;" (assignment_expression "iVar6 = iVar5 + 0x14" identifier = (binary_expression "iVar5 + 0x14" identifier + number_literal)) ;) (expression_statement "FUN_000a8b90(iVar5);" (call_expression "FUN_000a8b90(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) }) while (parenthesized_expression "(iVar7 != iVar6)" ( (binary_expression "iVar7 != iVar6" identifier != identifier) )) ;) (expression_statement "param_1[0x38] = iVar2;" (assignment_expression "param_1[0x38] = iVar2" (subscript_expression "param_1[0x38]" identifier [ number_literal ]) = identifier) ;) })))) (expression_statement "uVar3 = *(uint *)(iVar8 + 0x18);" (assignment_expression "uVar3 = *(uint *)(iVar8 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar8 + 0x18)" * (cast_expression "(uint *)(iVar8 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar8 + 0x1c);" (assignment_expression "iVar7 = *(int *)(iVar8 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar8 + 0x1c)" * (cast_expression "(int *)(iVar8 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = uVar10 * 0x18;" (assignment_expression "uVar4 = uVar10 * 0x18" identifier = (binary_expression "uVar10 * 0x18" identifier * number_literal)) ;) (expression_statement "iStack_38 = *(int *)(iVar8 + 0x20);" (assignment_expression "iStack_38 = *(int *)(iVar8 + 0x20)" identifier = (pointer_expression "*(int *)(iVar8 + 0x20)" * (cast_expression "(int *)(iVar8 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(iVar8 + 0x24);" (assignment_expression "iVar2 = *(int *)(iVar8 + 0x24)" identifier = (pointer_expression "*(int *)(iVar8 + 0x24)" * (cast_expression "(int *)(iVar8 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 != 0) {\nLAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }" { (labeled_statement "LAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);" statement_identifier : comment (expression_statement "FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);" (call_expression "FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2)" identifier (argument_list "("../../gold/gold.h",0xc0,"convert_types",iVar2)" ( (string_literal ""../../gold/gold.h"" " string_content ") , number_literal , (string_literal ""convert_types"" " string_content ") , identifier ))) ;)) })) (if_statement "if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }" if (parenthesized_expression "((char)uVar1 == '\0')" ( (binary_expression "(char)uVar1 == '\0'" (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }" { (expression_statement "bVar11 = CARRY4(uVar3,uVar4);" (assignment_expression "bVar11 = CARRY4(uVar3,uVar4)" identifier = (call_expression "CARRY4(uVar3,uVar4)" identifier (argument_list "(uVar3,uVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = uVar3 + uVar4;" (assignment_expression "uVar3 = uVar3 + uVar4" identifier = (binary_expression "uVar3 + uVar4" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;" (assignment_expression "iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11" identifier = (binary_expression "iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11" (binary_expression "iVar7 + ((int)uVar4 >> 0x1f)" identifier + (parenthesized_expression "((int)uVar4 >> 0x1f)" ( (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iStack_38 = iStack_38 + uVar10 * -0x18;" (assignment_expression "iStack_38 = iStack_38 + uVar10 * -0x18" identifier = (binary_expression "iStack_38 + uVar10 * -0x18" identifier + (binary_expression "uVar10 * -0x18" identifier * number_literal))) ;) })) (if_statement "if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }" if (parenthesized_expression "(iStack_38 != 0)" ( (binary_expression "iStack_38 != 0" identifier != number_literal) )) (compound_statement "{\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }" { (if_statement "if (param_1[7] == 0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        FUN_000917c0();\n      }" if (parenthesized_expression "(param_1[7] == 0)" ( (binary_expression "param_1[7] == 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        FUN_000917c0();\n      }" { (labeled_statement "LAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        FUN_000917c0();" statement_identifier : comment (expression_statement "FUN_000917c0();" (call_expression "FUN_000917c0()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);" (assignment_expression "iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0)" identifier = (call_expression "FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0)" identifier (argument_list "(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0)" ( (binary_expression "param_1[7] + 0x1c" (subscript_expression "param_1[7]" identifier [ number_literal ]) + number_literal) , (subscript_expression "param_1[8]" identifier [ number_literal ]) , (subscript_expression "param_1[9]" identifier [ number_literal ]) , identifier , identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "uVar10 = *(uint *)(iVar8 + 0x28);" (assignment_expression "uVar10 = *(uint *)(iVar8 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar8 + 0x28)" * (cast_expression "(uint *)(iVar8 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }" if (parenthesized_expression "(0xfeff < uVar10)" ( (binary_expression "0xfeff < uVar10" number_literal < identifier) )) (compound_statement "{\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }" { (expression_statement "FUN_0004dee0(param_1 + 0x24);" (call_expression "FUN_0004dee0(param_1 + 0x24)" identifier (argument_list "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))) ;) (expression_statement "uVar10 = uVar10 + param_1[0x29];" (assignment_expression "uVar10 = uVar10 + param_1[0x29]" identifier = (binary_expression "uVar10 + param_1[0x29]" identifier + (subscript_expression "param_1[0x29]" identifier [ number_literal ]))) ;) })) (if_statement "if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }" if (parenthesized_expression "(uVar10 < (uint)param_1[10])" ( (binary_expression "uVar10 < (uint)param_1[10]" identifier < (cast_expression "(uint)param_1[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) )) (compound_statement "{\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }" { (expression_statement "iVar9 = uVar10 * 0x40 + iVar9;" (assignment_expression "iVar9 = uVar10 * 0x40 + iVar9" identifier = (binary_expression "uVar10 * 0x40 + iVar9" (binary_expression "uVar10 * 0x40" identifier * number_literal) + identifier)) ;) (expression_statement "iVar8 = *(int *)(iVar9 + 4);" (assignment_expression "iVar8 = *(int *)(iVar9 + 4)" identifier = (pointer_expression "*(int *)(iVar9 + 4)" * (cast_expression "(int *)(iVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }" if (parenthesized_expression "(iVar8 != 3)" ( (binary_expression "iVar8 != 3" identifier != number_literal) )) (compound_statement "{\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }" { (expression_statement "uVar1 = gettext("symbol table name section has wrong type: %u");" (assignment_expression "uVar1 = gettext("symbol table name section has wrong type: %u")" identifier = (call_expression "gettext("symbol table name section has wrong type: %u")" identifier (argument_list "("symbol table name section has wrong type: %u")" ( (string_literal ""symbol table name section has wrong type: %u"" " string_content ") )))) ;) (expression_statement "FUN_00091980(param_1,uVar1,iVar8);" (call_expression "FUN_00091980(param_1,uVar1,iVar8)" identifier (argument_list "(param_1,uVar1,iVar8)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_1[7] == 0) goto LAB_000a9295;" if (parenthesized_expression "(param_1[7] == 0)" ( (binary_expression "param_1[7] == 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_000a9295;" goto statement_identifier ;)) (expression_statement "iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);" (assignment_expression "iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1)" identifier = (call_expression "FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1)" identifier (argument_list "(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1)" ( (binary_expression "param_1[7] + 0x1c" (subscript_expression "param_1[7]" identifier [ number_literal ]) + number_literal) , (subscript_expression "param_1[8]" identifier [ number_literal ]) , (subscript_expression "param_1[9]" identifier [ number_literal ]) , (pointer_expression "*(undefined4 *)(iVar9 + 0x18)" * (cast_expression "(undefined4 *)(iVar9 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x18)" ( (binary_expression "iVar9 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar9 + 0x1c)" * (cast_expression "(undefined4 *)(iVar9 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x1c)" ( (binary_expression "iVar9 + 0x1c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar9 + 0x20)" * (cast_expression "(undefined4 *)(iVar9 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x20)" ( (binary_expression "iVar9 + 0x20" identifier + number_literal) )))) , number_literal , number_literal )))) ;) (expression_statement "param_2[6] = iVar8;" (assignment_expression "param_2[6] = iVar8" (subscript_expression "param_2[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = *(int *)(iVar9 + 0x20);" (assignment_expression "iVar2 = *(int *)(iVar9 + 0x20)" identifier = (pointer_expression "*(int *)(iVar9 + 0x20)" * (cast_expression "(int *)(iVar9 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x20)" ( (binary_expression "iVar9 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "param_2[3] = iVar7;" (assignment_expression "param_2[3] = iVar7" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }" if (parenthesized_expression "((char)uVar1 != '\0')" ( (binary_expression "(char)uVar1 != '\0'" (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar10 = uVar4;\n        }" { (expression_statement "uVar10 = uVar4;" (assignment_expression "uVar10 = uVar4" identifier = identifier) ;) })) (expression_statement "param_2[4] = iStack_38;" (assignment_expression "param_2[4] = iStack_38" (subscript_expression "param_2[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[5] = uVar10;" (assignment_expression "param_2[5] = uVar10" (subscript_expression "param_2[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;" if (parenthesized_expression "(*(int *)(iVar9 + 0x24) != 0)" ( (binary_expression "*(int *)(iVar9 + 0x24) != 0" (pointer_expression "*(int *)(iVar9 + 0x24)" * (cast_expression "(int *)(iVar9 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x24)" ( (binary_expression "iVar9 + 0x24" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_000a9278;" goto statement_identifier ;)) (expression_statement "param_2[7] = iVar2;" (assignment_expression "param_2[7] = iVar2" (subscript_expression "param_2[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }" else (compound_statement "{\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }" { (expression_statement "uVar1 = gettext("invalid symbol table name index: %u");" (assignment_expression "uVar1 = gettext("invalid symbol table name index: %u")" identifier = (call_expression "gettext("invalid symbol table name index: %u")" identifier (argument_list "("invalid symbol table name index: %u")" ( (string_literal ""invalid symbol table name index: %u"" " string_content ") )))) ;) (expression_statement "FUN_00091980(param_1,uVar1,uVar10);" (call_expression "FUN_00091980(param_1,uVar1,uVar10)" identifier (argument_list "(param_1,uVar1,uVar10)" ( identifier , identifier , identifier ))) ;) }))) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* DWARF original prototype: void do_read_symbols(Sized_relobj_file<64,_false> * this,\n   Read_symbols_data * sd) */\n\nvoid __thiscall\ngold::Sized_relobj_file<64,_false>::do_read_symbols\n          (Sized_relobj_file<64,_false> *this,Read_symbols_data *sd)\n\n{\n  Symbol_value<64> *pSVar1;\n  uchar *pshdrs;\n  Symbol_value<64> *pSVar2;\n  pointer pSVar3;\n  Input_file *pIVar4;\n  section_size_type sVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  File_view *pFVar10;\n  File_view *pFVar11;\n  char *pcVar12;\n  uint uVar13;\n  Symbol_value<64> *this_00;\n  Symbol_value<64> *pSVar14;\n  uint uVar15;\n  bool bVar16;\n  Read_symbols_data *__in_chrg;\n  Object *in_stack_ffffffc4;\n  section_size_type sStack_38;\n  \n  Object::read_section_data<64,_false>((Object *)this,&this->elf_file_,sd);\n  pshdrs = sd->section_headers->data_;\n  find_symtab(this,pshdrs);\n  __in_chrg = sd;\n  iVar6 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x3e])\n                    (this);\n  uVar15 = this->symtab_shndx_;\n  sd->symbols = (File_view *)0x0;\n  sd->symbols_size = 0;\n  sd->external_symbols_offset = 0;\n  sd->symbol_names = (File_view *)0x0;\n  sd->symbol_names_size = 0;\n  if (uVar15 != 0) {\n    if (*(int *)(pshdrs + uVar15 * 0x40 + 4) != 2) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/object.cc",0x360,"base_read_symbols");\n    }\n    pSVar2 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.\n             _M_impl._M_finish;\n    pSVar3 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.\n             _M_impl._M_start;\n    uVar13 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x2c);\n    this->local_symbol_count_ = uVar13;\n    iVar7 = (int)pSVar2 - (int)pSVar3 >> 2;\n    uVar8 = iVar7 * -0x33333333;\n    if (uVar8 < uVar13) {\n      std::vector<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>::\n      _M_default_append(&this->local_values_,uVar13 + iVar7 * 0x33333333);\n    }\n    else if ((uVar13 < uVar8) && (pSVar1 = pSVar3 + uVar13, this_00 = pSVar1, pSVar2 != pSVar1)) {\n      do {\n        pSVar14 = this_00 + 1;\n        Symbol_value<64>::~Symbol_value(this_00,(int)__in_chrg);\n        this_00 = pSVar14;\n      } while (pSVar2 != pSVar14);\n      (this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>._M_impl.\n      _M_finish = pSVar1;\n    }\n    uVar8 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x18);\n    iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 0x1c);\n    uVar9 = uVar13 * 0x18;\n    sStack_38 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);\n    if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) {\nLAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n    }\n    if ((char)iVar6 == '\0') {\n      bVar16 = CARRY4(uVar8,uVar9);\n      uVar8 = uVar8 + uVar9;\n      iVar7 = iVar7 + ((int)uVar9 >> 0x1f) + (uint)bVar16;\n      sStack_38 = sStack_38 + uVar13 * -0x18;\n    }\n    if (sStack_38 != 0) {\n      pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n      if (pIVar4 == (Input_file *)0x0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        Object::input_file(in_stack_ffffffc4);\n      }\n      pFVar10 = File_read::get_lasting_view\n                          (&pIVar4->file_,\n                           (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_,\n                           CONCAT44(iVar7,uVar8),sStack_38,true,false);\n      uVar15 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x28);\n      if (0xfeff < uVar15) {\n        elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n        uVar15 = uVar15 + (this->elf_file_).large_shndx_offset_;\n      }\n      if (uVar15 < (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.shnum_) {\n        iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 4);\n        if (iVar7 != 3) {\n          pcVar12 = (char *)gettext("symbol table name section has wrong type: %u");\n          Object::error((Object *)this,pcVar12,iVar7);\n          return;\n        }\n        pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (pIVar4 == (Input_file *)0x0) goto LAB_000a9295;\n        pFVar11 = File_read::get_lasting_view\n                            (&pIVar4->file_,\n                             (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_\n                             ,*(off_t *)(pshdrs + uVar15 * 0x40 + 0x18),\n                             *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20),false,true);\n        sd->symbol_names = pFVar11;\n        sVar5 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);\n        sd->symbols = pFVar10;\n        uVar13 = 0;\n        if ((char)iVar6 != '\0') {\n          uVar13 = uVar9;\n        }\n        sd->symbols_size = sStack_38;\n        sd->external_symbols_offset = uVar13;\n        if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) goto LAB_000a9278;\n        sd->symbol_names_size = sVar5;\n      }\n      else {\n        pcVar12 = (char *)gettext("invalid symbol table name index: %u");\n        Object::error((Object *)this,pcVar12,uVar15);\n      }\n    }\n  }\n  return;\n}\n\n" comment comment (declaration "void __thiscall\ngold::Sized_relobj_file<64,_false>::do_read_symbols\n          (Sized_relobj_file<64,_false> *this,Read_symbols_data *sd)\n\n{\n  Symbol_value<64> *pSVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::do_read_symbols\n          (Sized_relobj_file<64,_false> *this,Read_symbols_data *sd)\n\n{\n  Symbol_value<64>" identifier > : : (function_declarator "do_read_symbols\n          (Sized_relobj_file<64,_false> *this,Read_symbols_data *sd)" identifier (parameter_list "(Sized_relobj_file<64,_false> *this,Read_symbols_data *sd)" ( (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Read_symbols_data *sd" type_identifier (pointer_declarator "*sd" * identifier)) ))) { identifier < number_literal >) (pointer_declarator "*pSVar1" * identifier) ;) (declaration "uchar *pshdrs;" type_identifier (pointer_declarator "*pshdrs" * identifier) ;) (expression_statement "Symbol_value<64> *pSVar2;" (update_expression "Symbol_value<64> *pSVar2" (binary_expression "Symbol_value<64> *pSVar2" (binary_expression "Symbol_value<64" identifier < number_literal) > (pointer_expression "*pSVar2" * identifier)) --) ;) (declaration "pointer pSVar3;" type_identifier identifier ;) (declaration "Input_file *pIVar4;" type_identifier (pointer_declarator "*pIVar4" * identifier) ;) (declaration "section_size_type sVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "File_view *pFVar10;" type_identifier (pointer_declarator "*pFVar10" * identifier) ;) (declaration "File_view *pFVar11;" type_identifier (pointer_declarator "*pFVar11" * identifier) ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (expression_statement "Symbol_value<64> *this_00;" (update_expression "Symbol_value<64> *this_00" (binary_expression "Symbol_value<64> *this_00" (binary_expression "Symbol_value<64" identifier < number_literal) > (pointer_expression "*this_00" * identifier)) --) ;) (expression_statement "Symbol_value<64> *pSVar14;" (update_expression "Symbol_value<64> *pSVar14" (binary_expression "Symbol_value<64> *pSVar14" (binary_expression "Symbol_value<64" identifier < number_literal) > (pointer_expression "*pSVar14" * identifier)) --) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "Read_symbols_data *__in_chrg;" type_identifier (pointer_declarator "*__in_chrg" * identifier) ;) (declaration "Object *in_stack_ffffffc4;" type_identifier (pointer_declarator "*in_stack_ffffffc4" * identifier) ;) (declaration "section_size_type sStack_38;" type_identifier identifier ;) (labeled_statement "Object::read_section_data<64,_false>((Object *)this,&this->elf_file_,sd);" statement_identifier : (ERROR ":" :) (expression_statement "read_section_data<64,_false>((Object *)this,&this->elf_file_,sd);" (comma_expression "read_section_data<64,_false>((Object *)this,&this->elf_file_,sd)" (binary_expression "read_section_data<64" identifier < number_literal) , (binary_expression "_false>((Object *)this,&this->elf_file_,sd)" identifier > (parenthesized_expression "((Object *)this,&this->elf_file_,sd)" ( (comma_expression "(Object *)this,&this->elf_file_,sd" (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (comma_expression "&this->elf_file_,sd" (pointer_expression "&this->elf_file_" & (field_expression "this->elf_file_" identifier -> field_identifier)) , identifier)) )))) ;)) (expression_statement "pshdrs = sd->section_headers->data_;" (assignment_expression "pshdrs = sd->section_headers->data_" identifier = (field_expression "sd->section_headers->data_" (field_expression "sd->section_headers" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "find_symtab(this,pshdrs);" (call_expression "find_symtab(this,pshdrs)" identifier (argument_list "(this,pshdrs)" ( identifier , identifier ))) ;) (expression_statement "__in_chrg = sd;" (assignment_expression "__in_chrg = sd" identifier = identifier) ;) (expression_statement "iVar6 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x3e])\n                    (this);" (assignment_expression "iVar6 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x3e])\n                    (this)" identifier = (call_expression "(*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x3e])\n                    (this)" (parenthesized_expression "(*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x3e])" ( (pointer_expression "*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x3e]" * (subscript_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x3e]" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) )) (argument_list "(this)" ( identifier )))) ;) (expression_statement "uVar15 = this->symtab_shndx_;" (assignment_expression "uVar15 = this->symtab_shndx_" identifier = (field_expression "this->symtab_shndx_" identifier -> field_identifier)) ;) (expression_statement "sd->symbols = (File_view *)0x0;" (assignment_expression "sd->symbols = (File_view *)0x0" (field_expression "sd->symbols" identifier -> field_identifier) = (cast_expression "(File_view *)0x0" ( (type_descriptor "File_view *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sd->symbols_size = 0;" (assignment_expression "sd->symbols_size = 0" (field_expression "sd->symbols_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "sd->external_symbols_offset = 0;" (assignment_expression "sd->external_symbols_offset = 0" (field_expression "sd->external_symbols_offset" identifier -> field_identifier) = number_literal) ;) (expression_statement "sd->symbol_names = (File_view *)0x0;" (assignment_expression "sd->symbol_names = (File_view *)0x0" (field_expression "sd->symbol_names" identifier -> field_identifier) = (cast_expression "(File_view *)0x0" ( (type_descriptor "File_view *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sd->symbol_names_size = 0;" (assignment_expression "sd->symbol_names_size = 0" (field_expression "sd->symbol_names_size" identifier -> field_identifier) = number_literal) ;) (if_statement "if (uVar15 != 0) {\n    if (*(int *)(pshdrs + uVar15 * 0x40 + 4) != 2) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/object.cc",0x360,"base_read_symbols");\n    }\n    pSVar2 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.\n             _M_impl._M_finish;\n    pSVar3 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.\n             _M_impl._M_start;\n    uVar13 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x2c);\n    this->local_symbol_count_ = uVar13;\n    iVar7 = (int)pSVar2 - (int)pSVar3 >> 2;\n    uVar8 = iVar7 * -0x33333333;\n    if (uVar8 < uVar13) {\n      std::vector<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>::\n      _M_default_append(&this->local_values_,uVar13 + iVar7 * 0x33333333);\n    }\n    else if ((uVar13 < uVar8) && (pSVar1 = pSVar3 + uVar13, this_00 = pSVar1, pSVar2 != pSVar1)) {\n      do {\n        pSVar14 = this_00 + 1;\n        Symbol_value<64>::~Symbol_value(this_00,(int)__in_chrg);\n        this_00 = pSVar14;\n      } while (pSVar2 != pSVar14);\n      (this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>._M_impl.\n      _M_finish = pSVar1;\n    }\n    uVar8 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x18);\n    iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 0x1c);\n    uVar9 = uVar13 * 0x18;\n    sStack_38 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);\n    if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) {\nLAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n    }\n    if ((char)iVar6 == '\0') {\n      bVar16 = CARRY4(uVar8,uVar9);\n      uVar8 = uVar8 + uVar9;\n      iVar7 = iVar7 + ((int)uVar9 >> 0x1f) + (uint)bVar16;\n      sStack_38 = sStack_38 + uVar13 * -0x18;\n    }\n    if (sStack_38 != 0) {\n      pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n      if (pIVar4 == (Input_file *)0x0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        Object::input_file(in_stack_ffffffc4);\n      }\n      pFVar10 = File_read::get_lasting_view\n                          (&pIVar4->file_,\n                           (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_,\n                           CONCAT44(iVar7,uVar8),sStack_38,true,false);\n      uVar15 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x28);\n      if (0xfeff < uVar15) {\n        elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n        uVar15 = uVar15 + (this->elf_file_).large_shndx_offset_;\n      }\n      if (uVar15 < (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.shnum_) {\n        iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 4);\n        if (iVar7 != 3) {\n          pcVar12 = (char *)gettext("symbol table name section has wrong type: %u");\n          Object::error((Object *)this,pcVar12,iVar7);\n          return;\n        }\n        pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (pIVar4 == (Input_file *)0x0) goto LAB_000a9295;\n        pFVar11 = File_read::get_lasting_view\n                            (&pIVar4->file_,\n                             (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_\n                             ,*(off_t *)(pshdrs + uVar15 * 0x40 + 0x18),\n                             *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20),false,true);\n        sd->symbol_names = pFVar11;\n        sVar5 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);\n        sd->symbols = pFVar10;\n        uVar13 = 0;\n        if ((char)iVar6 != '\0') {\n          uVar13 = uVar9;\n        }\n        sd->symbols_size = sStack_38;\n        sd->external_symbols_offset = uVar13;\n        if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) goto LAB_000a9278;\n        sd->symbol_names_size = sVar5;\n      }\n      else {\n        pcVar12 = (char *)gettext("invalid symbol table name index: %u");\n        Object::error((Object *)this,pcVar12,uVar15);\n      }\n    }\n  }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n    if (*(int *)(pshdrs + uVar15 * 0x40 + 4) != 2) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/object.cc",0x360,"base_read_symbols");\n    }\n    pSVar2 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.\n             _M_impl._M_finish;\n    pSVar3 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.\n             _M_impl._M_start;\n    uVar13 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x2c);\n    this->local_symbol_count_ = uVar13;\n    iVar7 = (int)pSVar2 - (int)pSVar3 >> 2;\n    uVar8 = iVar7 * -0x33333333;\n    if (uVar8 < uVar13) {\n      std::vector<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>::\n      _M_default_append(&this->local_values_,uVar13 + iVar7 * 0x33333333);\n    }\n    else if ((uVar13 < uVar8) && (pSVar1 = pSVar3 + uVar13, this_00 = pSVar1, pSVar2 != pSVar1)) {\n      do {\n        pSVar14 = this_00 + 1;\n        Symbol_value<64>::~Symbol_value(this_00,(int)__in_chrg);\n        this_00 = pSVar14;\n      } while (pSVar2 != pSVar14);\n      (this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>._M_impl.\n      _M_finish = pSVar1;\n    }\n    uVar8 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x18);\n    iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 0x1c);\n    uVar9 = uVar13 * 0x18;\n    sStack_38 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);\n    if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) {\nLAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n    }\n    if ((char)iVar6 == '\0') {\n      bVar16 = CARRY4(uVar8,uVar9);\n      uVar8 = uVar8 + uVar9;\n      iVar7 = iVar7 + ((int)uVar9 >> 0x1f) + (uint)bVar16;\n      sStack_38 = sStack_38 + uVar13 * -0x18;\n    }\n    if (sStack_38 != 0) {\n      pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n      if (pIVar4 == (Input_file *)0x0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        Object::input_file(in_stack_ffffffc4);\n      }\n      pFVar10 = File_read::get_lasting_view\n                          (&pIVar4->file_,\n                           (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_,\n                           CONCAT44(iVar7,uVar8),sStack_38,true,false);\n      uVar15 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x28);\n      if (0xfeff < uVar15) {\n        elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n        uVar15 = uVar15 + (this->elf_file_).large_shndx_offset_;\n      }\n      if (uVar15 < (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.shnum_) {\n        iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 4);\n        if (iVar7 != 3) {\n          pcVar12 = (char *)gettext("symbol table name section has wrong type: %u");\n          Object::error((Object *)this,pcVar12,iVar7);\n          return;\n        }\n        pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (pIVar4 == (Input_file *)0x0) goto LAB_000a9295;\n        pFVar11 = File_read::get_lasting_view\n                            (&pIVar4->file_,\n                             (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_\n                             ,*(off_t *)(pshdrs + uVar15 * 0x40 + 0x18),\n                             *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20),false,true);\n        sd->symbol_names = pFVar11;\n        sVar5 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);\n        sd->symbols = pFVar10;\n        uVar13 = 0;\n        if ((char)iVar6 != '\0') {\n          uVar13 = uVar9;\n        }\n        sd->symbols_size = sStack_38;\n        sd->external_symbols_offset = uVar13;\n        if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) goto LAB_000a9278;\n        sd->symbol_names_size = sVar5;\n      }\n      else {\n        pcVar12 = (char *)gettext("invalid symbol table name index: %u");\n        Object::error((Object *)this,pcVar12,uVar15);\n      }\n    }\n  }" { (if_statement "if (*(int *)(pshdrs + uVar15 * 0x40 + 4) != 2) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/object.cc",0x360,"base_read_symbols");\n    }" if (parenthesized_expression "(*(int *)(pshdrs + uVar15 * 0x40 + 4) != 2)" ( (binary_expression "*(int *)(pshdrs + uVar15 * 0x40 + 4) != 2" (pointer_expression "*(int *)(pshdrs + uVar15 * 0x40 + 4)" * (cast_expression "(int *)(pshdrs + uVar15 * 0x40 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar15 * 0x40 + 4)" ( (binary_expression "pshdrs + uVar15 * 0x40 + 4" (binary_expression "pshdrs + uVar15 * 0x40" identifier + (binary_expression "uVar15 * 0x40" identifier * number_literal)) + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/object.cc",0x360,"base_read_symbols");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/object.cc",0x360,"base_read_symbols");" (call_expression "do_gold_unreachable("../../gold/object.cc",0x360,"base_read_symbols")" identifier (argument_list "("../../gold/object.cc",0x360,"base_read_symbols")" ( (string_literal ""../../gold/object.cc"" " string_content ") , number_literal , (string_literal ""base_read_symbols"" " string_content ") ))) ;) })) (expression_statement "pSVar2 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.\n             _M_impl._M_finish;" (field_expression "pSVar2 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.\n             _M_impl._M_finish" (field_expression "pSVar2 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.\n             _M_impl" (binary_expression "pSVar2 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_" (binary_expression "pSVar2 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_" (binary_expression "pSVar2 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64" (binary_expression "pSVar2 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold" (binary_expression "pSVar2 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std" (binary_expression "pSVar2 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64" (assignment_expression "pSVar2 = (this->local_values_).\n             super__Vector_base<gold" identifier = (binary_expression "(this->local_values_).\n             super__Vector_base<gold" (field_expression "(this->local_values_).\n             super__Vector_base" (parenthesized_expression "(this->local_values_)" ( (field_expression "this->local_values_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Symbol_value" : : identifier) < number_literal) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol_value" : : identifier) < number_literal) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "pSVar3 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.\n             _M_impl._M_start;" (field_expression "pSVar3 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.\n             _M_impl._M_start" (field_expression "pSVar3 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>.\n             _M_impl" (binary_expression "pSVar3 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_" (binary_expression "pSVar3 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_" (binary_expression "pSVar3 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64" (binary_expression "pSVar3 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold" (binary_expression "pSVar3 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64>,_std" (binary_expression "pSVar3 = (this->local_values_).\n             super__Vector_base<gold::Symbol_value<64" (assignment_expression "pSVar3 = (this->local_values_).\n             super__Vector_base<gold" identifier = (binary_expression "(this->local_values_).\n             super__Vector_base<gold" (field_expression "(this->local_values_).\n             super__Vector_base" (parenthesized_expression "(this->local_values_)" ( (field_expression "this->local_values_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Symbol_value" : : identifier) < number_literal) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol_value" : : identifier) < number_literal) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "uVar13 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x2c);" (assignment_expression "uVar13 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x2c)" identifier = (pointer_expression "*(uint *)(pshdrs + uVar15 * 0x40 + 0x2c)" * (cast_expression "(uint *)(pshdrs + uVar15 * 0x40 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar15 * 0x40 + 0x2c)" ( (binary_expression "pshdrs + uVar15 * 0x40 + 0x2c" (binary_expression "pshdrs + uVar15 * 0x40" identifier + (binary_expression "uVar15 * 0x40" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "this->local_symbol_count_ = uVar13;" (assignment_expression "this->local_symbol_count_ = uVar13" (field_expression "this->local_symbol_count_" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar7 = (int)pSVar2 - (int)pSVar3 >> 2;" (assignment_expression "iVar7 = (int)pSVar2 - (int)pSVar3 >> 2" identifier = (binary_expression "(int)pSVar2 - (int)pSVar3 >> 2" (binary_expression "(int)pSVar2 - (int)pSVar3" (cast_expression "(int)pSVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pSVar3" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "uVar8 = iVar7 * -0x33333333;" (assignment_expression "uVar8 = iVar7 * -0x33333333" identifier = (binary_expression "iVar7 * -0x33333333" identifier * number_literal)) ;) (if_statement "if (uVar8 < uVar13) {\n      std::vector<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>::\n      _M_default_append(&this->local_values_,uVar13 + iVar7 * 0x33333333);\n    }\n    else if ((uVar13 < uVar8) && (pSVar1 = pSVar3 + uVar13, this_00 = pSVar1, pSVar2 != pSVar1)) {\n      do {\n        pSVar14 = this_00 + 1;\n        Symbol_value<64>::~Symbol_value(this_00,(int)__in_chrg);\n        this_00 = pSVar14;\n      } while (pSVar2 != pSVar14);\n      (this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>._M_impl.\n      _M_finish = pSVar1;\n    }" if (parenthesized_expression "(uVar8 < uVar13)" ( (binary_expression "uVar8 < uVar13" identifier < identifier) )) (compound_statement "{\n      std::vector<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>::\n      _M_default_append(&this->local_values_,uVar13 + iVar7 * 0x33333333);\n    }" { (ERROR "std::vector<gold::Symbol_value<64>,_std::allocator<gold::" (comma_expression "std::vector<gold::Symbol_value<64>,_std" identifier (ERROR "::vector<gold::Symbol_value<64>" : : (binary_expression "vector<gold" identifier < identifier) : : (binary_expression "Symbol_value<64" identifier < number_literal) >) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Symbol_value<64>_>_>::\n      _M_default_append(&this->local_values_,uVar13 + iVar7 * 0x33333333);" (binary_expression "Symbol_value<64>_>_>::\n      _M_default_append(&this->local_values_,uVar13 + iVar7 * 0x33333333)" (binary_expression "Symbol_value<64>_>_" (binary_expression "Symbol_value<64>_" (binary_expression "Symbol_value<64" identifier < number_literal) > identifier) > identifier) > (ERROR "::" : :) (call_expression "_M_default_append(&this->local_values_,uVar13 + iVar7 * 0x33333333)" identifier (argument_list "(&this->local_values_,uVar13 + iVar7 * 0x33333333)" ( (pointer_expression "&this->local_values_" & (field_expression "this->local_values_" identifier -> field_identifier)) , (binary_expression "uVar13 + iVar7 * 0x33333333" identifier + (binary_expression "iVar7 * 0x33333333" identifier * number_literal)) )))) ;) }) (else_clause "else if ((uVar13 < uVar8) && (pSVar1 = pSVar3 + uVar13, this_00 = pSVar1, pSVar2 != pSVar1)) {\n      do {\n        pSVar14 = this_00 + 1;\n        Symbol_value<64>::~Symbol_value(this_00,(int)__in_chrg);\n        this_00 = pSVar14;\n      } while (pSVar2 != pSVar14);\n      (this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>._M_impl.\n      _M_finish = pSVar1;\n    }" else (if_statement "if ((uVar13 < uVar8) && (pSVar1 = pSVar3 + uVar13, this_00 = pSVar1, pSVar2 != pSVar1)) {\n      do {\n        pSVar14 = this_00 + 1;\n        Symbol_value<64>::~Symbol_value(this_00,(int)__in_chrg);\n        this_00 = pSVar14;\n      } while (pSVar2 != pSVar14);\n      (this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>._M_impl.\n      _M_finish = pSVar1;\n    }" if (parenthesized_expression "((uVar13 < uVar8) && (pSVar1 = pSVar3 + uVar13, this_00 = pSVar1, pSVar2 != pSVar1))" ( (binary_expression "(uVar13 < uVar8) && (pSVar1 = pSVar3 + uVar13, this_00 = pSVar1, pSVar2 != pSVar1)" (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) )) && (parenthesized_expression "(pSVar1 = pSVar3 + uVar13, this_00 = pSVar1, pSVar2 != pSVar1)" ( (comma_expression "pSVar1 = pSVar3 + uVar13, this_00 = pSVar1, pSVar2 != pSVar1" (assignment_expression "pSVar1 = pSVar3 + uVar13" identifier = (binary_expression "pSVar3 + uVar13" identifier + identifier)) , (comma_expression "this_00 = pSVar1, pSVar2 != pSVar1" (assignment_expression "this_00 = pSVar1" identifier = identifier) , (binary_expression "pSVar2 != pSVar1" identifier != identifier))) ))) )) (compound_statement "{\n      do {\n        pSVar14 = this_00 + 1;\n        Symbol_value<64>::~Symbol_value(this_00,(int)__in_chrg);\n        this_00 = pSVar14;\n      } while (pSVar2 != pSVar14);\n      (this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>._M_impl.\n      _M_finish = pSVar1;\n    }" { (do_statement "do {\n        pSVar14 = this_00 + 1;\n        Symbol_value<64>::~Symbol_value(this_00,(int)__in_chrg);\n        this_00 = pSVar14;\n      } while (pSVar2 != pSVar14);" do (compound_statement "{\n        pSVar14 = this_00 + 1;\n        Symbol_value<64>::~Symbol_value(this_00,(int)__in_chrg);\n        this_00 = pSVar14;\n      }" { (expression_statement "pSVar14 = this_00 + 1;" (assignment_expression "pSVar14 = this_00 + 1" identifier = (binary_expression "this_00 + 1" identifier + number_literal)) ;) (expression_statement "Symbol_value<64>::~Symbol_value(this_00,(int)__in_chrg);" (binary_expression "Symbol_value<64>::~Symbol_value(this_00,(int)__in_chrg)" (binary_expression "Symbol_value<64" identifier < number_literal) > (ERROR "::" : :) (unary_expression "~Symbol_value(this_00,(int)__in_chrg)" ~ (call_expression "Symbol_value(this_00,(int)__in_chrg)" identifier (argument_list "(this_00,(int)__in_chrg)" ( identifier , (cast_expression "(int)__in_chrg" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (expression_statement "this_00 = pSVar14;" (assignment_expression "this_00 = pSVar14" identifier = identifier) ;) }) while (parenthesized_expression "(pSVar2 != pSVar14)" ( (binary_expression "pSVar2 != pSVar14" identifier != identifier) )) ;) (expression_statement "(this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>._M_impl.\n      _M_finish = pSVar1;" (assignment_expression "(this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>._M_impl.\n      _M_finish = pSVar1" (field_expression "(this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>._M_impl.\n      _M_finish" (field_expression "(this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_>._M_impl" (binary_expression "(this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_>_" (binary_expression "(this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64>_" (binary_expression "(this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold::Symbol_value<64" (binary_expression "(this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std::allocator<gold" (binary_expression "(this->local_values_).\n      super__Vector_base<gold::Symbol_value<64>,_std" (binary_expression "(this->local_values_).\n      super__Vector_base<gold::Symbol_value<64" (binary_expression "(this->local_values_).\n      super__Vector_base<gold" (field_expression "(this->local_values_).\n      super__Vector_base" (parenthesized_expression "(this->local_values_)" ( (field_expression "this->local_values_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Symbol_value" : : identifier) < number_literal) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol_value" : : identifier) < number_literal) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;) })))) (expression_statement "uVar8 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x18);" (assignment_expression "uVar8 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x18)" identifier = (pointer_expression "*(uint *)(pshdrs + uVar15 * 0x40 + 0x18)" * (cast_expression "(uint *)(pshdrs + uVar15 * 0x40 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar15 * 0x40 + 0x18)" ( (binary_expression "pshdrs + uVar15 * 0x40 + 0x18" (binary_expression "pshdrs + uVar15 * 0x40" identifier + (binary_expression "uVar15 * 0x40" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 0x1c);" (assignment_expression "iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 0x1c)" identifier = (pointer_expression "*(int *)(pshdrs + uVar15 * 0x40 + 0x1c)" * (cast_expression "(int *)(pshdrs + uVar15 * 0x40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar15 * 0x40 + 0x1c)" ( (binary_expression "pshdrs + uVar15 * 0x40 + 0x1c" (binary_expression "pshdrs + uVar15 * 0x40" identifier + (binary_expression "uVar15 * 0x40" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "uVar9 = uVar13 * 0x18;" (assignment_expression "uVar9 = uVar13 * 0x18" identifier = (binary_expression "uVar13 * 0x18" identifier * number_literal)) ;) (expression_statement "sStack_38 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);" (assignment_expression "sStack_38 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20)" identifier = (pointer_expression "*(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20)" * (cast_expression "(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20)" ( (type_descriptor "section_size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar15 * 0x40 + 0x20)" ( (binary_expression "pshdrs + uVar15 * 0x40 + 0x20" (binary_expression "pshdrs + uVar15 * 0x40" identifier + (binary_expression "uVar15 * 0x40" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) {\nLAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n    }" if (parenthesized_expression "(*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0)" ( (binary_expression "*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0" (pointer_expression "*(int *)(pshdrs + uVar15 * 0x40 + 0x24)" * (cast_expression "(int *)(pshdrs + uVar15 * 0x40 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar15 * 0x40 + 0x24)" ( (binary_expression "pshdrs + uVar15 * 0x40 + 0x24" (binary_expression "pshdrs + uVar15 * 0x40" identifier + (binary_expression "uVar15 * 0x40" identifier * number_literal)) + number_literal) )))) != number_literal) )) (compound_statement "{\nLAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n    }" { (labeled_statement "LAB_000a9278:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");" (call_expression "do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types")" identifier (argument_list "("../../gold/gold.h",0xc0,"convert_types")" ( (string_literal ""../../gold/gold.h"" " string_content ") , number_literal , (string_literal ""convert_types"" " string_content ") ))) ;)) })) (if_statement "if ((char)iVar6 == '\0') {\n      bVar16 = CARRY4(uVar8,uVar9);\n      uVar8 = uVar8 + uVar9;\n      iVar7 = iVar7 + ((int)uVar9 >> 0x1f) + (uint)bVar16;\n      sStack_38 = sStack_38 + uVar13 * -0x18;\n    }" if (parenthesized_expression "((char)iVar6 == '\0')" ( (binary_expression "(char)iVar6 == '\0'" (cast_expression "(char)iVar6" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      bVar16 = CARRY4(uVar8,uVar9);\n      uVar8 = uVar8 + uVar9;\n      iVar7 = iVar7 + ((int)uVar9 >> 0x1f) + (uint)bVar16;\n      sStack_38 = sStack_38 + uVar13 * -0x18;\n    }" { (expression_statement "bVar16 = CARRY4(uVar8,uVar9);" (assignment_expression "bVar16 = CARRY4(uVar8,uVar9)" identifier = (call_expression "CARRY4(uVar8,uVar9)" identifier (argument_list "(uVar8,uVar9)" ( identifier , identifier )))) ;) (expression_statement "uVar8 = uVar8 + uVar9;" (assignment_expression "uVar8 = uVar8 + uVar9" identifier = (binary_expression "uVar8 + uVar9" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + ((int)uVar9 >> 0x1f) + (uint)bVar16;" (assignment_expression "iVar7 = iVar7 + ((int)uVar9 >> 0x1f) + (uint)bVar16" identifier = (binary_expression "iVar7 + ((int)uVar9 >> 0x1f) + (uint)bVar16" (binary_expression "iVar7 + ((int)uVar9 >> 0x1f)" identifier + (parenthesized_expression "((int)uVar9 >> 0x1f)" ( (binary_expression "(int)uVar9 >> 0x1f" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "sStack_38 = sStack_38 + uVar13 * -0x18;" (assignment_expression "sStack_38 = sStack_38 + uVar13 * -0x18" identifier = (binary_expression "sStack_38 + uVar13 * -0x18" identifier + (binary_expression "uVar13 * -0x18" identifier * number_literal))) ;) })) (if_statement "if (sStack_38 != 0) {\n      pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n      if (pIVar4 == (Input_file *)0x0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        Object::input_file(in_stack_ffffffc4);\n      }\n      pFVar10 = File_read::get_lasting_view\n                          (&pIVar4->file_,\n                           (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_,\n                           CONCAT44(iVar7,uVar8),sStack_38,true,false);\n      uVar15 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x28);\n      if (0xfeff < uVar15) {\n        elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n        uVar15 = uVar15 + (this->elf_file_).large_shndx_offset_;\n      }\n      if (uVar15 < (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.shnum_) {\n        iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 4);\n        if (iVar7 != 3) {\n          pcVar12 = (char *)gettext("symbol table name section has wrong type: %u");\n          Object::error((Object *)this,pcVar12,iVar7);\n          return;\n        }\n        pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (pIVar4 == (Input_file *)0x0) goto LAB_000a9295;\n        pFVar11 = File_read::get_lasting_view\n                            (&pIVar4->file_,\n                             (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_\n                             ,*(off_t *)(pshdrs + uVar15 * 0x40 + 0x18),\n                             *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20),false,true);\n        sd->symbol_names = pFVar11;\n        sVar5 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);\n        sd->symbols = pFVar10;\n        uVar13 = 0;\n        if ((char)iVar6 != '\0') {\n          uVar13 = uVar9;\n        }\n        sd->symbols_size = sStack_38;\n        sd->external_symbols_offset = uVar13;\n        if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) goto LAB_000a9278;\n        sd->symbol_names_size = sVar5;\n      }\n      else {\n        pcVar12 = (char *)gettext("invalid symbol table name index: %u");\n        Object::error((Object *)this,pcVar12,uVar15);\n      }\n    }" if (parenthesized_expression "(sStack_38 != 0)" ( (binary_expression "sStack_38 != 0" identifier != number_literal) )) (compound_statement "{\n      pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n      if (pIVar4 == (Input_file *)0x0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        Object::input_file(in_stack_ffffffc4);\n      }\n      pFVar10 = File_read::get_lasting_view\n                          (&pIVar4->file_,\n                           (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_,\n                           CONCAT44(iVar7,uVar8),sStack_38,true,false);\n      uVar15 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x28);\n      if (0xfeff < uVar15) {\n        elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n        uVar15 = uVar15 + (this->elf_file_).large_shndx_offset_;\n      }\n      if (uVar15 < (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.shnum_) {\n        iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 4);\n        if (iVar7 != 3) {\n          pcVar12 = (char *)gettext("symbol table name section has wrong type: %u");\n          Object::error((Object *)this,pcVar12,iVar7);\n          return;\n        }\n        pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (pIVar4 == (Input_file *)0x0) goto LAB_000a9295;\n        pFVar11 = File_read::get_lasting_view\n                            (&pIVar4->file_,\n                             (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_\n                             ,*(off_t *)(pshdrs + uVar15 * 0x40 + 0x18),\n                             *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20),false,true);\n        sd->symbol_names = pFVar11;\n        sVar5 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);\n        sd->symbols = pFVar10;\n        uVar13 = 0;\n        if ((char)iVar6 != '\0') {\n          uVar13 = uVar9;\n        }\n        sd->symbols_size = sStack_38;\n        sd->external_symbols_offset = uVar13;\n        if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) goto LAB_000a9278;\n        sd->symbol_names_size = sVar5;\n      }\n      else {\n        pcVar12 = (char *)gettext("invalid symbol table name index: %u");\n        Object::error((Object *)this,pcVar12,uVar15);\n      }\n    }" { (expression_statement "pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;" (assignment_expression "pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_" identifier = (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (pIVar4 == (Input_file *)0x0) {\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        Object::input_file(in_stack_ffffffc4);\n      }" if (parenthesized_expression "(pIVar4 == (Input_file *)0x0)" ( (binary_expression "pIVar4 == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        Object::input_file(in_stack_ffffffc4);\n      }" { (labeled_statement "LAB_000a9295:\n                    /* WARNING: Subroutine does not return */\n        Object::input_file(in_stack_ffffffc4);" statement_identifier : comment (labeled_statement "Object::input_file(in_stack_ffffffc4);" statement_identifier : (ERROR ":" :) (expression_statement "input_file(in_stack_ffffffc4);" (call_expression "input_file(in_stack_ffffffc4)" identifier (argument_list "(in_stack_ffffffc4)" ( identifier ))) ;))) })) (ERROR "pFVar10 = File_read::" (assignment_expression "pFVar10 = File_read" identifier = identifier) : :) (expression_statement "get_lasting_view\n                          (&pIVar4->file_,\n                           (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_,\n                           CONCAT44(iVar7,uVar8),sStack_38,true,false);" (call_expression "get_lasting_view\n                          (&pIVar4->file_,\n                           (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_,\n                           CONCAT44(iVar7,uVar8),sStack_38,true,false)" identifier (argument_list "(&pIVar4->file_,\n                           (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_,\n                           CONCAT44(iVar7,uVar8),sStack_38,true,false)" ( (pointer_expression "&pIVar4->file_" & (field_expression "pIVar4->file_" identifier -> field_identifier)) , (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) , (call_expression "CONCAT44(iVar7,uVar8)" identifier (argument_list "(iVar7,uVar8)" ( identifier , identifier ))) , identifier , true , false ))) ;) (expression_statement "uVar15 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x28);" (assignment_expression "uVar15 = *(uint *)(pshdrs + uVar15 * 0x40 + 0x28)" identifier = (pointer_expression "*(uint *)(pshdrs + uVar15 * 0x40 + 0x28)" * (cast_expression "(uint *)(pshdrs + uVar15 * 0x40 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar15 * 0x40 + 0x28)" ( (binary_expression "pshdrs + uVar15 * 0x40 + 0x28" (binary_expression "pshdrs + uVar15 * 0x40" identifier + (binary_expression "uVar15 * 0x40" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar15) {\n        elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n        uVar15 = uVar15 + (this->elf_file_).large_shndx_offset_;\n      }" if (parenthesized_expression "(0xfeff < uVar15)" ( (binary_expression "0xfeff < uVar15" number_literal < identifier) )) (compound_statement "{\n        elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n        uVar15 = uVar15 + (this->elf_file_).large_shndx_offset_;\n      }" { (labeled_statement "elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);" statement_identifier (ERROR "::Elf_file<64,_false,_gold::Object>:" : : (comma_expression "Elf_file<64,_false,_gold" (binary_expression "Elf_file<64" identifier < number_literal) , (comma_expression "_false,_gold" identifier , identifier)) : : identifier > :) : (expression_statement "initialize_shnum(&this->elf_file_);" (call_expression "initialize_shnum(&this->elf_file_)" identifier (argument_list "(&this->elf_file_)" ( (pointer_expression "&this->elf_file_" & (field_expression "this->elf_file_" identifier -> field_identifier)) ))) ;)) (expression_statement "uVar15 = uVar15 + (this->elf_file_).large_shndx_offset_;" (assignment_expression "uVar15 = uVar15 + (this->elf_file_).large_shndx_offset_" identifier = (binary_expression "uVar15 + (this->elf_file_).large_shndx_offset_" identifier + (field_expression "(this->elf_file_).large_shndx_offset_" (parenthesized_expression "(this->elf_file_)" ( (field_expression "this->elf_file_" identifier -> field_identifier) )) . field_identifier))) ;) })) (if_statement "if (uVar15 < (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.shnum_) {\n        iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 4);\n        if (iVar7 != 3) {\n          pcVar12 = (char *)gettext("symbol table name section has wrong type: %u");\n          Object::error((Object *)this,pcVar12,iVar7);\n          return;\n        }\n        pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (pIVar4 == (Input_file *)0x0) goto LAB_000a9295;\n        pFVar11 = File_read::get_lasting_view\n                            (&pIVar4->file_,\n                             (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_\n                             ,*(off_t *)(pshdrs + uVar15 * 0x40 + 0x18),\n                             *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20),false,true);\n        sd->symbol_names = pFVar11;\n        sVar5 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);\n        sd->symbols = pFVar10;\n        uVar13 = 0;\n        if ((char)iVar6 != '\0') {\n          uVar13 = uVar9;\n        }\n        sd->symbols_size = sStack_38;\n        sd->external_symbols_offset = uVar13;\n        if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) goto LAB_000a9278;\n        sd->symbol_names_size = sVar5;\n      }\n      else {\n        pcVar12 = (char *)gettext("invalid symbol table name index: %u");\n        Object::error((Object *)this,pcVar12,uVar15);\n      }" if (parenthesized_expression "(uVar15 < (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.shnum_)" ( (binary_expression "uVar15 < (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.shnum_" identifier < (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.shnum_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier)) )) (compound_statement "{\n        iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 4);\n        if (iVar7 != 3) {\n          pcVar12 = (char *)gettext("symbol table name section has wrong type: %u");\n          Object::error((Object *)this,pcVar12,iVar7);\n          return;\n        }\n        pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (pIVar4 == (Input_file *)0x0) goto LAB_000a9295;\n        pFVar11 = File_read::get_lasting_view\n                            (&pIVar4->file_,\n                             (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_\n                             ,*(off_t *)(pshdrs + uVar15 * 0x40 + 0x18),\n                             *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20),false,true);\n        sd->symbol_names = pFVar11;\n        sVar5 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);\n        sd->symbols = pFVar10;\n        uVar13 = 0;\n        if ((char)iVar6 != '\0') {\n          uVar13 = uVar9;\n        }\n        sd->symbols_size = sStack_38;\n        sd->external_symbols_offset = uVar13;\n        if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) goto LAB_000a9278;\n        sd->symbol_names_size = sVar5;\n      }" { (expression_statement "iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 4);" (assignment_expression "iVar7 = *(int *)(pshdrs + uVar15 * 0x40 + 4)" identifier = (pointer_expression "*(int *)(pshdrs + uVar15 * 0x40 + 4)" * (cast_expression "(int *)(pshdrs + uVar15 * 0x40 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar15 * 0x40 + 4)" ( (binary_expression "pshdrs + uVar15 * 0x40 + 4" (binary_expression "pshdrs + uVar15 * 0x40" identifier + (binary_expression "uVar15 * 0x40" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (iVar7 != 3) {\n          pcVar12 = (char *)gettext("symbol table name section has wrong type: %u");\n          Object::error((Object *)this,pcVar12,iVar7);\n          return;\n        }" if (parenthesized_expression "(iVar7 != 3)" ( (binary_expression "iVar7 != 3" identifier != number_literal) )) (compound_statement "{\n          pcVar12 = (char *)gettext("symbol table name section has wrong type: %u");\n          Object::error((Object *)this,pcVar12,iVar7);\n          return;\n        }" { (expression_statement "pcVar12 = (char *)gettext("symbol table name section has wrong type: %u");" (assignment_expression "pcVar12 = (char *)gettext("symbol table name section has wrong type: %u")" identifier = (cast_expression "(char *)gettext("symbol table name section has wrong type: %u")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("symbol table name section has wrong type: %u")" identifier (argument_list "("symbol table name section has wrong type: %u")" ( (string_literal ""symbol table name section has wrong type: %u"" " string_content ") ))))) ;) (labeled_statement "Object::error((Object *)this,pcVar12,iVar7);" statement_identifier : (ERROR ":" :) (expression_statement "error((Object *)this,pcVar12,iVar7);" (call_expression "error((Object *)this,pcVar12,iVar7)" identifier (argument_list "((Object *)this,pcVar12,iVar7)" ( (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;)) (return_statement "return;" return ;) })) (expression_statement "pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;" (assignment_expression "pIVar4 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_" identifier = (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (pIVar4 == (Input_file *)0x0) goto LAB_000a9295;" if (parenthesized_expression "(pIVar4 == (Input_file *)0x0)" ( (binary_expression "pIVar4 == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a9295;" goto statement_identifier ;)) (ERROR "pFVar11 = File_read::" (assignment_expression "pFVar11 = File_read" identifier = identifier) : :) (expression_statement "get_lasting_view\n                            (&pIVar4->file_,\n                             (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_\n                             ,*(off_t *)(pshdrs + uVar15 * 0x40 + 0x18),\n                             *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20),false,true);" (call_expression "get_lasting_view\n                            (&pIVar4->file_,\n                             (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_\n                             ,*(off_t *)(pshdrs + uVar15 * 0x40 + 0x18),\n                             *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20),false,true)" identifier (argument_list "(&pIVar4->file_,\n                             (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_\n                             ,*(off_t *)(pshdrs + uVar15 * 0x40 + 0x18),\n                             *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20),false,true)" ( (pointer_expression "&pIVar4->file_" & (field_expression "pIVar4->file_" identifier -> field_identifier)) , (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.offset_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) , (pointer_expression "*(off_t *)(pshdrs + uVar15 * 0x40 + 0x18)" * (cast_expression "(off_t *)(pshdrs + uVar15 * 0x40 + 0x18)" ( (type_descriptor "off_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar15 * 0x40 + 0x18)" ( (binary_expression "pshdrs + uVar15 * 0x40 + 0x18" (binary_expression "pshdrs + uVar15 * 0x40" identifier + (binary_expression "uVar15 * 0x40" identifier * number_literal)) + number_literal) )))) , (pointer_expression "*(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20)" * (cast_expression "(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20)" ( (type_descriptor "section_size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar15 * 0x40 + 0x20)" ( (binary_expression "pshdrs + uVar15 * 0x40 + 0x20" (binary_expression "pshdrs + uVar15 * 0x40" identifier + (binary_expression "uVar15 * 0x40" identifier * number_literal)) + number_literal) )))) , false , true ))) ;) (expression_statement "sd->symbol_names = pFVar11;" (assignment_expression "sd->symbol_names = pFVar11" (field_expression "sd->symbol_names" identifier -> field_identifier) = identifier) ;) (expression_statement "sVar5 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20);" (assignment_expression "sVar5 = *(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20)" identifier = (pointer_expression "*(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20)" * (cast_expression "(section_size_type *)(pshdrs + uVar15 * 0x40 + 0x20)" ( (type_descriptor "section_size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar15 * 0x40 + 0x20)" ( (binary_expression "pshdrs + uVar15 * 0x40 + 0x20" (binary_expression "pshdrs + uVar15 * 0x40" identifier + (binary_expression "uVar15 * 0x40" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "sd->symbols = pFVar10;" (assignment_expression "sd->symbols = pFVar10" (field_expression "sd->symbols" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (if_statement "if ((char)iVar6 != '\0') {\n          uVar13 = uVar9;\n        }" if (parenthesized_expression "((char)iVar6 != '\0')" ( (binary_expression "(char)iVar6 != '\0'" (cast_expression "(char)iVar6" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar13 = uVar9;\n        }" { (expression_statement "uVar13 = uVar9;" (assignment_expression "uVar13 = uVar9" identifier = identifier) ;) })) (expression_statement "sd->symbols_size = sStack_38;" (assignment_expression "sd->symbols_size = sStack_38" (field_expression "sd->symbols_size" identifier -> field_identifier) = identifier) ;) (expression_statement "sd->external_symbols_offset = uVar13;" (assignment_expression "sd->external_symbols_offset = uVar13" (field_expression "sd->external_symbols_offset" identifier -> field_identifier) = identifier) ;) (if_statement "if (*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0) goto LAB_000a9278;" if (parenthesized_expression "(*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0)" ( (binary_expression "*(int *)(pshdrs + uVar15 * 0x40 + 0x24) != 0" (pointer_expression "*(int *)(pshdrs + uVar15 * 0x40 + 0x24)" * (cast_expression "(int *)(pshdrs + uVar15 * 0x40 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar15 * 0x40 + 0x24)" ( (binary_expression "pshdrs + uVar15 * 0x40 + 0x24" (binary_expression "pshdrs + uVar15 * 0x40" identifier + (binary_expression "uVar15 * 0x40" identifier * number_literal)) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_000a9278;" goto statement_identifier ;)) (expression_statement "sd->symbol_names_size = sVar5;" (assignment_expression "sd->symbol_names_size = sVar5" (field_expression "sd->symbol_names_size" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n        pcVar12 = (char *)gettext("invalid symbol table name index: %u");\n        Object::error((Object *)this,pcVar12,uVar15);\n      }" else (compound_statement "{\n        pcVar12 = (char *)gettext("invalid symbol table name index: %u");\n        Object::error((Object *)this,pcVar12,uVar15);\n      }" { (expression_statement "pcVar12 = (char *)gettext("invalid symbol table name index: %u");" (assignment_expression "pcVar12 = (char *)gettext("invalid symbol table name index: %u")" identifier = (cast_expression "(char *)gettext("invalid symbol table name index: %u")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("invalid symbol table name index: %u")" identifier (argument_list "("invalid symbol table name index: %u")" ( (string_literal ""invalid symbol table name index: %u"" " string_content ") ))))) ;) (labeled_statement "Object::error((Object *)this,pcVar12,uVar15);" statement_identifier : (ERROR ":" :) (expression_statement "error((Object *)this,pcVar12,uVar15);" (call_expression "error((Object *)this,pcVar12,uVar15)" identifier (argument_list "((Object *)this,pcVar12,uVar15)" ( (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;)) }))) })) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void thunk_FUN_000a8fb0(int *param_1,int *param_2)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  bool bVar11;\n  int iStack_38;\n  \n  FUN_000978e0(param_1,param_1 + 0x24,param_2);\n  iVar9 = *(int *)(*param_2 + 8);\n  FUN_0009c330(param_1,iVar9);\n  uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);\n  iVar8 = param_1[0x2b];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  if (iVar8 != 0) {\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }\n  return;\n}\n\n" (function_definition "void thunk_FUN_000a8fb0(int *param_1,int *param_2)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  bool bVar11;\n  int iStack_38;\n  \n  FUN_000978e0(param_1,param_1 + 0x24,param_2);\n  iVar9 = *(int *)(*param_2 + 8);\n  FUN_0009c330(param_1,iVar9);\n  uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);\n  iVar8 = param_1[0x2b];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  if (iVar8 != 0) {\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "thunk_FUN_000a8fb0(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  bool bVar11;\n  int iStack_38;\n  \n  FUN_000978e0(param_1,param_1 + 0x24,param_2);\n  iVar9 = *(int *)(*param_2 + 8);\n  FUN_0009c330(param_1,iVar9);\n  uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);\n  iVar8 = param_1[0x2b];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  if (iVar8 != 0) {\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "int iStack_38;" primitive_type identifier ;) (expression_statement "FUN_000978e0(param_1,param_1 + 0x24,param_2);" (call_expression "FUN_000978e0(param_1,param_1 + 0x24,param_2)" identifier (argument_list "(param_1,param_1 + 0x24,param_2)" ( identifier , (binary_expression "param_1 + 0x24" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar9 = *(int *)(*param_2 + 8);" (assignment_expression "iVar9 = *(int *)(*param_2 + 8)" identifier = (pointer_expression "*(int *)(*param_2 + 8)" * (cast_expression "(int *)(*param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 8)" ( (binary_expression "*param_2 + 8" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "FUN_0009c330(param_1,iVar9);" (call_expression "FUN_0009c330(param_1,iVar9)" identifier (argument_list "(param_1,iVar9)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2)" identifier = (call_expression "(**(code **)(*param_1 + 0xf8))(param_1,param_2)" (parenthesized_expression "(**(code **)(*param_1 + 0xf8))" ( (pointer_expression "**(code **)(*param_1 + 0xf8)" * (pointer_expression "*(code **)(*param_1 + 0xf8)" * (cast_expression "(code **)(*param_1 + 0xf8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xf8)" ( (binary_expression "*param_1 + 0xf8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (expression_statement "iVar8 = param_1[0x2b];" (assignment_expression "iVar8 = param_1[0x2b]" identifier = (subscript_expression "param_1[0x2b]" identifier [ number_literal ])) ;) (expression_statement "param_2[3] = 0;" (assignment_expression "param_2[3] = 0" (subscript_expression "param_2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[4] = 0;" (assignment_expression "param_2[4] = 0" (subscript_expression "param_2[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[5] = 0;" (assignment_expression "param_2[5] = 0" (subscript_expression "param_2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[7] = 0;" (assignment_expression "param_2[7] = 0" (subscript_expression "param_2[7]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar8 != 0) {\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }" { (expression_statement "iVar8 = iVar8 * 0x40 + iVar9;" (assignment_expression "iVar8 = iVar8 * 0x40 + iVar9" identifier = (binary_expression "iVar8 * 0x40 + iVar9" (binary_expression "iVar8 * 0x40" identifier * number_literal) + identifier)) ;) (if_statement "if (*(int *)(iVar8 + 4) != 2) {\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }" if (parenthesized_expression "(*(int *)(iVar8 + 4) != 2)" ( (binary_expression "*(int *)(iVar8 + 4) != 2" (pointer_expression "*(int *)(iVar8 + 4)" * (cast_expression "(int *)(iVar8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }" { (expression_statement "FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);" (call_expression "FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1)" identifier (argument_list "("../../gold/object.cc",0x360,"base_read_symbols",uVar1)" ( (string_literal ""../../gold/object.cc"" " string_content ") , number_literal , (string_literal ""base_read_symbols"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar7 = param_1[0x38];" (assignment_expression "iVar7 = param_1[0x38]" identifier = (subscript_expression "param_1[0x38]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = *(uint *)(iVar8 + 0x2c);" (assignment_expression "uVar10 = *(uint *)(iVar8 + 0x2c)" identifier = (pointer_expression "*(uint *)(iVar8 + 0x2c)" * (cast_expression "(uint *)(iVar8 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "param_1[0x2c] = uVar10;" (assignment_expression "param_1[0x2c] = uVar10" (subscript_expression "param_1[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = iVar7 - param_1[0x37] >> 2;" (assignment_expression "iVar2 = iVar7 - param_1[0x37] >> 2" identifier = (binary_expression "iVar7 - param_1[0x37] >> 2" (binary_expression "iVar7 - param_1[0x37]" identifier - (subscript_expression "param_1[0x37]" identifier [ number_literal ])) >> number_literal)) ;) (expression_statement "uVar3 = iVar2 * -0x33333333;" (assignment_expression "uVar3 = iVar2 * -0x33333333" identifier = (binary_expression "iVar2 * -0x33333333" identifier * number_literal)) ;) (if_statement "if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }" if (parenthesized_expression "(uVar3 < uVar10)" ( (binary_expression "uVar3 < uVar10" identifier < identifier) )) (compound_statement "{\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }" { (expression_statement "FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);" (call_expression "FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333)" identifier (argument_list "(param_1 + 0x37,uVar10 + iVar2 * 0x33333333)" ( (binary_expression "param_1 + 0x37" identifier + number_literal) , (binary_expression "uVar10 + iVar2 * 0x33333333" identifier + (binary_expression "iVar2 * 0x33333333" identifier * number_literal)) ))) ;) }) (else_clause "else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }" else (if_statement "if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }" if (parenthesized_expression "((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2))" ( (binary_expression "(uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)" (parenthesized_expression "(uVar10 < uVar3)" ( (binary_expression "uVar10 < uVar3" identifier < identifier) )) && (parenthesized_expression "(iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)" ( (comma_expression "iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2" (assignment_expression "iVar2 = param_1[0x37] + uVar10 * 0x14" identifier = (binary_expression "param_1[0x37] + uVar10 * 0x14" (subscript_expression "param_1[0x37]" identifier [ number_literal ]) + (binary_expression "uVar10 * 0x14" identifier * number_literal))) , (comma_expression "iVar5 = iVar2, iVar7 != iVar2" (assignment_expression "iVar5 = iVar2" identifier = identifier) , (binary_expression "iVar7 != iVar2" identifier != identifier))) ))) )) (compound_statement "{\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }" { (do_statement "do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);" do (compound_statement "{\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      }" { (expression_statement "iVar6 = iVar5 + 0x14;" (assignment_expression "iVar6 = iVar5 + 0x14" identifier = (binary_expression "iVar5 + 0x14" identifier + number_literal)) ;) (expression_statement "FUN_000a8b90(iVar5);" (call_expression "FUN_000a8b90(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) }) while (parenthesized_expression "(iVar7 != iVar6)" ( (binary_expression "iVar7 != iVar6" identifier != identifier) )) ;) (expression_statement "param_1[0x38] = iVar2;" (assignment_expression "param_1[0x38] = iVar2" (subscript_expression "param_1[0x38]" identifier [ number_literal ]) = identifier) ;) })))) (expression_statement "uVar3 = *(uint *)(iVar8 + 0x18);" (assignment_expression "uVar3 = *(uint *)(iVar8 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar8 + 0x18)" * (cast_expression "(uint *)(iVar8 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar8 + 0x1c);" (assignment_expression "iVar7 = *(int *)(iVar8 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar8 + 0x1c)" * (cast_expression "(int *)(iVar8 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = uVar10 * 0x18;" (assignment_expression "uVar4 = uVar10 * 0x18" identifier = (binary_expression "uVar10 * 0x18" identifier * number_literal)) ;) (expression_statement "iStack_38 = *(int *)(iVar8 + 0x20);" (assignment_expression "iStack_38 = *(int *)(iVar8 + 0x20)" identifier = (pointer_expression "*(int *)(iVar8 + 0x20)" * (cast_expression "(int *)(iVar8 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(iVar8 + 0x24);" (assignment_expression "iVar2 = *(int *)(iVar8 + 0x24)" identifier = (pointer_expression "*(int *)(iVar8 + 0x24)" * (cast_expression "(int *)(iVar8 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 != 0) {\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }" { (labeled_statement "LAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);" statement_identifier : (expression_statement "FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);" (call_expression "FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2)" identifier (argument_list "("../../gold/gold.h",0xc0,"convert_types",iVar2)" ( (string_literal ""../../gold/gold.h"" " string_content ") , number_literal , (string_literal ""convert_types"" " string_content ") , identifier ))) ;)) })) (if_statement "if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }" if (parenthesized_expression "((char)uVar1 == '\0')" ( (binary_expression "(char)uVar1 == '\0'" (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }" { (expression_statement "bVar11 = CARRY4(uVar3,uVar4);" (assignment_expression "bVar11 = CARRY4(uVar3,uVar4)" identifier = (call_expression "CARRY4(uVar3,uVar4)" identifier (argument_list "(uVar3,uVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = uVar3 + uVar4;" (assignment_expression "uVar3 = uVar3 + uVar4" identifier = (binary_expression "uVar3 + uVar4" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;" (assignment_expression "iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11" identifier = (binary_expression "iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11" (binary_expression "iVar7 + ((int)uVar4 >> 0x1f)" identifier + (parenthesized_expression "((int)uVar4 >> 0x1f)" ( (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iStack_38 = iStack_38 + uVar10 * -0x18;" (assignment_expression "iStack_38 = iStack_38 + uVar10 * -0x18" identifier = (binary_expression "iStack_38 + uVar10 * -0x18" identifier + (binary_expression "uVar10 * -0x18" identifier * number_literal))) ;) })) (if_statement "if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }" if (parenthesized_expression "(iStack_38 != 0)" ( (binary_expression "iStack_38 != 0" identifier != number_literal) )) (compound_statement "{\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }" { (if_statement "if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }" if (parenthesized_expression "(param_1[7] == 0)" ( (binary_expression "param_1[7] == 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }" { (labeled_statement "LAB_000a9295:\n                    \n        FUN_000917c0();" statement_identifier : (expression_statement "FUN_000917c0();" (call_expression "FUN_000917c0()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);" (assignment_expression "iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0)" identifier = (call_expression "FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0)" identifier (argument_list "(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0)" ( (binary_expression "param_1[7] + 0x1c" (subscript_expression "param_1[7]" identifier [ number_literal ]) + number_literal) , (subscript_expression "param_1[8]" identifier [ number_literal ]) , (subscript_expression "param_1[9]" identifier [ number_literal ]) , identifier , identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "uVar10 = *(uint *)(iVar8 + 0x28);" (assignment_expression "uVar10 = *(uint *)(iVar8 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar8 + 0x28)" * (cast_expression "(uint *)(iVar8 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }" if (parenthesized_expression "(0xfeff < uVar10)" ( (binary_expression "0xfeff < uVar10" number_literal < identifier) )) (compound_statement "{\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }" { (expression_statement "FUN_0004dee0(param_1 + 0x24);" (call_expression "FUN_0004dee0(param_1 + 0x24)" identifier (argument_list "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))) ;) (expression_statement "uVar10 = uVar10 + param_1[0x29];" (assignment_expression "uVar10 = uVar10 + param_1[0x29]" identifier = (binary_expression "uVar10 + param_1[0x29]" identifier + (subscript_expression "param_1[0x29]" identifier [ number_literal ]))) ;) })) (if_statement "if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }" if (parenthesized_expression "(uVar10 < (uint)param_1[10])" ( (binary_expression "uVar10 < (uint)param_1[10]" identifier < (cast_expression "(uint)param_1[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) )) (compound_statement "{\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }" { (expression_statement "iVar9 = uVar10 * 0x40 + iVar9;" (assignment_expression "iVar9 = uVar10 * 0x40 + iVar9" identifier = (binary_expression "uVar10 * 0x40 + iVar9" (binary_expression "uVar10 * 0x40" identifier * number_literal) + identifier)) ;) (expression_statement "iVar8 = *(int *)(iVar9 + 4);" (assignment_expression "iVar8 = *(int *)(iVar9 + 4)" identifier = (pointer_expression "*(int *)(iVar9 + 4)" * (cast_expression "(int *)(iVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }" if (parenthesized_expression "(iVar8 != 3)" ( (binary_expression "iVar8 != 3" identifier != number_literal) )) (compound_statement "{\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }" { (expression_statement "uVar1 = gettext("symbol table name section has wrong type: %u");" (assignment_expression "uVar1 = gettext("symbol table name section has wrong type: %u")" identifier = (call_expression "gettext("symbol table name section has wrong type: %u")" identifier (argument_list "("symbol table name section has wrong type: %u")" ( (string_literal ""symbol table name section has wrong type: %u"" " string_content ") )))) ;) (expression_statement "FUN_00091980(param_1,uVar1,iVar8);" (call_expression "FUN_00091980(param_1,uVar1,iVar8)" identifier (argument_list "(param_1,uVar1,iVar8)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_1[7] == 0) goto LAB_000a9295;" if (parenthesized_expression "(param_1[7] == 0)" ( (binary_expression "param_1[7] == 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_000a9295;" goto statement_identifier ;)) (expression_statement "iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);" (assignment_expression "iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1)" identifier = (call_expression "FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1)" identifier (argument_list "(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1)" ( (binary_expression "param_1[7] + 0x1c" (subscript_expression "param_1[7]" identifier [ number_literal ]) + number_literal) , (subscript_expression "param_1[8]" identifier [ number_literal ]) , (subscript_expression "param_1[9]" identifier [ number_literal ]) , (pointer_expression "*(undefined4 *)(iVar9 + 0x18)" * (cast_expression "(undefined4 *)(iVar9 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x18)" ( (binary_expression "iVar9 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar9 + 0x1c)" * (cast_expression "(undefined4 *)(iVar9 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x1c)" ( (binary_expression "iVar9 + 0x1c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar9 + 0x20)" * (cast_expression "(undefined4 *)(iVar9 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x20)" ( (binary_expression "iVar9 + 0x20" identifier + number_literal) )))) , number_literal , number_literal )))) ;) (expression_statement "param_2[6] = iVar8;" (assignment_expression "param_2[6] = iVar8" (subscript_expression "param_2[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = *(int *)(iVar9 + 0x20);" (assignment_expression "iVar2 = *(int *)(iVar9 + 0x20)" identifier = (pointer_expression "*(int *)(iVar9 + 0x20)" * (cast_expression "(int *)(iVar9 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x20)" ( (binary_expression "iVar9 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "param_2[3] = iVar7;" (assignment_expression "param_2[3] = iVar7" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }" if (parenthesized_expression "((char)uVar1 != '\0')" ( (binary_expression "(char)uVar1 != '\0'" (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar10 = uVar4;\n        }" { (expression_statement "uVar10 = uVar4;" (assignment_expression "uVar10 = uVar4" identifier = identifier) ;) })) (expression_statement "param_2[4] = iStack_38;" (assignment_expression "param_2[4] = iStack_38" (subscript_expression "param_2[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[5] = uVar10;" (assignment_expression "param_2[5] = uVar10" (subscript_expression "param_2[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;" if (parenthesized_expression "(*(int *)(iVar9 + 0x24) != 0)" ( (binary_expression "*(int *)(iVar9 + 0x24) != 0" (pointer_expression "*(int *)(iVar9 + 0x24)" * (cast_expression "(int *)(iVar9 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x24)" ( (binary_expression "iVar9 + 0x24" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_000a9278;" goto statement_identifier ;)) (expression_statement "param_2[7] = iVar2;" (assignment_expression "param_2[7] = iVar2" (subscript_expression "param_2[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }" else (compound_statement "{\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }" { (expression_statement "uVar1 = gettext("invalid symbol table name index: %u");" (assignment_expression "uVar1 = gettext("invalid symbol table name index: %u")" identifier = (call_expression "gettext("invalid symbol table name index: %u")" identifier (argument_list "("invalid symbol table name index: %u")" ( (string_literal ""invalid symbol table name index: %u"" " string_content ") )))) ;) (expression_statement "FUN_00091980(param_1,uVar1,uVar10);" (call_expression "FUN_00091980(param_1,uVar1,uVar10)" identifier (argument_list "(param_1,uVar1,uVar10)" ( identifier , identifier , identifier ))) ;) }))) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - (subscript_expression IDENT [ LIT ])) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + (binary_expression IDENT * LIT)) ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT))) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }))) })) })) (return_statement return ;) })))
(function_definition "void thunk_FUN_000a8fb0(int *param_1,int *param_2)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  bool bVar11;\n  int iStack_38;\n  \n  FUN_000978e0(param_1,param_1 + 0x24,param_2);\n  iVar9 = *(int *)(*param_2 + 8);\n  FUN_0009c330(param_1,iVar9);\n  uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);\n  iVar8 = param_1[0x2b];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  if (iVar8 != 0) {\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "thunk_FUN_000a8fb0(int *param_1,int *param_2)" (identifier "thunk_FUN_000a8fb0") (parameter_list "(int *param_1,int *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  bool bVar11;\n  int iStack_38;\n  \n  FUN_000978e0(param_1,param_1 + 0x24,param_2);\n  iVar9 = *(int *)(*param_2 + 8);\n  FUN_0009c330(param_1,iVar9);\n  uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);\n  iVar8 = param_1[0x2b];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  if (iVar8 != 0) {\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "int iStack_38;" (primitive_type "int") (identifier "iStack_38") (; ";")) (expression_statement "FUN_000978e0(param_1,param_1 + 0x24,param_2);" (call_expression "FUN_000978e0(param_1,param_1 + 0x24,param_2)" (identifier "FUN_000978e0") (argument_list "(param_1,param_1 + 0x24,param_2)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "iVar9 = *(int *)(*param_2 + 8);" (assignment_expression "iVar9 = *(int *)(*param_2 + 8)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(*param_2 + 8)" (* "*") (cast_expression "(int *)(*param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 8)" (( "(") (binary_expression "*param_2 + 8" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "FUN_0009c330(param_1,iVar9);" (call_expression "FUN_0009c330(param_1,iVar9)" (identifier "FUN_0009c330") (argument_list "(param_1,iVar9)" (( "(") (identifier "param_1") (, ",") (identifier "iVar9") () ")"))) (; ";")) (expression_statement "uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2)" (identifier "uVar1") (= "=") (call_expression "(**(code **)(*param_1 + 0xf8))(param_1,param_2)" (parenthesized_expression "(**(code **)(*param_1 + 0xf8))" (( "(") (pointer_expression "**(code **)(*param_1 + 0xf8)" (* "*") (pointer_expression "*(code **)(*param_1 + 0xf8)" (* "*") (cast_expression "(code **)(*param_1 + 0xf8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xf8)" (( "(") (binary_expression "*param_1 + 0xf8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xf8")) () ")"))))) () ")")) (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "iVar8 = param_1[0x2b];" (assignment_expression "iVar8 = param_1[0x2b]" (identifier "iVar8") (= "=") (subscript_expression "param_1[0x2b]" (identifier "param_1") ([ "[") (number_literal "0x2b") (] "]"))) (; ";")) (expression_statement "param_2[3] = 0;" (assignment_expression "param_2[3] = 0" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[4] = 0;" (assignment_expression "param_2[4] = 0" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[5] = 0;" (assignment_expression "param_2[5] = 0" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[7] = 0;" (assignment_expression "param_2[7] = 0" (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar8 != 0) {\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar8 = iVar8 * 0x40 + iVar9;\n    if (*(int *)(iVar8 + 4) != 2) {\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }\n    iVar7 = param_1[0x38];\n    uVar10 = *(uint *)(iVar8 + 0x2c);\n    param_1[0x2c] = uVar10;\n    iVar2 = iVar7 - param_1[0x37] >> 2;\n    uVar3 = iVar2 * -0x33333333;\n    if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }\n    uVar3 = *(uint *)(iVar8 + 0x18);\n    iVar7 = *(int *)(iVar8 + 0x1c);\n    uVar4 = uVar10 * 0x18;\n    iStack_38 = *(int *)(iVar8 + 0x20);\n    iVar2 = *(int *)(iVar8 + 0x24);\n    if (iVar2 != 0) {\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }\n    if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }\n    if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }\n  }" ({ "{") (expression_statement "iVar8 = iVar8 * 0x40 + iVar9;" (assignment_expression "iVar8 = iVar8 * 0x40 + iVar9" (identifier "iVar8") (= "=") (binary_expression "iVar8 * 0x40 + iVar9" (binary_expression "iVar8 * 0x40" (identifier "iVar8") (* "*") (number_literal "0x40")) (+ "+") (identifier "iVar9"))) (; ";")) (if_statement "if (*(int *)(iVar8 + 4) != 2) {\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar8 + 4) != 2)" (( "(") (binary_expression "*(int *)(iVar8 + 4) != 2" (pointer_expression "*(int *)(iVar8 + 4)" (* "*") (cast_expression "(int *)(iVar8 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 4)" (( "(") (binary_expression "iVar8 + 4" (identifier "iVar8") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n                    \n      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);\n    }" ({ "{") (expression_statement "FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);" (call_expression "FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1)" (identifier "FUN_0005f0b0") (argument_list "("../../gold/object.cc",0x360,"base_read_symbols",uVar1)" (( "(") (string_literal ""../../gold/object.cc"" (" """) (string_content "../../gold/object.cc") (" """)) (, ",") (number_literal "0x360") (, ",") (string_literal ""base_read_symbols"" (" """) (string_content "base_read_symbols") (" """)) (, ",") (identifier "uVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar7 = param_1[0x38];" (assignment_expression "iVar7 = param_1[0x38]" (identifier "iVar7") (= "=") (subscript_expression "param_1[0x38]" (identifier "param_1") ([ "[") (number_literal "0x38") (] "]"))) (; ";")) (expression_statement "uVar10 = *(uint *)(iVar8 + 0x2c);" (assignment_expression "uVar10 = *(uint *)(iVar8 + 0x2c)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(iVar8 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar8 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x2c)" (( "(") (binary_expression "iVar8 + 0x2c" (identifier "iVar8") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "param_1[0x2c] = uVar10;" (assignment_expression "param_1[0x2c] = uVar10" (subscript_expression "param_1[0x2c]" (identifier "param_1") ([ "[") (number_literal "0x2c") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "iVar2 = iVar7 - param_1[0x37] >> 2;" (assignment_expression "iVar2 = iVar7 - param_1[0x37] >> 2" (identifier "iVar2") (= "=") (binary_expression "iVar7 - param_1[0x37] >> 2" (binary_expression "iVar7 - param_1[0x37]" (identifier "iVar7") (- "-") (subscript_expression "param_1[0x37]" (identifier "param_1") ([ "[") (number_literal "0x37") (] "]"))) (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "uVar3 = iVar2 * -0x33333333;" (assignment_expression "uVar3 = iVar2 * -0x33333333" (identifier "uVar3") (= "=") (binary_expression "iVar2 * -0x33333333" (identifier "iVar2") (* "*") (number_literal "-0x33333333"))) (; ";")) (if_statement "if (uVar3 < uVar10) {\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }\n    else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar10)" (( "(") (binary_expression "uVar3 < uVar10" (identifier "uVar3") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);\n    }" ({ "{") (expression_statement "FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);" (call_expression "FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333)" (identifier "FUN_000a8e00") (argument_list "(param_1 + 0x37,uVar10 + iVar2 * 0x33333333)" (( "(") (binary_expression "param_1 + 0x37" (identifier "param_1") (+ "+") (number_literal "0x37")) (, ",") (binary_expression "uVar10 + iVar2 * 0x33333333" (identifier "uVar10") (+ "+") (binary_expression "iVar2 * 0x33333333" (identifier "iVar2") (* "*") (number_literal "0x33333333"))) () ")"))) (; ";")) (} "}")) (else_clause "else if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }" (else "else") (if_statement "if ((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }" (if "if") (parenthesized_expression "((uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2))" (( "(") (binary_expression "(uVar10 < uVar3) &&\n            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)" (parenthesized_expression "(uVar10 < uVar3)" (( "(") (binary_expression "uVar10 < uVar3" (identifier "uVar10") (< "<") (identifier "uVar3")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)" (( "(") (comma_expression "iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2" (assignment_expression "iVar2 = param_1[0x37] + uVar10 * 0x14" (identifier "iVar2") (= "=") (binary_expression "param_1[0x37] + uVar10 * 0x14" (subscript_expression "param_1[0x37]" (identifier "param_1") ([ "[") (number_literal "0x37") (] "]")) (+ "+") (binary_expression "uVar10 * 0x14" (identifier "uVar10") (* "*") (number_literal "0x14")))) (, ",") (comma_expression "iVar5 = iVar2, iVar7 != iVar2" (assignment_expression "iVar5 = iVar2" (identifier "iVar5") (= "=") (identifier "iVar2")) (, ",") (binary_expression "iVar7 != iVar2" (identifier "iVar7") (!= "!=") (identifier "iVar2")))) () ")"))) () ")")) (compound_statement "{\n      do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);\n      param_1[0x38] = iVar2;\n    }" ({ "{") (do_statement "do {\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      } while (iVar7 != iVar6);" (do "do") (compound_statement "{\n        iVar6 = iVar5 + 0x14;\n        FUN_000a8b90(iVar5);\n        iVar5 = iVar6;\n      }" ({ "{") (expression_statement "iVar6 = iVar5 + 0x14;" (assignment_expression "iVar6 = iVar5 + 0x14" (identifier "iVar6") (= "=") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14"))) (; ";")) (expression_statement "FUN_000a8b90(iVar5);" (call_expression "FUN_000a8b90(iVar5)" (identifier "FUN_000a8b90") (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" (identifier "iVar5") (= "=") (identifier "iVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar7 != iVar6)" (( "(") (binary_expression "iVar7 != iVar6" (identifier "iVar7") (!= "!=") (identifier "iVar6")) () ")")) (; ";")) (expression_statement "param_1[0x38] = iVar2;" (assignment_expression "param_1[0x38] = iVar2" (subscript_expression "param_1[0x38]" (identifier "param_1") ([ "[") (number_literal "0x38") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (} "}"))))) (expression_statement "uVar3 = *(uint *)(iVar8 + 0x18);" (assignment_expression "uVar3 = *(uint *)(iVar8 + 0x18)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar8 + 0x18)" (* "*") (cast_expression "(uint *)(iVar8 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x18)" (( "(") (binary_expression "iVar8 + 0x18" (identifier "iVar8") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar8 + 0x1c);" (assignment_expression "iVar7 = *(int *)(iVar8 + 0x1c)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar8 + 0x1c)" (* "*") (cast_expression "(int *)(iVar8 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x1c)" (( "(") (binary_expression "iVar8 + 0x1c" (identifier "iVar8") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "uVar4 = uVar10 * 0x18;" (assignment_expression "uVar4 = uVar10 * 0x18" (identifier "uVar4") (= "=") (binary_expression "uVar10 * 0x18" (identifier "uVar10") (* "*") (number_literal "0x18"))) (; ";")) (expression_statement "iStack_38 = *(int *)(iVar8 + 0x20);" (assignment_expression "iStack_38 = *(int *)(iVar8 + 0x20)" (identifier "iStack_38") (= "=") (pointer_expression "*(int *)(iVar8 + 0x20)" (* "*") (cast_expression "(int *)(iVar8 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x20)" (( "(") (binary_expression "iVar8 + 0x20" (identifier "iVar8") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(iVar8 + 0x24);" (assignment_expression "iVar2 = *(int *)(iVar8 + 0x24)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar8 + 0x24)" (* "*") (cast_expression "(int *)(iVar8 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x24)" (( "(") (binary_expression "iVar8 + 0x24" (identifier "iVar8") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if (iVar2 != 0) {\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);\n    }" ({ "{") (labeled_statement "LAB_000a9278:\n                    \n      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);" (statement_identifier "LAB_000a9278") (: ":") (expression_statement "FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);" (call_expression "FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2)" (identifier "FUN_0005f0b0") (argument_list "("../../gold/gold.h",0xc0,"convert_types",iVar2)" (( "(") (string_literal ""../../gold/gold.h"" (" """) (string_content "../../gold/gold.h") (" """)) (, ",") (number_literal "0xc0") (, ",") (string_literal ""convert_types"" (" """) (string_content "convert_types") (" """)) (, ",") (identifier "iVar2") () ")"))) (; ";"))) (} "}"))) (if_statement "if ((char)uVar1 == '\0') {\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }" (if "if") (parenthesized_expression "((char)uVar1 == '\0')" (( "(") (binary_expression "(char)uVar1 == '\0'" (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      bVar11 = CARRY4(uVar3,uVar4);\n      uVar3 = uVar3 + uVar4;\n      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;\n      iStack_38 = iStack_38 + uVar10 * -0x18;\n    }" ({ "{") (expression_statement "bVar11 = CARRY4(uVar3,uVar4);" (assignment_expression "bVar11 = CARRY4(uVar3,uVar4)" (identifier "bVar11") (= "=") (call_expression "CARRY4(uVar3,uVar4)" (identifier "CARRY4") (argument_list "(uVar3,uVar4)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar4") () ")")))) (; ";")) (expression_statement "uVar3 = uVar3 + uVar4;" (assignment_expression "uVar3 = uVar3 + uVar4" (identifier "uVar3") (= "=") (binary_expression "uVar3 + uVar4" (identifier "uVar3") (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;" (assignment_expression "iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11" (identifier "iVar7") (= "=") (binary_expression "iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11" (binary_expression "iVar7 + ((int)uVar4 >> 0x1f)" (identifier "iVar7") (+ "+") (parenthesized_expression "((int)uVar4 >> 0x1f)" (( "(") (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x1f")) () ")"))) (+ "+") (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")))) (; ";")) (expression_statement "iStack_38 = iStack_38 + uVar10 * -0x18;" (assignment_expression "iStack_38 = iStack_38 + uVar10 * -0x18" (identifier "iStack_38") (= "=") (binary_expression "iStack_38 + uVar10 * -0x18" (identifier "iStack_38") (+ "+") (binary_expression "uVar10 * -0x18" (identifier "uVar10") (* "*") (number_literal "-0x18")))) (; ";")) (} "}"))) (if_statement "if (iStack_38 != 0) {\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }" (if "if") (parenthesized_expression "(iStack_38 != 0)" (( "(") (binary_expression "iStack_38 != 0" (identifier "iStack_38") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }\n      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);\n      uVar10 = *(uint *)(iVar8 + 0x28);\n      if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }\n      if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }\n    }" ({ "{") (if_statement "if (param_1[7] == 0) {\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }" (if "if") (parenthesized_expression "(param_1[7] == 0)" (( "(") (binary_expression "param_1[7] == 0" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000a9295:\n                    \n        FUN_000917c0();\n      }" ({ "{") (labeled_statement "LAB_000a9295:\n                    \n        FUN_000917c0();" (statement_identifier "LAB_000a9295") (: ":") (expression_statement "FUN_000917c0();" (call_expression "FUN_000917c0()" (identifier "FUN_000917c0") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (expression_statement "iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);" (assignment_expression "iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0)" (identifier "iVar7") (= "=") (call_expression "FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0)" (identifier "FUN_0005dc00") (argument_list "(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0)" (( "(") (binary_expression "param_1[7] + 0x1c" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (+ "+") (number_literal "0x1c")) (, ",") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (, ",") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (, ",") (identifier "uVar3") (, ",") (identifier "iVar7") (, ",") (identifier "iStack_38") (, ",") (number_literal "1") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar10 = *(uint *)(iVar8 + 0x28);" (assignment_expression "uVar10 = *(uint *)(iVar8 + 0x28)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(iVar8 + 0x28)" (* "*") (cast_expression "(uint *)(iVar8 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x28)" (( "(") (binary_expression "iVar8 + 0x28" (identifier "iVar8") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (0xfeff < uVar10) {\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }" (if "if") (parenthesized_expression "(0xfeff < uVar10)" (( "(") (binary_expression "0xfeff < uVar10" (number_literal "0xfeff") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n        FUN_0004dee0(param_1 + 0x24);\n        uVar10 = uVar10 + param_1[0x29];\n      }" ({ "{") (expression_statement "FUN_0004dee0(param_1 + 0x24);" (call_expression "FUN_0004dee0(param_1 + 0x24)" (identifier "FUN_0004dee0") (argument_list "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")"))) (; ";")) (expression_statement "uVar10 = uVar10 + param_1[0x29];" (assignment_expression "uVar10 = uVar10 + param_1[0x29]" (identifier "uVar10") (= "=") (binary_expression "uVar10 + param_1[0x29]" (identifier "uVar10") (+ "+") (subscript_expression "param_1[0x29]" (identifier "param_1") ([ "[") (number_literal "0x29") (] "]")))) (; ";")) (} "}"))) (if_statement "if (uVar10 < (uint)param_1[10]) {\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }\n      else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }" (if "if") (parenthesized_expression "(uVar10 < (uint)param_1[10])" (( "(") (binary_expression "uVar10 < (uint)param_1[10]" (identifier "uVar10") (< "<") (cast_expression "(uint)param_1[10]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) () ")")) (compound_statement "{\n        iVar9 = uVar10 * 0x40 + iVar9;\n        iVar8 = *(int *)(iVar9 + 4);\n        if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }\n        if (param_1[7] == 0) goto LAB_000a9295;\n        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);\n        param_2[6] = iVar8;\n        iVar2 = *(int *)(iVar9 + 0x20);\n        param_2[3] = iVar7;\n        uVar10 = 0;\n        if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }\n        param_2[4] = iStack_38;\n        param_2[5] = uVar10;\n        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;\n        param_2[7] = iVar2;\n      }" ({ "{") (expression_statement "iVar9 = uVar10 * 0x40 + iVar9;" (assignment_expression "iVar9 = uVar10 * 0x40 + iVar9" (identifier "iVar9") (= "=") (binary_expression "uVar10 * 0x40 + iVar9" (binary_expression "uVar10 * 0x40" (identifier "uVar10") (* "*") (number_literal "0x40")) (+ "+") (identifier "iVar9"))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar9 + 4);" (assignment_expression "iVar8 = *(int *)(iVar9 + 4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar9 + 4)" (* "*") (cast_expression "(int *)(iVar9 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar8 != 3) {\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }" (if "if") (parenthesized_expression "(iVar8 != 3)" (( "(") (binary_expression "iVar8 != 3" (identifier "iVar8") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n          uVar1 = gettext("symbol table name section has wrong type: %u");\n          FUN_00091980(param_1,uVar1,iVar8);\n          return;\n        }" ({ "{") (expression_statement "uVar1 = gettext("symbol table name section has wrong type: %u");" (assignment_expression "uVar1 = gettext("symbol table name section has wrong type: %u")" (identifier "uVar1") (= "=") (call_expression "gettext("symbol table name section has wrong type: %u")" (identifier "gettext") (argument_list "("symbol table name section has wrong type: %u")" (( "(") (string_literal ""symbol table name section has wrong type: %u"" (" """) (string_content "symbol table name section has wrong type: %u") (" """)) () ")")))) (; ";")) (expression_statement "FUN_00091980(param_1,uVar1,iVar8);" (call_expression "FUN_00091980(param_1,uVar1,iVar8)" (identifier "FUN_00091980") (argument_list "(param_1,uVar1,iVar8)" (( "(") (identifier "param_1") (, ",") (identifier "uVar1") (, ",") (identifier "iVar8") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_1[7] == 0) goto LAB_000a9295;" (if "if") (parenthesized_expression "(param_1[7] == 0)" (( "(") (binary_expression "param_1[7] == 0" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a9295;" (goto "goto") (statement_identifier "LAB_000a9295") (; ";"))) (expression_statement "iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);" (assignment_expression "iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1)" (identifier "iVar8") (= "=") (call_expression "FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1)" (identifier "FUN_0005dc00") (argument_list "(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),\n                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1)" (( "(") (binary_expression "param_1[7] + 0x1c" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (+ "+") (number_literal "0x1c")) (, ",") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (, ",") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (, ",") (pointer_expression "*(undefined4 *)(iVar9 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x18)" (( "(") (binary_expression "iVar9 + 0x18" (identifier "iVar9") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar9 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x1c)" (( "(") (binary_expression "iVar9 + 0x1c" (identifier "iVar9") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar9 + 0x20)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x20)" (( "(") (binary_expression "iVar9 + 0x20" (identifier "iVar9") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "param_2[6] = iVar8;" (assignment_expression "param_2[6] = iVar8" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "iVar2 = *(int *)(iVar9 + 0x20);" (assignment_expression "iVar2 = *(int *)(iVar9 + 0x20)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar9 + 0x20)" (* "*") (cast_expression "(int *)(iVar9 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x20)" (( "(") (binary_expression "iVar9 + 0x20" (identifier "iVar9") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "param_2[3] = iVar7;" (assignment_expression "param_2[3] = iVar7" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((char)uVar1 != '\0') {\n          uVar10 = uVar4;\n        }" (if "if") (parenthesized_expression "((char)uVar1 != '\0')" (( "(") (binary_expression "(char)uVar1 != '\0'" (cast_expression "(char)uVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar1")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          uVar10 = uVar4;\n        }" ({ "{") (expression_statement "uVar10 = uVar4;" (assignment_expression "uVar10 = uVar4" (identifier "uVar10") (= "=") (identifier "uVar4")) (; ";")) (} "}"))) (expression_statement "param_2[4] = iStack_38;" (assignment_expression "param_2[4] = iStack_38" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iStack_38")) (; ";")) (expression_statement "param_2[5] = uVar10;" (assignment_expression "param_2[5] = uVar10" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;" (if "if") (parenthesized_expression "(*(int *)(iVar9 + 0x24) != 0)" (( "(") (binary_expression "*(int *)(iVar9 + 0x24) != 0" (pointer_expression "*(int *)(iVar9 + 0x24)" (* "*") (cast_expression "(int *)(iVar9 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x24)" (( "(") (binary_expression "iVar9 + 0x24" (identifier "iVar9") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a9278;" (goto "goto") (statement_identifier "LAB_000a9278") (; ";"))) (expression_statement "param_2[7] = iVar2;" (assignment_expression "param_2[7] = iVar2" (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (} "}")) (else_clause "else {\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }" (else "else") (compound_statement "{\n        uVar1 = gettext("invalid symbol table name index: %u");\n        FUN_00091980(param_1,uVar1,uVar10);\n      }" ({ "{") (expression_statement "uVar1 = gettext("invalid symbol table name index: %u");" (assignment_expression "uVar1 = gettext("invalid symbol table name index: %u")" (identifier "uVar1") (= "=") (call_expression "gettext("invalid symbol table name index: %u")" (identifier "gettext") (argument_list "("invalid symbol table name index: %u")" (( "(") (string_literal ""invalid symbol table name index: %u"" (" """) (string_content "invalid symbol table name index: %u") (" """)) () ")")))) (; ";")) (expression_statement "FUN_00091980(param_1,uVar1,uVar10);" (call_expression "FUN_00091980(param_1,uVar1,uVar10)" (identifier "FUN_00091980") (argument_list "(param_1,uVar1,uVar10)" (( "(") (identifier "param_1") (, ",") (identifier "uVar1") (, ",") (identifier "uVar10") () ")"))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: void do_read_symbols(Sized_relobj_file<64,_false> * this,
   Read_symbols_data * sd) */

void __thiscall
var_8::Sized_relobj_file<64,var_3>::do_read_symbols
          (Sized_relobj_file<64,var_3> *this,type_7 *sd)

{
  var_1<64> *var_17;
  type_1 *var_6;
  var_1<64> *var_16;
  type_2 var_15;
  type_3 *var_23;
  type_4 sVar5;
  int iVar6;
  int var_11;
  type_5 var_12;
  type_5 var_21;
  type_6 *pFVar10;
  type_6 *pFVar11;
  char *pcVar12;
  type_5 var_13;
  var_1<64> *var_18;
  var_1<64> *var_19;
  type_5 var_5;
  bool bVar16;
  type_7 *__in_chrg;
  type_8 *in_stack_ffffffc4;
  type_4 var_22;
  
  Object::var_2<64,var_3>((type_8 *)this,&this->elf_file_,sd);
  var_6 = sd->section_headers->data_;
  var_4(this,var_6);
  __in_chrg = sd;
  iVar6 = (*(this->super_Sized_relobj<64,var_3>).super_Relobj.super_Object._vptr_Object[0x3e])
                    (this);
  var_5 = this->symtab_shndx_;
  sd->symbols = (type_6 *)0x0;
  sd->symbols_size = 0;
  sd->external_symbols_offset = 0;
  sd->symbol_names = (type_6 *)0x0;
  sd->symbol_names_size = 0;
  if (var_5 != 0) {
    if (*(int *)(var_6 + var_5 * 0x40 + 4) != 2) {
                    /* WARNING: Subroutine does not return */
      var_7("../../gold/object.cc",0x360,"base_read_symbols");
    }
    var_16 = (this->local_values_).
             super__Vector_base<var_8::var_1<64>,var_9::allocator<var_8::var_1<64>var_10>var_10>.
             _M_impl._M_finish;
    var_15 = (this->local_values_).
             super__Vector_base<var_8::var_1<64>,var_9::allocator<var_8::var_1<64>var_10>var_10>.
             _M_impl._M_start;
    var_13 = *(type_5 *)(var_6 + var_5 * 0x40 + 0x2c);
    this->local_symbol_count_ = var_13;
    var_11 = (int)var_16 - (int)var_15 >> 2;
    var_12 = var_11 * -0x33333333;
    if (var_12 < var_13) {
      std::vector<var_8::var_1<64>,var_9::allocator<var_8::var_1<64>var_10>var_10>::
      var_14(&this->local_values_,var_13 + var_11 * 0x33333333);
    }
    else if ((var_13 < var_12) && (var_17 = var_15 + var_13, var_18 = var_17, var_16 != var_17)) {
      do {
        var_19 = var_18 + 1;
        var_1<64>::~var_1(var_18,(int)__in_chrg);
        var_18 = var_19;
      } while (var_16 != var_19);
      (this->local_values_).
      super__Vector_base<var_8::var_1<64>,var_9::allocator<var_8::var_1<64>var_10>var_10>._M_impl.
      _M_finish = var_17;
    }
    var_12 = *(type_5 *)(var_6 + var_5 * 0x40 + 0x18);
    var_11 = *(int *)(var_6 + var_5 * 0x40 + 0x1c);
    var_21 = var_13 * 0x18;
    var_22 = *(type_4 *)(var_6 + var_5 * 0x40 + 0x20);
    if (*(int *)(var_6 + var_5 * 0x40 + 0x24) != 0) {
LAB_000a9278:
                    /* WARNING: Subroutine does not return */
      var_7("../../gold/gold.h",0xc0,"convert_types");
    }
    if ((char)iVar6 == '\0') {
      bVar16 = var_20(var_12,var_21);
      var_12 = var_12 + var_21;
      var_11 = var_11 + ((int)var_21 >> 0x1f) + (type_5)bVar16;
      var_22 = var_22 + var_13 * -0x18;
    }
    if (var_22 != 0) {
      var_23 = (this->super_Sized_relobj<64,var_3>).super_Relobj.super_Object.input_file_;
      if (var_23 == (type_3 *)0x0) {
LAB_000a9295:
                    /* WARNING: Subroutine does not return */
        Object::var_24(in_stack_ffffffc4);
      }
      pFVar10 = File_read::var_25
                          (&var_23->file_,
                           (this->super_Sized_relobj<64,var_3>).super_Relobj.super_Object.offset_,
                           var_26(var_11,var_12),var_22,true,false);
      var_5 = *(type_5 *)(var_6 + var_5 * 0x40 + 0x28);
      if (0xfeff < var_5) {
        elfcpp::Elf_file<64,var_3,_gold::type_8>::var_27(&this->elf_file_);
        var_5 = var_5 + (this->elf_file_).large_shndx_offset_;
      }
      if (var_5 < (this->super_Sized_relobj<64,var_3>).super_Relobj.super_Object.shnum_) {
        var_11 = *(int *)(var_6 + var_5 * 0x40 + 4);
        if (var_11 != 3) {
          pcVar12 = (char *)var_28("symbol table name section has wrong type: %u");
          Object::var_29((type_8 *)this,pcVar12,var_11);
          return;
        }
        var_23 = (this->super_Sized_relobj<64,var_3>).super_Relobj.super_Object.input_file_;
        if (var_23 == (type_3 *)0x0) goto LAB_000a9295;
        pFVar11 = File_read::var_25
                            (&var_23->file_,
                             (this->super_Sized_relobj<64,var_3>).super_Relobj.super_Object.offset_
                             ,*(type_9 *)(var_6 + var_5 * 0x40 + 0x18),
                             *(type_4 *)(var_6 + var_5 * 0x40 + 0x20),false,true);
        sd->symbol_names = pFVar11;
        sVar5 = *(type_4 *)(var_6 + var_5 * 0x40 + 0x20);
        sd->symbols = pFVar10;
        var_13 = 0;
        if ((char)iVar6 != '\0') {
          var_13 = var_21;
        }
        sd->symbols_size = var_22;
        sd->external_symbols_offset = var_13;
        if (*(int *)(var_6 + var_5 * 0x40 + 0x24) != 0) goto LAB_000a9278;
        sd->symbol_names_size = sVar5;
      }
      else {
        pcVar12 = (char *)var_28("invalid symbol table name index: %u");
        Object::var_29((type_8 *)this,pcVar12,var_5);
      }
    }
  }
  return;
}


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

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

void MASKED(int *param_1,int *param_2)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  bool bVar11;
  int iStack_38;
  
  FUN_000978e0(param_1,param_1 + 0x24,param_2);
  iVar9 = *(int *)(*param_2 + 8);
  FUN_0009c330(param_1,iVar9);
  uVar1 = (**(code **)(*param_1 + 0xf8))(param_1,param_2);
  iVar8 = param_1[0x2b];
  param_2[3] = 0;
  param_2[4] = 0;
  param_2[5] = 0;
  param_2[6] = 0;
  param_2[7] = 0;
  if (iVar8 != 0) {
    iVar8 = iVar8 * 0x40 + iVar9;
    if (*(int *)(iVar8 + 4) != 2) {
                    /* WARNING: Subroutine does not return */
      FUN_0005f0b0("../../gold/object.cc",0x360,"base_read_symbols",uVar1);
    }
    iVar7 = param_1[0x38];
    uVar10 = *(uint *)(iVar8 + 0x2c);
    param_1[0x2c] = uVar10;
    iVar2 = iVar7 - param_1[0x37] >> 2;
    uVar3 = iVar2 * -0x33333333;
    if (uVar3 < uVar10) {
      FUN_000a8e00(param_1 + 0x37,uVar10 + iVar2 * 0x33333333);
    }
    else if ((uVar10 < uVar3) &&
            (iVar2 = param_1[0x37] + uVar10 * 0x14, iVar5 = iVar2, iVar7 != iVar2)) {
      do {
        iVar6 = iVar5 + 0x14;
        FUN_000a8b90(iVar5);
        iVar5 = iVar6;
      } while (iVar7 != iVar6);
      param_1[0x38] = iVar2;
    }
    uVar3 = *(uint *)(iVar8 + 0x18);
    iVar7 = *(int *)(iVar8 + 0x1c);
    uVar4 = uVar10 * 0x18;
    iStack_38 = *(int *)(iVar8 + 0x20);
    iVar2 = *(int *)(iVar8 + 0x24);
    if (iVar2 != 0) {
LAB_000a9278:
                    /* WARNING: Subroutine does not return */
      FUN_0005f0b0("../../gold/gold.h",0xc0,"convert_types",iVar2);
    }
    if ((char)uVar1 == '\0') {
      bVar11 = CARRY4(uVar3,uVar4);
      uVar3 = uVar3 + uVar4;
      iVar7 = iVar7 + ((int)uVar4 >> 0x1f) + (uint)bVar11;
      iStack_38 = iStack_38 + uVar10 * -0x18;
    }
    if (iStack_38 != 0) {
      if (param_1[7] == 0) {
LAB_000a9295:
                    /* WARNING: Subroutine does not return */
        FUN_000917c0();
      }
      iVar7 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],uVar3,iVar7,iStack_38,1,0);
      uVar10 = *(uint *)(iVar8 + 0x28);
      if (0xfeff < uVar10) {
        FUN_0004dee0(param_1 + 0x24);
        uVar10 = uVar10 + param_1[0x29];
      }
      if (uVar10 < (uint)param_1[10]) {
        iVar9 = uVar10 * 0x40 + iVar9;
        iVar8 = *(int *)(iVar9 + 4);
        if (iVar8 != 3) {
          uVar1 = gettext("symbol table name section has wrong type: %u");
          FUN_00091980(param_1,uVar1,iVar8);
          return;
        }
        if (param_1[7] == 0) goto LAB_000a9295;
        iVar8 = FUN_0005dc00(param_1[7] + 0x1c,param_1[8],param_1[9],*(undefined4 *)(iVar9 + 0x18),
                             *(undefined4 *)(iVar9 + 0x1c),*(undefined4 *)(iVar9 + 0x20),0,1);
        param_2[6] = iVar8;
        iVar2 = *(int *)(iVar9 + 0x20);
        param_2[3] = iVar7;
        uVar10 = 0;
        if ((char)uVar1 != '\0') {
          uVar10 = uVar4;
        }
        param_2[4] = iStack_38;
        param_2[5] = uVar10;
        if (*(int *)(iVar9 + 0x24) != 0) goto LAB_000a9278;
        param_2[7] = iVar2;
      }
      else {
        uVar1 = gettext("invalid symbol table name index: %u");
        FUN_00091980(param_1,uVar1,uVar10);
      }
    }
  }
  return;
}

