
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void add_symbols(Lib_group * this, Symbol_table * symtab, Layout *
   layout, Input_objects * input_objects) */

void __thiscall
gold::Lib_group::add_symbols
          (Lib_group *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects)

{
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar1;
  Object *pOVar2;
  bool bVar3;
  int iVar4;
  Read_symbols_data *this_00;
  pointer pAVar5;
  pointer pAVar6;
  Archive_member *member;
  Task *in_stack_ffffff98;
  uint local_48;
  string why;
  
  pAVar6 = (this->members_).
           super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.
           _M_finish;
  pAVar5 = (this->members_).
           super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.
           _M_start;
  total_lib_groups = total_lib_groups + 1;
  total_members = total_members + ((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555;
  paVar1 = &why.field_2;
  do {
    local_48 = 0;
    bVar3 = false;
LAB_00195018:
    if (local_48 < (uint)(((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555)) {
      member = pAVar5 + local_48;
      pOVar2 = member->obj_;
      why._M_string_length = 0;
      why.field_2._M_local_buf[0] = '\0';
      why._M_dataplus._M_p = (pointer)paVar1;
      if (pOVar2 == (Object *)0x0) {
        if (member->sd_ != (Read_symbols_data *)0x0) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");
        }
      }
      else {
        this_00 = member->sd_;
        if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {
                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */
          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);
          if (iVar4 != 1) {
            local_48 = local_48 + 1;
            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)why._M_dataplus._M_p != paVar1) {
              operator_delete(why._M_dataplus._M_p);
            }
            pAVar5 = (this->members_).
                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>
                     ._M_impl._M_start;
            pAVar6 = (this->members_).
                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>
                     ._M_impl._M_finish;
            goto LAB_00195018;
          }
          include_member(this,symtab,layout,input_objects,member);
          bVar3 = true;
          pAVar5 = (this->members_).
                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.
                   _M_impl._M_start;
          pAVar6 = (this->members_).
                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.
                   _M_impl._M_finish;
          member = pAVar5 + local_48;
        }
        else {
          if (pOVar2->input_file_ == (Input_file *)0x0) {
LAB_001951b0:
            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);
            in_stack_ffffff98 = (Task *)0x40;
            operator_delete(member->sd_,0x40);
          }
          else {
            in_stack_ffffff98 = (this->super_Library_base).task_;
            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);
            this_00 = member->sd_;
            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;
          }
          if (pOVar2->input_file_ != (Input_file *)0x0) {
            in_stack_ffffff98 = (this->super_Library_base).task_;
            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);
          }
          pAVar5 = (this->members_).
                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.
                   _M_impl._M_start;
          pAVar6 = (this->members_).
                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.
                   _M_impl._M_finish;
          member = pAVar5 + local_48;
        }
      }
      member->obj_ = pAVar6[-1].obj_;
      member->sd_ = pAVar6[-1].sd_;
      member->arg_serial_ = pAVar6[-1].arg_serial_;
      (this->members_).
      super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.
      _M_finish = pAVar6 + -1;
      pAVar6 = pAVar6 + -1;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)why._M_dataplus._M_p != paVar1) {
        operator_delete(why._M_dataplus._M_p);
        pAVar5 = (this->members_).
                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.
                 _M_impl._M_start;
        pAVar6 = (this->members_).
                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.
                 _M_impl._M_finish;
      }
      goto LAB_00195018;
    }
    if (!bVar3) {
      return;
    }
  } while( true );
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void FUN_00194fc0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  bool bVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  uint local_48;
  undefined1 *local_34;
  undefined4 local_30;
  undefined1 local_2c [28];
  
  iVar3 = *(int *)(param_1 + 0x10);
  iVar4 = *(int *)(param_1 + 0xc);
  DAT_0039626c = DAT_0039626c + 1;
  DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;
  do {
    local_48 = 0;
    bVar2 = false;
LAB_00195018:
    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {
      iVar6 = local_48 * 0xc;
      piVar5 = (int *)(iVar4 + iVar6);
      piVar1 = (int *)*piVar5;
      local_30 = 0;
      local_2c[0] = 0;
      local_34 = local_2c;
      if (piVar1 == (int *)0x0) {
        if (piVar5[1] != 0) {
                    /* WARNING: Subroutine does not return */
          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");
        }
      }
      else {
        iVar3 = piVar5[1];
        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {
                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */
          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);
          if (iVar3 != 1) {
            local_48 = local_48 + 1;
            if (local_34 != local_2c) {
              FUN_001e6db0(local_34);
            }
            iVar4 = *(int *)(param_1 + 0xc);
            iVar3 = *(int *)(param_1 + 0x10);
            goto LAB_00195018;
          }
          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);
          bVar2 = true;
          iVar4 = *(int *)(param_1 + 0xc);
          iVar3 = *(int *)(param_1 + 0x10);
          piVar5 = (int *)(iVar4 + iVar6);
        }
        else {
          if (piVar1[7] == 0) {
LAB_001951b0:
            FUN_000b1760(iVar3);
            FUN_001e6d90(piVar5[1],0x40);
          }
          else {
            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));
            iVar3 = piVar5[1];
            if (iVar3 != 0) goto LAB_001951b0;
          }
          if (piVar1[7] != 0) {
            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));
          }
          iVar4 = *(int *)(param_1 + 0xc);
          iVar3 = *(int *)(param_1 + 0x10);
          piVar5 = (int *)(iVar4 + iVar6);
        }
      }
      *piVar5 = *(int *)(iVar3 + -0xc);
      piVar5[1] = *(int *)(iVar3 + -8);
      piVar5[2] = *(int *)(iVar3 + -4);
      *(int *)(param_1 + 0x10) = iVar3 + -0xc;
      iVar3 = iVar3 + -0xc;
      if (local_34 != local_2c) {
        FUN_001e6db0(local_34);
        iVar4 = *(int *)(param_1 + 0xc);
        iVar3 = *(int *)(param_1 + 0x10);
      }
      goto LAB_00195018;
    }
    if (!bVar2) {
      return;
    }
  } while( true );
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
CALL 0x000559ea
ADD ESI,0x1fa036
PUSH EBX
SUB ESP,0x4c
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EAX + 0x10]
MOV ECX,dword ptr [EAX + 0xc]
ADD dword ptr [ESI + 0x726c],0x1
MOV EAX,EDX
MOV dword ptr [EBP + -0x48],ESI
SUB EAX,ECX
SAR EAX,0x2
IMUL EAX,EAX,-0x55555555
ADD dword ptr [ESI + 0x7268],EAX
LEA EAX,[EBP + -0x28]
MOV dword ptr [EBP + -0x40],EAX
LEA EAX,[EBP + -0x30]
MOV dword ptr [EBP + -0x44],0x0
MOV byte ptr [EBP + -0x4d],0x0
MOV dword ptr [EBP + -0x4c],EAX
LEA ESI,[ESI]
MOV EAX,EDX
MOV EBX,dword ptr [EBP + -0x44]
SUB EAX,ECX
SAR EAX,0x2
IMUL EAX,EAX,-0x55555555
CMP EBX,EAX
JNC 0x001951d8
LEA EDI,[EBX + EBX*0x2]
MOV EBX,dword ptr [EBP + -0x40]
SHL EDI,0x2
LEA ESI,[ECX + EDI*0x1]
MOV EAX,dword ptr [ESI]
MOV dword ptr [EBP + -0x30],EBX
MOV dword ptr [EBP + -0x2c],0x0
MOV dword ptr [EBP + -0x3c],EAX
MOV byte ptr [EBP + -0x28],0x0
TEST EAX,EAX
JZ 0x00195158
MOV EAX,dword ptr [ESI + 0x4]
TEST EAX,EAX
JZ 0x00195065
MOV EBX,dword ptr [EAX + 0x18]
TEST EBX,EBX
JZ 0x001950b0
MOV ECX,dword ptr [EBP + -0x3c]
SUB ESP,0xc
MOV EDX,dword ptr [ECX]
PUSH dword ptr [EBP + -0x4c]
PUSH EAX
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH ECX
CALL dword ptr [EDX + 0x2c]
ADD ESP,0x20
CMP EAX,0x1
JZ 0x00195180
ADD dword ptr [EBP + -0x44],0x1
MOV EAX,dword ptr [EBP + -0x30]
CMP EAX,dword ptr [EBP + -0x40]
JZ 0x001950a2
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x48]
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX + 0x10]
JMP 0x00195018
MOV ECX,dword ptr [EBP + -0x3c]
MOV EDX,dword ptr [ECX + 0x1c]
TEST EDX,EDX
JZ 0x001951b0
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0x8
ADD EDX,0x1c
MOV EBX,dword ptr [EBP + -0x48]
PUSH dword ptr [EAX + 0x4]
PUSH EDX
CALL 0x000669a0
MOV EAX,dword ptr [ESI + 0x4]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x001951b0
MOV EAX,dword ptr [EBP + -0x3c]
MOV EAX,dword ptr [EAX + 0x1c]
TEST EAX,EAX
JZ 0x00195103
MOV ESI,dword ptr [EBP + 0x8]
SUB ESP,0x8
ADD EAX,0x1c
MOV EBX,dword ptr [EBP + -0x48]
PUSH dword ptr [ESI + 0x4]
PUSH EAX
CALL 0x000679d0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX + 0x10]
LEA ESI,[ECX + EDI*0x1]
MOV EAX,dword ptr [EDX + -0xc]
SUB EDX,0xc
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EDX + 0x4]
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,dword ptr [EDX + 0x8]
MOV dword ptr [ESI + 0x8],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EAX + 0x10],EDX
MOV EAX,dword ptr [EBP + -0x30]
CMP EAX,dword ptr [EBP + -0x40]
JZ 0x00195018
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x48]
PUSH EAX
CALL 0x001e6db0
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV ECX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX + 0x10]
JMP 0x00195018
MOV EAX,dword ptr [ESI + 0x4]
TEST EAX,EAX
JZ 0x0019510f
MOV EBX,dword ptr [EBP + -0x48]
SUB ESP,0x4
LEA EAX,[EBX + 0xfff0e814]
PUSH EAX
LEA EAX,[EBX + 0xfff0e54d]
PUSH 0x4e0
PUSH EAX
CALL 0x00069d00
SUB ESP,0xc
PUSH ESI
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0x8]
CALL 0x00194e50
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x20
MOV byte ptr [EBP + -0x4d],0x1
MOV ECX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX + 0x10]
LEA ESI,[ECX + EDI*0x1]
JMP 0x0019510f
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x48]
PUSH EAX
CALL 0x000b1760
POP EDX
POP ECX
PUSH 0x40
PUSH dword ptr [ESI + 0x4]
MOV EBX,dword ptr [EBP + -0x48]
CALL 0x001e6d90
ADD ESP,0x10
JMP 0x001950e1
CMP byte ptr [EBP + -0x4d],0x0
JNZ 0x00195000
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nvoid FUN_00194fc0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int *piVar1;\n  bool bVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int iVar6;\n  uint local_48;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  iVar3 = *(int *)(param_1 + 0x10);\n  iVar4 = *(int *)(param_1 + 0xc);\n  DAT_0039626c = DAT_0039626c + 1;\n  DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;\n  do {\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  } while( true );\n}\n\n" comment (function_definition "void FUN_00194fc0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int *piVar1;\n  bool bVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int iVar6;\n  uint local_48;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  iVar3 = *(int *)(param_1 + 0x10);\n  iVar4 = *(int *)(param_1 + 0xc);\n  DAT_0039626c = DAT_0039626c + 1;\n  DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;\n  do {\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_00194fc0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  bool bVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int iVar6;\n  uint local_48;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  iVar3 = *(int *)(param_1 + 0x10);\n  iVar4 = *(int *)(param_1 + 0xc);\n  DAT_0039626c = DAT_0039626c + 1;\n  DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;\n  do {\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "DAT_0039626c = DAT_0039626c + 1;" (assignment_expression "DAT_0039626c = DAT_0039626c + 1" identifier = (binary_expression "DAT_0039626c + 1" identifier + number_literal)) ;) (expression_statement "DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;" (assignment_expression "DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555" identifier = (binary_expression "DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555" identifier + (binary_expression "(iVar3 - iVar4 >> 2) * -0x55555555" (parenthesized_expression "(iVar3 - iVar4 >> 2)" ( (binary_expression "iVar3 - iVar4 >> 2" (binary_expression "iVar3 - iVar4" identifier - identifier) >> number_literal) )) * number_literal))) ;) (do_statement "do {\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  }" { (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (labeled_statement "LAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }" statement_identifier : (if_statement "if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }" if (parenthesized_expression "(local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555))" ( (binary_expression "local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)" identifier < (call_expression "(uint)((iVar3 - iVar4 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((iVar3 - iVar4 >> 2) * -0x55555555)" ( (binary_expression "(iVar3 - iVar4 >> 2) * -0x55555555" (parenthesized_expression "(iVar3 - iVar4 >> 2)" ( (binary_expression "iVar3 - iVar4 >> 2" (binary_expression "iVar3 - iVar4" identifier - identifier) >> number_literal) )) * number_literal) )))) )) (compound_statement "{\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }" { (expression_statement "iVar6 = local_48 * 0xc;" (assignment_expression "iVar6 = local_48 * 0xc" identifier = (binary_expression "local_48 * 0xc" identifier * number_literal)) ;) (expression_statement "piVar5 = (int *)(iVar4 + iVar6);" (assignment_expression "piVar5 = (int *)(iVar4 + iVar6)" identifier = (cast_expression "(int *)(iVar4 + iVar6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar6)" ( (binary_expression "iVar4 + iVar6" identifier + identifier) )))) ;) (expression_statement "piVar1 = (int *)*piVar5;" (assignment_expression "piVar1 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c[0] = 0;" (assignment_expression "local_2c[0] = 0" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (if_statement "if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }" if (parenthesized_expression "(piVar1 == (int *)0x0)" ( (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (piVar5[1] != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }" { (if_statement "if (piVar5[1] != 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }" if (parenthesized_expression "(piVar5[1] != 0)" ( (binary_expression "piVar5[1] != 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }" { comment (expression_statement "FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");" (call_expression "FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols")" identifier (argument_list "("../../gold/archive.cc",0x4e0,"add_symbols")" ( (string_literal ""../../gold/archive.cc"" " string_content ") , number_literal , (string_literal ""add_symbols"" " string_content ") ))) ;) })) }) (else_clause "else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }" else (compound_statement "{\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }" { (expression_statement "iVar3 = piVar5[1];" (assignment_expression "iVar3 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (if_statement "if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }" if (parenthesized_expression "((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0))" ( (binary_expression "(iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(iVar3 + 0x18) != 0)" ( (binary_expression "*(int *)(iVar3 + 0x18) != 0" (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }" { comment (expression_statement "iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);" (assignment_expression "iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34)" identifier = (call_expression "(**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34)" (parenthesized_expression "(**(code **)(*piVar1 + 0x2c))" ( (pointer_expression "**(code **)(*piVar1 + 0x2c)" * (pointer_expression "*(code **)(*piVar1 + 0x2c)" * (cast_expression "(code **)(*piVar1 + 0x2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0x2c)" ( (binary_expression "*piVar1 + 0x2c" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1,param_2,param_3,iVar3,&local_34)" ( identifier , identifier , identifier , identifier , (pointer_expression "&local_34" & identifier) )))) ;) (if_statement "if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }" if (parenthesized_expression "(iVar3 != 1)" ( (binary_expression "iVar3 != 1" identifier != number_literal) )) (compound_statement "{\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }" { (expression_statement "local_48 = local_48 + 1;" (assignment_expression "local_48 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) (if_statement "if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n              FUN_001e6db0(local_34);\n            }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00195018;" goto statement_identifier ;) })) (expression_statement "FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);" (call_expression "FUN_00194e50(param_1,param_2,param_3,param_4,piVar5)" identifier (argument_list "(param_1,param_2,param_3,param_4,piVar5)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = (int *)(iVar4 + iVar6);" (assignment_expression "piVar5 = (int *)(iVar4 + iVar6)" identifier = (cast_expression "(int *)(iVar4 + iVar6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar6)" ( (binary_expression "iVar4 + iVar6" identifier + identifier) )))) ;) }) (else_clause "else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }" else (compound_statement "{\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }" { (if_statement "if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }" if (parenthesized_expression "(piVar1[7] == 0)" ( (binary_expression "piVar1[7] == 0" (subscript_expression "piVar1[7]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }" { (labeled_statement "LAB_001951b0:\n            FUN_000b1760(iVar3);" statement_identifier : (expression_statement "FUN_000b1760(iVar3);" (call_expression "FUN_000b1760(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;)) (expression_statement "FUN_001e6d90(piVar5[1],0x40);" (call_expression "FUN_001e6d90(piVar5[1],0x40)" identifier (argument_list "(piVar5[1],0x40)" ( (subscript_expression "piVar5[1]" identifier [ number_literal ]) , number_literal ))) ;) }) (else_clause "else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }" else (compound_statement "{\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }" { (expression_statement "FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));" (call_expression "FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4))" identifier (argument_list "(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4))" ( (binary_expression "piVar1[7] + 0x1c" (subscript_expression "piVar1[7]" identifier [ number_literal ]) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = piVar5[1];" (assignment_expression "iVar3 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 != 0) goto LAB_001951b0;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001951b0;" goto statement_identifier ;)) }))) (if_statement "if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }" if (parenthesized_expression "(piVar1[7] != 0)" ( (binary_expression "piVar1[7] != 0" (subscript_expression "piVar1[7]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }" { (expression_statement "FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));" (call_expression "FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4))" identifier (argument_list "(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4))" ( (binary_expression "piVar1[7] + 0x1c" (subscript_expression "piVar1[7]" identifier [ number_literal ]) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) })) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = (int *)(iVar4 + iVar6);" (assignment_expression "piVar5 = (int *)(iVar4 + iVar6)" identifier = (cast_expression "(int *)(iVar4 + iVar6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar6)" ( (binary_expression "iVar4 + iVar6" identifier + identifier) )))) ;) }))) }))) (expression_statement "*piVar5 = *(int *)(iVar3 + -0xc);" (assignment_expression "*piVar5 = *(int *)(iVar3 + -0xc)" (pointer_expression "*piVar5" * identifier) = (pointer_expression "*(int *)(iVar3 + -0xc)" * (cast_expression "(int *)(iVar3 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + -0xc)" ( (binary_expression "iVar3 + -0xc" identifier + number_literal) ))))) ;) (expression_statement "piVar5[1] = *(int *)(iVar3 + -8);" (assignment_expression "piVar5[1] = *(int *)(iVar3 + -8)" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar3 + -8)" * (cast_expression "(int *)(iVar3 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + -8)" ( (binary_expression "iVar3 + -8" identifier + number_literal) ))))) ;) (expression_statement "piVar5[2] = *(int *)(iVar3 + -4);" (assignment_expression "piVar5[2] = *(int *)(iVar3 + -4)" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar3 + -4)" * (cast_expression "(int *)(iVar3 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + -4)" ( (binary_expression "iVar3 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x10) = iVar3 + -0xc;" (assignment_expression "*(int *)(param_1 + 0x10) = iVar3 + -0xc" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar3 + -0xc" identifier + number_literal)) ;) (expression_statement "iVar3 = iVar3 + -0xc;" (assignment_expression "iVar3 = iVar3 + -0xc" identifier = (binary_expression "iVar3 + -0xc" identifier + number_literal)) ;) (if_statement "if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) })) (goto_statement "goto LAB_00195018;" goto statement_identifier ;) }))) (if_statement "if (!bVar2) {\n      return;\n    }" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void add_symbols(Lib_group * this, Symbol_table * symtab, Layout *\n   layout, Input_objects * input_objects) */\n\nvoid __thiscall\ngold::Lib_group::add_symbols\n          (Lib_group *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  Object *pOVar2;\n  bool bVar3;\n  int iVar4;\n  Read_symbols_data *this_00;\n  pointer pAVar5;\n  pointer pAVar6;\n  Archive_member *member;\n  Task *in_stack_ffffff98;\n  uint local_48;\n  string why;\n  \n  pAVar6 = (this->members_).\n           super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n           _M_finish;\n  pAVar5 = (this->members_).\n           super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n           _M_start;\n  total_lib_groups = total_lib_groups + 1;\n  total_members = total_members + ((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555;\n  paVar1 = &why.field_2;\n  do {\n    local_48 = 0;\n    bVar3 = false;\nLAB_00195018:\n    if (local_48 < (uint)(((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555)) {\n      member = pAVar5 + local_48;\n      pOVar2 = member->obj_;\n      why._M_string_length = 0;\n      why.field_2._M_local_buf[0] = '\0';\n      why._M_dataplus._M_p = (pointer)paVar1;\n      if (pOVar2 == (Object *)0x0) {\n        if (member->sd_ != (Read_symbols_data *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        this_00 = member->sd_;\n        if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n        else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n      }\n      member->obj_ = pAVar6[-1].obj_;\n      member->sd_ = pAVar6[-1].sd_;\n      member->arg_serial_ = pAVar6[-1].arg_serial_;\n      (this->members_).\n      super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n      _M_finish = pAVar6 + -1;\n      pAVar6 = pAVar6 + -1;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)why._M_dataplus._M_p != paVar1) {\n        operator_delete(why._M_dataplus._M_p);\n        pAVar5 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_start;\n        pAVar6 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_finish;\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar3) {\n      return;\n    }\n  } while( true );\n}\n\n" comment comment comment (function_definition "void __thiscall\ngold::Lib_group::add_symbols\n          (Lib_group *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  Object *pOVar2;\n  bool bVar3;\n  int iVar4;\n  Read_symbols_data *this_00;\n  pointer pAVar5;\n  pointer pAVar6;\n  Archive_member *member;\n  Task *in_stack_ffffff98;\n  uint local_48;\n  string why;\n  \n  pAVar6 = (this->members_).\n           super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n           _M_finish;\n  pAVar5 = (this->members_).\n           super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n           _M_start;\n  total_lib_groups = total_lib_groups + 1;\n  total_members = total_members + ((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555;\n  paVar1 = &why.field_2;\n  do {\n    local_48 = 0;\n    bVar3 = false;\nLAB_00195018:\n    if (local_48 < (uint)(((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555)) {\n      member = pAVar5 + local_48;\n      pOVar2 = member->obj_;\n      why._M_string_length = 0;\n      why.field_2._M_local_buf[0] = '\0';\n      why._M_dataplus._M_p = (pointer)paVar1;\n      if (pOVar2 == (Object *)0x0) {\n        if (member->sd_ != (Read_symbols_data *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        this_00 = member->sd_;\n        if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n        else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n      }\n      member->obj_ = pAVar6[-1].obj_;\n      member->sd_ = pAVar6[-1].sd_;\n      member->arg_serial_ = pAVar6[-1].arg_serial_;\n      (this->members_).\n      super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n      _M_finish = pAVar6 + -1;\n      pAVar6 = pAVar6 + -1;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)why._M_dataplus._M_p != paVar1) {\n        operator_delete(why._M_dataplus._M_p);\n        pAVar5 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_start;\n        pAVar6 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_finish;\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar3) {\n      return;\n    }\n  } while( true );\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Lib_group::" identifier : : identifier : :) (function_declarator "add_symbols\n          (Lib_group *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects)" identifier (parameter_list "(Lib_group *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects)" ( (parameter_declaration "Lib_group *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "Input_objects *input_objects" type_identifier (pointer_declarator "*input_objects" * identifier)) ))) (compound_statement "{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  Object *pOVar2;\n  bool bVar3;\n  int iVar4;\n  Read_symbols_data *this_00;\n  pointer pAVar5;\n  pointer pAVar6;\n  Archive_member *member;\n  Task *in_stack_ffffff98;\n  uint local_48;\n  string why;\n  \n  pAVar6 = (this->members_).\n           super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n           _M_finish;\n  pAVar5 = (this->members_).\n           super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n           _M_start;\n  total_lib_groups = total_lib_groups + 1;\n  total_members = total_members + ((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555;\n  paVar1 = &why.field_2;\n  do {\n    local_48 = 0;\n    bVar3 = false;\nLAB_00195018:\n    if (local_48 < (uint)(((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555)) {\n      member = pAVar5 + local_48;\n      pOVar2 = member->obj_;\n      why._M_string_length = 0;\n      why.field_2._M_local_buf[0] = '\0';\n      why._M_dataplus._M_p = (pointer)paVar1;\n      if (pOVar2 == (Object *)0x0) {\n        if (member->sd_ != (Read_symbols_data *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        this_00 = member->sd_;\n        if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n        else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n      }\n      member->obj_ = pAVar6[-1].obj_;\n      member->sd_ = pAVar6[-1].sd_;\n      member->arg_serial_ = pAVar6[-1].arg_serial_;\n      (this->members_).\n      super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n      _M_finish = pAVar6 + -1;\n      pAVar6 = pAVar6 + -1;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)why._M_dataplus._M_p != paVar1) {\n        operator_delete(why._M_dataplus._M_p);\n        pAVar5 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_start;\n        pAVar6 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_finish;\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar3) {\n      return;\n    }\n  } while( true );\n}" { (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_>_9\n  *paVar1;" (binary_expression "allocator<char>_>_9\n  *paVar1" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar1" identifier * identifier)) ;) (declaration "Object *pOVar2;" type_identifier (pointer_declarator "*pOVar2" * identifier) ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "Read_symbols_data *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "pointer pAVar5;" type_identifier identifier ;) (declaration "pointer pAVar6;" type_identifier identifier ;) (declaration "Archive_member *member;" type_identifier (pointer_declarator "*member" * identifier) ;) (declaration "Task *in_stack_ffffff98;" type_identifier (pointer_declarator "*in_stack_ffffff98" * identifier) ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "string why;" type_identifier identifier ;) (ERROR "pAVar6 = (this->members_).\n           super__Vector_base<gold::Archive_member,_std::allocator<gold::" (comma_expression "pAVar6 = (this->members_).\n           super__Vector_base<gold::Archive_member,_std" (assignment_expression "pAVar6 = (this->members_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->members_).\n           super__Vector_base<gold" (field_expression "(this->members_).\n           super__Vector_base" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive_member" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Archive_member>_>._M_impl.\n           _M_finish;" (field_expression "Archive_member>_>._M_impl.\n           _M_finish" (field_expression "Archive_member>_>._M_impl" (binary_expression "Archive_member>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (ERROR "pAVar5 = (this->members_).\n           super__Vector_base<gold::Archive_member,_std::allocator<gold::" (comma_expression "pAVar5 = (this->members_).\n           super__Vector_base<gold::Archive_member,_std" (assignment_expression "pAVar5 = (this->members_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->members_).\n           super__Vector_base<gold" (field_expression "(this->members_).\n           super__Vector_base" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive_member" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Archive_member>_>._M_impl.\n           _M_start;" (field_expression "Archive_member>_>._M_impl.\n           _M_start" (field_expression "Archive_member>_>._M_impl" (binary_expression "Archive_member>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "total_lib_groups = total_lib_groups + 1;" (assignment_expression "total_lib_groups = total_lib_groups + 1" identifier = (binary_expression "total_lib_groups + 1" identifier + number_literal)) ;) (expression_statement "total_members = total_members + ((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555;" (assignment_expression "total_members = total_members + ((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555" identifier = (binary_expression "total_members + ((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555" identifier + (binary_expression "((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555" (parenthesized_expression "((int)pAVar6 - (int)pAVar5 >> 2)" ( (binary_expression "(int)pAVar6 - (int)pAVar5 >> 2" (binary_expression "(int)pAVar6 - (int)pAVar5" (cast_expression "(int)pAVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pAVar5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal))) ;) (expression_statement "paVar1 = &why.field_2;" (assignment_expression "paVar1 = &why.field_2" identifier = (pointer_expression "&why.field_2" & (field_expression "why.field_2" identifier . field_identifier))) ;) (do_statement "do {\n    local_48 = 0;\n    bVar3 = false;\nLAB_00195018:\n    if (local_48 < (uint)(((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555)) {\n      member = pAVar5 + local_48;\n      pOVar2 = member->obj_;\n      why._M_string_length = 0;\n      why.field_2._M_local_buf[0] = '\0';\n      why._M_dataplus._M_p = (pointer)paVar1;\n      if (pOVar2 == (Object *)0x0) {\n        if (member->sd_ != (Read_symbols_data *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        this_00 = member->sd_;\n        if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n        else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n      }\n      member->obj_ = pAVar6[-1].obj_;\n      member->sd_ = pAVar6[-1].sd_;\n      member->arg_serial_ = pAVar6[-1].arg_serial_;\n      (this->members_).\n      super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n      _M_finish = pAVar6 + -1;\n      pAVar6 = pAVar6 + -1;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)why._M_dataplus._M_p != paVar1) {\n        operator_delete(why._M_dataplus._M_p);\n        pAVar5 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_start;\n        pAVar6 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_finish;\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar3) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    local_48 = 0;\n    bVar3 = false;\nLAB_00195018:\n    if (local_48 < (uint)(((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555)) {\n      member = pAVar5 + local_48;\n      pOVar2 = member->obj_;\n      why._M_string_length = 0;\n      why.field_2._M_local_buf[0] = '\0';\n      why._M_dataplus._M_p = (pointer)paVar1;\n      if (pOVar2 == (Object *)0x0) {\n        if (member->sd_ != (Read_symbols_data *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        this_00 = member->sd_;\n        if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n        else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n      }\n      member->obj_ = pAVar6[-1].obj_;\n      member->sd_ = pAVar6[-1].sd_;\n      member->arg_serial_ = pAVar6[-1].arg_serial_;\n      (this->members_).\n      super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n      _M_finish = pAVar6 + -1;\n      pAVar6 = pAVar6 + -1;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)why._M_dataplus._M_p != paVar1) {\n        operator_delete(why._M_dataplus._M_p);\n        pAVar5 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_start;\n        pAVar6 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_finish;\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar3) {\n      return;\n    }\n  }" { (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (labeled_statement "LAB_00195018:\n    if (local_48 < (uint)(((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555)) {\n      member = pAVar5 + local_48;\n      pOVar2 = member->obj_;\n      why._M_string_length = 0;\n      why.field_2._M_local_buf[0] = '\0';\n      why._M_dataplus._M_p = (pointer)paVar1;\n      if (pOVar2 == (Object *)0x0) {\n        if (member->sd_ != (Read_symbols_data *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        this_00 = member->sd_;\n        if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n        else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n      }\n      member->obj_ = pAVar6[-1].obj_;\n      member->sd_ = pAVar6[-1].sd_;\n      member->arg_serial_ = pAVar6[-1].arg_serial_;\n      (this->members_).\n      super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n      _M_finish = pAVar6 + -1;\n      pAVar6 = pAVar6 + -1;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)why._M_dataplus._M_p != paVar1) {\n        operator_delete(why._M_dataplus._M_p);\n        pAVar5 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_start;\n        pAVar6 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_finish;\n      }\n      goto LAB_00195018;\n    }" statement_identifier : (if_statement "if (local_48 < (uint)(((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555)) {\n      member = pAVar5 + local_48;\n      pOVar2 = member->obj_;\n      why._M_string_length = 0;\n      why.field_2._M_local_buf[0] = '\0';\n      why._M_dataplus._M_p = (pointer)paVar1;\n      if (pOVar2 == (Object *)0x0) {\n        if (member->sd_ != (Read_symbols_data *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        this_00 = member->sd_;\n        if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n        else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n      }\n      member->obj_ = pAVar6[-1].obj_;\n      member->sd_ = pAVar6[-1].sd_;\n      member->arg_serial_ = pAVar6[-1].arg_serial_;\n      (this->members_).\n      super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n      _M_finish = pAVar6 + -1;\n      pAVar6 = pAVar6 + -1;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)why._M_dataplus._M_p != paVar1) {\n        operator_delete(why._M_dataplus._M_p);\n        pAVar5 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_start;\n        pAVar6 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_finish;\n      }\n      goto LAB_00195018;\n    }" if (parenthesized_expression "(local_48 < (uint)(((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555))" ( (binary_expression "local_48 < (uint)(((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555)" identifier < (call_expression "(uint)(((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555)" ( (binary_expression "((int)pAVar6 - (int)pAVar5 >> 2) * -0x55555555" (parenthesized_expression "((int)pAVar6 - (int)pAVar5 >> 2)" ( (binary_expression "(int)pAVar6 - (int)pAVar5 >> 2" (binary_expression "(int)pAVar6 - (int)pAVar5" (cast_expression "(int)pAVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pAVar5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal) )))) )) (compound_statement "{\n      member = pAVar5 + local_48;\n      pOVar2 = member->obj_;\n      why._M_string_length = 0;\n      why.field_2._M_local_buf[0] = '\0';\n      why._M_dataplus._M_p = (pointer)paVar1;\n      if (pOVar2 == (Object *)0x0) {\n        if (member->sd_ != (Read_symbols_data *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        this_00 = member->sd_;\n        if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n        else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n      }\n      member->obj_ = pAVar6[-1].obj_;\n      member->sd_ = pAVar6[-1].sd_;\n      member->arg_serial_ = pAVar6[-1].arg_serial_;\n      (this->members_).\n      super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>._M_impl.\n      _M_finish = pAVar6 + -1;\n      pAVar6 = pAVar6 + -1;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)why._M_dataplus._M_p != paVar1) {\n        operator_delete(why._M_dataplus._M_p);\n        pAVar5 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_start;\n        pAVar6 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_finish;\n      }\n      goto LAB_00195018;\n    }" { (expression_statement "member = pAVar5 + local_48;" (assignment_expression "member = pAVar5 + local_48" identifier = (binary_expression "pAVar5 + local_48" identifier + identifier)) ;) (expression_statement "pOVar2 = member->obj_;" (assignment_expression "pOVar2 = member->obj_" identifier = (field_expression "member->obj_" identifier -> field_identifier)) ;) (expression_statement "why._M_string_length = 0;" (assignment_expression "why._M_string_length = 0" (field_expression "why._M_string_length" identifier . field_identifier) = number_literal) ;) (expression_statement "why.field_2._M_local_buf[0] = '\0';" (assignment_expression "why.field_2._M_local_buf[0] = '\0'" (subscript_expression "why.field_2._M_local_buf[0]" (field_expression "why.field_2._M_local_buf" (field_expression "why.field_2" identifier . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "why._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "why._M_dataplus._M_p = (pointer)paVar1" (field_expression "why._M_dataplus._M_p" (field_expression "why._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (if_statement "if (pOVar2 == (Object *)0x0) {\n        if (member->sd_ != (Read_symbols_data *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        this_00 = member->sd_;\n        if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n        else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n      }" if (parenthesized_expression "(pOVar2 == (Object *)0x0)" ( (binary_expression "pOVar2 == (Object *)0x0" identifier == (cast_expression "(Object *)0x0" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (member->sd_ != (Read_symbols_data *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }" { (if_statement "if (member->sd_ != (Read_symbols_data *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");\n        }" if (parenthesized_expression "(member->sd_ != (Read_symbols_data *)0x0)" ( (binary_expression "member->sd_ != (Read_symbols_data *)0x0" (field_expression "member->sd_" identifier -> field_identifier) != (cast_expression "(Read_symbols_data *)0x0" ( (type_descriptor "Read_symbols_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");\n        }" { comment (expression_statement "do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols");" (call_expression "do_gold_unreachable("../../gold/archive.cc",0x4e0,"add_symbols")" identifier (argument_list "("../../gold/archive.cc",0x4e0,"add_symbols")" ( (string_literal ""../../gold/archive.cc"" " string_content ") , number_literal , (string_literal ""add_symbols"" " string_content ") ))) ;) })) }) (else_clause "else {\n        this_00 = member->sd_;\n        if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n        else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n      }" else (compound_statement "{\n        this_00 = member->sd_;\n        if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n        else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n      }" { (expression_statement "this_00 = member->sd_;" (assignment_expression "this_00 = member->sd_" identifier = (field_expression "member->sd_" identifier -> field_identifier)) ;) (if_statement "if ((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)) {\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }\n        else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }" if (parenthesized_expression "((this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0))" ( (binary_expression "(this_00 == (Read_symbols_data *)0x0) || (this_00->symbol_names != (File_view *)0x0)" (parenthesized_expression "(this_00 == (Read_symbols_data *)0x0)" ( (binary_expression "this_00 == (Read_symbols_data *)0x0" identifier == (cast_expression "(Read_symbols_data *)0x0" ( (type_descriptor "Read_symbols_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(this_00->symbol_names != (File_view *)0x0)" ( (binary_expression "this_00->symbol_names != (File_view *)0x0" (field_expression "this_00->symbol_names" identifier -> field_identifier) != (cast_expression "(File_view *)0x0" ( (type_descriptor "File_view *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */\n          iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);\n          if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }\n          include_member(this,symtab,layout,input_objects,member);\n          bVar3 = true;\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }" { comment (expression_statement "iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why);" (assignment_expression "iVar4 = (*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why)" identifier = (call_expression "(*pOVar2->_vptr_Object[0xb])(pOVar2,symtab,layout,this_00,&why)" (parenthesized_expression "(*pOVar2->_vptr_Object[0xb])" ( (pointer_expression "*pOVar2->_vptr_Object[0xb]" * (subscript_expression "pOVar2->_vptr_Object[0xb]" (field_expression "pOVar2->_vptr_Object" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pOVar2,symtab,layout,this_00,&why)" ( identifier , identifier , identifier , identifier , (pointer_expression "&why" & identifier) )))) ;) (if_statement "if (iVar4 != 1) {\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (compound_statement "{\n            local_48 = local_48 + 1;\n            if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }\n            pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_start;\n            pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>\n                     ._M_impl._M_finish;\n            goto LAB_00195018;\n          }" { (expression_statement "local_48 = local_48 + 1;" (assignment_expression "local_48 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1) {\n              operator_delete(why._M_dataplus._M_p);\n            }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n                 *)why._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n                 *)why._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n                 *)why._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "why._M_dataplus._M_p" (field_expression "why._M_dataplus" identifier . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n              operator_delete(why._M_dataplus._M_p);\n            }" { (expression_statement "operator_delete(why._M_dataplus._M_p);" (call_expression "operator_delete(why._M_dataplus._M_p)" identifier (argument_list "(why._M_dataplus._M_p)" ( (field_expression "why._M_dataplus._M_p" (field_expression "why._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (ERROR "pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::" (comma_expression "pAVar5 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std" (assignment_expression "pAVar5 = (this->members_).\n                     super__Vector_base<gold" identifier = (binary_expression "(this->members_).\n                     super__Vector_base<gold" (field_expression "(this->members_).\n                     super__Vector_base" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive_member" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Archive_member>_>\n                     ._M_impl._M_start;" (field_expression "Archive_member>_>\n                     ._M_impl._M_start" (field_expression "Archive_member>_>\n                     ._M_impl" (binary_expression "Archive_member>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (ERROR "pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std::allocator<gold::" (comma_expression "pAVar6 = (this->members_).\n                     super__Vector_base<gold::Archive_member,_std" (assignment_expression "pAVar6 = (this->members_).\n                     super__Vector_base<gold" identifier = (binary_expression "(this->members_).\n                     super__Vector_base<gold" (field_expression "(this->members_).\n                     super__Vector_base" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive_member" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Archive_member>_>\n                     ._M_impl._M_finish;" (field_expression "Archive_member>_>\n                     ._M_impl._M_finish" (field_expression "Archive_member>_>\n                     ._M_impl" (binary_expression "Archive_member>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (goto_statement "goto LAB_00195018;" goto statement_identifier ;) })) (expression_statement "include_member(this,symtab,layout,input_objects,member);" (call_expression "include_member(this,symtab,layout,input_objects,member)" identifier (argument_list "(this,symtab,layout,input_objects,member)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (ERROR "pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::" (comma_expression "pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std" (assignment_expression "pAVar5 = (this->members_).\n                   super__Vector_base<gold" identifier = (binary_expression "(this->members_).\n                   super__Vector_base<gold" (field_expression "(this->members_).\n                   super__Vector_base" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive_member" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Archive_member>_>.\n                   _M_impl._M_start;" (field_expression "Archive_member>_>.\n                   _M_impl._M_start" (field_expression "Archive_member>_>.\n                   _M_impl" (binary_expression "Archive_member>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (ERROR "pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::" (comma_expression "pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std" (assignment_expression "pAVar6 = (this->members_).\n                   super__Vector_base<gold" identifier = (binary_expression "(this->members_).\n                   super__Vector_base<gold" (field_expression "(this->members_).\n                   super__Vector_base" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive_member" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Archive_member>_>.\n                   _M_impl._M_finish;" (field_expression "Archive_member>_>.\n                   _M_impl._M_finish" (field_expression "Archive_member>_>.\n                   _M_impl" (binary_expression "Archive_member>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "member = pAVar5 + local_48;" (assignment_expression "member = pAVar5 + local_48" identifier = (binary_expression "pAVar5 + local_48" identifier + identifier)) ;) }) (else_clause "else {\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }" else (compound_statement "{\n          if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }\n          if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }\n          pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_start;\n          pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                   _M_impl._M_finish;\n          member = pAVar5 + local_48;\n        }" { (if_statement "if (pOVar2->input_file_ == (Input_file *)0x0) {\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }\n          else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }" if (parenthesized_expression "(pOVar2->input_file_ == (Input_file *)0x0)" ( (binary_expression "pOVar2->input_file_ == (Input_file *)0x0" (field_expression "pOVar2->input_file_" identifier -> field_identifier) == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);\n            in_stack_ffffff98 = (Task *)0x40;\n            operator_delete(member->sd_,0x40);\n          }" { (labeled_statement "LAB_001951b0:\n            Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);" statement_identifier : (labeled_statement "Read_symbols_data::~Read_symbols_data(this_00,(int)in_stack_ffffff98);" statement_identifier : (ERROR ":" :) (expression_statement "~Read_symbols_data(this_00,(int)in_stack_ffffff98);" (unary_expression "~Read_symbols_data(this_00,(int)in_stack_ffffff98)" ~ (call_expression "Read_symbols_data(this_00,(int)in_stack_ffffff98)" identifier (argument_list "(this_00,(int)in_stack_ffffff98)" ( identifier , (cast_expression "(int)in_stack_ffffff98" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;))) (expression_statement "in_stack_ffffff98 = (Task *)0x40;" (assignment_expression "in_stack_ffffff98 = (Task *)0x40" identifier = (cast_expression "(Task *)0x40" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "operator_delete(member->sd_,0x40);" (call_expression "operator_delete(member->sd_,0x40)" identifier (argument_list "(member->sd_,0x40)" ( (field_expression "member->sd_" identifier -> field_identifier) , number_literal ))) ;) }) (else_clause "else {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }" else (compound_statement "{\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n            this_00 = member->sd_;\n            if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;\n          }" { (expression_statement "in_stack_ffffff98 = (this->super_Library_base).task_;" (assignment_expression "in_stack_ffffff98 = (this->super_Library_base).task_" identifier = (field_expression "(this->super_Library_base).task_" (parenthesized_expression "(this->super_Library_base)" ( (field_expression "this->super_Library_base" identifier -> field_identifier) )) . field_identifier)) ;) (labeled_statement "File_read::lock(&pOVar2->input_file_->file_,in_stack_ffffff98);" statement_identifier : (ERROR ":" :) (expression_statement "lock(&pOVar2->input_file_->file_,in_stack_ffffff98);" (call_expression "lock(&pOVar2->input_file_->file_,in_stack_ffffff98)" identifier (argument_list "(&pOVar2->input_file_->file_,in_stack_ffffff98)" ( (pointer_expression "&pOVar2->input_file_->file_" & (field_expression "pOVar2->input_file_->file_" (field_expression "pOVar2->input_file_" identifier -> field_identifier) -> field_identifier)) , identifier ))) ;)) (expression_statement "this_00 = member->sd_;" (assignment_expression "this_00 = member->sd_" identifier = (field_expression "member->sd_" identifier -> field_identifier)) ;) (if_statement "if (this_00 != (Read_symbols_data *)0x0) goto LAB_001951b0;" if (parenthesized_expression "(this_00 != (Read_symbols_data *)0x0)" ( (binary_expression "this_00 != (Read_symbols_data *)0x0" identifier != (cast_expression "(Read_symbols_data *)0x0" ( (type_descriptor "Read_symbols_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001951b0;" goto statement_identifier ;)) }))) (if_statement "if (pOVar2->input_file_ != (Input_file *)0x0) {\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }" if (parenthesized_expression "(pOVar2->input_file_ != (Input_file *)0x0)" ( (binary_expression "pOVar2->input_file_ != (Input_file *)0x0" (field_expression "pOVar2->input_file_" identifier -> field_identifier) != (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            in_stack_ffffff98 = (this->super_Library_base).task_;\n            File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);\n          }" { (expression_statement "in_stack_ffffff98 = (this->super_Library_base).task_;" (assignment_expression "in_stack_ffffff98 = (this->super_Library_base).task_" identifier = (field_expression "(this->super_Library_base).task_" (parenthesized_expression "(this->super_Library_base)" ( (field_expression "this->super_Library_base" identifier -> field_identifier) )) . field_identifier)) ;) (labeled_statement "File_read::unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);" statement_identifier : (ERROR ":" :) (expression_statement "unlock(&pOVar2->input_file_->file_,in_stack_ffffff98);" (call_expression "unlock(&pOVar2->input_file_->file_,in_stack_ffffff98)" identifier (argument_list "(&pOVar2->input_file_->file_,in_stack_ffffff98)" ( (pointer_expression "&pOVar2->input_file_->file_" & (field_expression "pOVar2->input_file_->file_" (field_expression "pOVar2->input_file_" identifier -> field_identifier) -> field_identifier)) , identifier ))) ;)) })) (ERROR "pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::" (comma_expression "pAVar5 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std" (assignment_expression "pAVar5 = (this->members_).\n                   super__Vector_base<gold" identifier = (binary_expression "(this->members_).\n                   super__Vector_base<gold" (field_expression "(this->members_).\n                   super__Vector_base" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive_member" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Archive_member>_>.\n                   _M_impl._M_start;" (field_expression "Archive_member>_>.\n                   _M_impl._M_start" (field_expression "Archive_member>_>.\n                   _M_impl" (binary_expression "Archive_member>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (ERROR "pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std::allocator<gold::" (comma_expression "pAVar6 = (this->members_).\n                   super__Vector_base<gold::Archive_member,_std" (assignment_expression "pAVar6 = (this->members_).\n                   super__Vector_base<gold" identifier = (binary_expression "(this->members_).\n                   super__Vector_base<gold" (field_expression "(this->members_).\n                   super__Vector_base" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive_member" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Archive_member>_>.\n                   _M_impl._M_finish;" (field_expression "Archive_member>_>.\n                   _M_impl._M_finish" (field_expression "Archive_member>_>.\n                   _M_impl" (binary_expression "Archive_member>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "member = pAVar5 + local_48;" (assignment_expression "member = pAVar5 + local_48" identifier = (binary_expression "pAVar5 + local_48" identifier + identifier)) ;) }))) }))) (expression_statement "member->obj_ = pAVar6[-1].obj_;" (assignment_expression "member->obj_ = pAVar6[-1].obj_" (field_expression "member->obj_" identifier -> field_identifier) = (field_expression "pAVar6[-1].obj_" (subscript_expression "pAVar6[-1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "member->sd_ = pAVar6[-1].sd_;" (assignment_expression "member->sd_ = pAVar6[-1].sd_" (field_expression "member->sd_" identifier -> field_identifier) = (field_expression "pAVar6[-1].sd_" (subscript_expression "pAVar6[-1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "member->arg_serial_ = pAVar6[-1].arg_serial_;" (assignment_expression "member->arg_serial_ = pAVar6[-1].arg_serial_" (field_expression "member->arg_serial_" identifier -> field_identifier) = (field_expression "pAVar6[-1].arg_serial_" (subscript_expression "pAVar6[-1]" identifier [ number_literal ]) . field_identifier)) ;) (ERROR "(this->members_).\n      super__Vector_base<gold::Archive_member,_std::allocator<gold::" (comma_expression "(this->members_).\n      super__Vector_base<gold::Archive_member,_std" (binary_expression "(this->members_).\n      super__Vector_base<gold" (field_expression "(this->members_).\n      super__Vector_base" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Archive_member" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Archive_member>_>._M_impl.\n      _M_finish = pAVar6 + -1;" (assignment_expression "Archive_member>_>._M_impl.\n      _M_finish = pAVar6 + -1" (field_expression "Archive_member>_>._M_impl.\n      _M_finish" (field_expression "Archive_member>_>._M_impl" (binary_expression "Archive_member>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "pAVar6 + -1" identifier + number_literal)) ;) (expression_statement "pAVar6 = pAVar6 + -1;" (assignment_expression "pAVar6 = pAVar6 + -1" identifier = (binary_expression "pAVar6 + -1" identifier + number_literal)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)why._M_dataplus._M_p != paVar1) {\n        operator_delete(why._M_dataplus._M_p);\n        pAVar5 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_start;\n        pAVar6 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_finish;\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)why._M_dataplus._M_p != paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)why._M_dataplus._M_p != paVar1)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)why._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n           *)why._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)why._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "why._M_dataplus._M_p" (field_expression "why._M_dataplus" identifier . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n        operator_delete(why._M_dataplus._M_p);\n        pAVar5 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_start;\n        pAVar6 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::Archive_member>_>.\n                 _M_impl._M_finish;\n      }" { (expression_statement "operator_delete(why._M_dataplus._M_p);" (call_expression "operator_delete(why._M_dataplus._M_p)" identifier (argument_list "(why._M_dataplus._M_p)" ( (field_expression "why._M_dataplus._M_p" (field_expression "why._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) (ERROR "pAVar5 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::" (comma_expression "pAVar5 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std" (assignment_expression "pAVar5 = (this->members_).\n                 super__Vector_base<gold" identifier = (binary_expression "(this->members_).\n                 super__Vector_base<gold" (field_expression "(this->members_).\n                 super__Vector_base" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive_member" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Archive_member>_>.\n                 _M_impl._M_start;" (field_expression "Archive_member>_>.\n                 _M_impl._M_start" (field_expression "Archive_member>_>.\n                 _M_impl" (binary_expression "Archive_member>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (ERROR "pAVar6 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std::allocator<gold::" (comma_expression "pAVar6 = (this->members_).\n                 super__Vector_base<gold::Archive_member,_std" (assignment_expression "pAVar6 = (this->members_).\n                 super__Vector_base<gold" identifier = (binary_expression "(this->members_).\n                 super__Vector_base<gold" (field_expression "(this->members_).\n                 super__Vector_base" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive_member" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Archive_member>_>.\n                 _M_impl._M_finish;" (field_expression "Archive_member>_>.\n                 _M_impl._M_finish" (field_expression "Archive_member>_>.\n                 _M_impl" (binary_expression "Archive_member>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) })) (goto_statement "goto LAB_00195018;" goto statement_identifier ;) }))) (if_statement "if (!bVar3) {\n      return;\n    }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_00194fc0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int *piVar1;\n  bool bVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int iVar6;\n  uint local_48;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  iVar3 = *(int *)(param_1 + 0x10);\n  iVar4 = *(int *)(param_1 + 0xc);\n  DAT_0039626c = DAT_0039626c + 1;\n  DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;\n  do {\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  } while( true );\n}\n\n" (function_definition "void FUN_00194fc0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int *piVar1;\n  bool bVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int iVar6;\n  uint local_48;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  iVar3 = *(int *)(param_1 + 0x10);\n  iVar4 = *(int *)(param_1 + 0xc);\n  DAT_0039626c = DAT_0039626c + 1;\n  DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;\n  do {\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_00194fc0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  bool bVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int iVar6;\n  uint local_48;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  iVar3 = *(int *)(param_1 + 0x10);\n  iVar4 = *(int *)(param_1 + 0xc);\n  DAT_0039626c = DAT_0039626c + 1;\n  DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;\n  do {\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "DAT_0039626c = DAT_0039626c + 1;" (assignment_expression "DAT_0039626c = DAT_0039626c + 1" identifier = (binary_expression "DAT_0039626c + 1" identifier + number_literal)) ;) (expression_statement "DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;" (assignment_expression "DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555" identifier = (binary_expression "DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555" identifier + (binary_expression "(iVar3 - iVar4 >> 2) * -0x55555555" (parenthesized_expression "(iVar3 - iVar4 >> 2)" ( (binary_expression "iVar3 - iVar4 >> 2" (binary_expression "iVar3 - iVar4" identifier - identifier) >> number_literal) )) * number_literal))) ;) (do_statement "do {\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  }" { (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (labeled_statement "LAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }" statement_identifier : (if_statement "if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }" if (parenthesized_expression "(local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555))" ( (binary_expression "local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)" identifier < (call_expression "(uint)((iVar3 - iVar4 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((iVar3 - iVar4 >> 2) * -0x55555555)" ( (binary_expression "(iVar3 - iVar4 >> 2) * -0x55555555" (parenthesized_expression "(iVar3 - iVar4 >> 2)" ( (binary_expression "iVar3 - iVar4 >> 2" (binary_expression "iVar3 - iVar4" identifier - identifier) >> number_literal) )) * number_literal) )))) )) (compound_statement "{\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }" { (expression_statement "iVar6 = local_48 * 0xc;" (assignment_expression "iVar6 = local_48 * 0xc" identifier = (binary_expression "local_48 * 0xc" identifier * number_literal)) ;) (expression_statement "piVar5 = (int *)(iVar4 + iVar6);" (assignment_expression "piVar5 = (int *)(iVar4 + iVar6)" identifier = (cast_expression "(int *)(iVar4 + iVar6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar6)" ( (binary_expression "iVar4 + iVar6" identifier + identifier) )))) ;) (expression_statement "piVar1 = (int *)*piVar5;" (assignment_expression "piVar1 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c[0] = 0;" (assignment_expression "local_2c[0] = 0" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (if_statement "if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }" if (parenthesized_expression "(piVar1 == (int *)0x0)" ( (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }" { (if_statement "if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }" if (parenthesized_expression "(piVar5[1] != 0)" ( (binary_expression "piVar5[1] != 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }" { (expression_statement "FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");" (call_expression "FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols")" identifier (argument_list "("../../gold/archive.cc",0x4e0,"add_symbols")" ( (string_literal ""../../gold/archive.cc"" " string_content ") , number_literal , (string_literal ""add_symbols"" " string_content ") ))) ;) })) }) (else_clause "else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }" else (compound_statement "{\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }" { (expression_statement "iVar3 = piVar5[1];" (assignment_expression "iVar3 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (if_statement "if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }" if (parenthesized_expression "((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0))" ( (binary_expression "(iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(iVar3 + 0x18) != 0)" ( (binary_expression "*(int *)(iVar3 + 0x18) != 0" (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }" { (expression_statement "iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);" (assignment_expression "iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34)" identifier = (call_expression "(**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34)" (parenthesized_expression "(**(code **)(*piVar1 + 0x2c))" ( (pointer_expression "**(code **)(*piVar1 + 0x2c)" * (pointer_expression "*(code **)(*piVar1 + 0x2c)" * (cast_expression "(code **)(*piVar1 + 0x2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0x2c)" ( (binary_expression "*piVar1 + 0x2c" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1,param_2,param_3,iVar3,&local_34)" ( identifier , identifier , identifier , identifier , (pointer_expression "&local_34" & identifier) )))) ;) (if_statement "if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }" if (parenthesized_expression "(iVar3 != 1)" ( (binary_expression "iVar3 != 1" identifier != number_literal) )) (compound_statement "{\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }" { (expression_statement "local_48 = local_48 + 1;" (assignment_expression "local_48 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) (if_statement "if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n              FUN_001e6db0(local_34);\n            }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00195018;" goto statement_identifier ;) })) (expression_statement "FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);" (call_expression "FUN_00194e50(param_1,param_2,param_3,param_4,piVar5)" identifier (argument_list "(param_1,param_2,param_3,param_4,piVar5)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = (int *)(iVar4 + iVar6);" (assignment_expression "piVar5 = (int *)(iVar4 + iVar6)" identifier = (cast_expression "(int *)(iVar4 + iVar6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar6)" ( (binary_expression "iVar4 + iVar6" identifier + identifier) )))) ;) }) (else_clause "else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }" else (compound_statement "{\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }" { (if_statement "if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }" if (parenthesized_expression "(piVar1[7] == 0)" ( (binary_expression "piVar1[7] == 0" (subscript_expression "piVar1[7]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }" { (labeled_statement "LAB_001951b0:\n            FUN_000b1760(iVar3);" statement_identifier : (expression_statement "FUN_000b1760(iVar3);" (call_expression "FUN_000b1760(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;)) (expression_statement "FUN_001e6d90(piVar5[1],0x40);" (call_expression "FUN_001e6d90(piVar5[1],0x40)" identifier (argument_list "(piVar5[1],0x40)" ( (subscript_expression "piVar5[1]" identifier [ number_literal ]) , number_literal ))) ;) }) (else_clause "else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }" else (compound_statement "{\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }" { (expression_statement "FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));" (call_expression "FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4))" identifier (argument_list "(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4))" ( (binary_expression "piVar1[7] + 0x1c" (subscript_expression "piVar1[7]" identifier [ number_literal ]) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = piVar5[1];" (assignment_expression "iVar3 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 != 0) goto LAB_001951b0;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001951b0;" goto statement_identifier ;)) }))) (if_statement "if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }" if (parenthesized_expression "(piVar1[7] != 0)" ( (binary_expression "piVar1[7] != 0" (subscript_expression "piVar1[7]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }" { (expression_statement "FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));" (call_expression "FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4))" identifier (argument_list "(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4))" ( (binary_expression "piVar1[7] + 0x1c" (subscript_expression "piVar1[7]" identifier [ number_literal ]) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) })) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = (int *)(iVar4 + iVar6);" (assignment_expression "piVar5 = (int *)(iVar4 + iVar6)" identifier = (cast_expression "(int *)(iVar4 + iVar6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar6)" ( (binary_expression "iVar4 + iVar6" identifier + identifier) )))) ;) }))) }))) (expression_statement "*piVar5 = *(int *)(iVar3 + -0xc);" (assignment_expression "*piVar5 = *(int *)(iVar3 + -0xc)" (pointer_expression "*piVar5" * identifier) = (pointer_expression "*(int *)(iVar3 + -0xc)" * (cast_expression "(int *)(iVar3 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + -0xc)" ( (binary_expression "iVar3 + -0xc" identifier + number_literal) ))))) ;) (expression_statement "piVar5[1] = *(int *)(iVar3 + -8);" (assignment_expression "piVar5[1] = *(int *)(iVar3 + -8)" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar3 + -8)" * (cast_expression "(int *)(iVar3 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + -8)" ( (binary_expression "iVar3 + -8" identifier + number_literal) ))))) ;) (expression_statement "piVar5[2] = *(int *)(iVar3 + -4);" (assignment_expression "piVar5[2] = *(int *)(iVar3 + -4)" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar3 + -4)" * (cast_expression "(int *)(iVar3 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + -4)" ( (binary_expression "iVar3 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x10) = iVar3 + -0xc;" (assignment_expression "*(int *)(param_1 + 0x10) = iVar3 + -0xc" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar3 + -0xc" identifier + number_literal)) ;) (expression_statement "iVar3 = iVar3 + -0xc;" (assignment_expression "iVar3 = iVar3 + -0xc" identifier = (binary_expression "iVar3 + -0xc" identifier + number_literal)) ;) (if_statement "if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) })) (goto_statement "goto LAB_00195018;" goto statement_identifier ;) }))) (if_statement "if (!bVar2) {\n      return;\n    }" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) >> LIT) )) * LIT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) >> LIT) )) * LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 ( 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) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) }) (else_clause else (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 ( IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) }))) }))) (expression_statement (assignment_expression (pointer_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 ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + 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 ( 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) ))))) ;) })) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (return_statement return ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_00194fc0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int *piVar1;\n  bool bVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int iVar6;\n  uint local_48;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  iVar3 = *(int *)(param_1 + 0x10);\n  iVar4 = *(int *)(param_1 + 0xc);\n  DAT_0039626c = DAT_0039626c + 1;\n  DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;\n  do {\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_00194fc0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (identifier "FUN_00194fc0") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  int *piVar1;\n  bool bVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int iVar6;\n  uint local_48;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  iVar3 = *(int *)(param_1 + 0x10);\n  iVar4 = *(int *)(param_1 + 0xc);\n  DAT_0039626c = DAT_0039626c + 1;\n  DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;\n  do {\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  } while( true );\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint local_48;" (type_identifier "uint") (identifier "local_48") (; ";")) (declaration "undefined1 *local_34;" (type_identifier "undefined1") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "DAT_0039626c = DAT_0039626c + 1;" (assignment_expression "DAT_0039626c = DAT_0039626c + 1" (identifier "DAT_0039626c") (= "=") (binary_expression "DAT_0039626c + 1" (identifier "DAT_0039626c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;" (assignment_expression "DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555" (identifier "DAT_00396268") (= "=") (binary_expression "DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555" (identifier "DAT_00396268") (+ "+") (binary_expression "(iVar3 - iVar4 >> 2) * -0x55555555" (parenthesized_expression "(iVar3 - iVar4 >> 2)" (( "(") (binary_expression "iVar3 - iVar4 >> 2" (binary_expression "iVar3 - iVar4" (identifier "iVar3") (- "-") (identifier "iVar4")) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x55555555")))) (; ";")) (do_statement "do {\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    local_48 = 0;\n    bVar2 = false;\nLAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }\n    if (!bVar2) {\n      return;\n    }\n  }" ({ "{") (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (labeled_statement "LAB_00195018:\n    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }" (statement_identifier "LAB_00195018") (: ":") (if_statement "if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }" (if "if") (parenthesized_expression "(local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555))" (( "(") (binary_expression "local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)" (identifier "local_48") (< "<") (call_expression "(uint)((iVar3 - iVar4 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((iVar3 - iVar4 >> 2) * -0x55555555)" (( "(") (binary_expression "(iVar3 - iVar4 >> 2) * -0x55555555" (parenthesized_expression "(iVar3 - iVar4 >> 2)" (( "(") (binary_expression "iVar3 - iVar4 >> 2" (binary_expression "iVar3 - iVar4" (identifier "iVar3") (- "-") (identifier "iVar4")) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x55555555")) () ")")))) () ")")) (compound_statement "{\n      iVar6 = local_48 * 0xc;\n      piVar5 = (int *)(iVar4 + iVar6);\n      piVar1 = (int *)*piVar5;\n      local_30 = 0;\n      local_2c[0] = 0;\n      local_34 = local_2c;\n      if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }\n      *piVar5 = *(int *)(iVar3 + -0xc);\n      piVar5[1] = *(int *)(iVar3 + -8);\n      piVar5[2] = *(int *)(iVar3 + -4);\n      *(int *)(param_1 + 0x10) = iVar3 + -0xc;\n      iVar3 = iVar3 + -0xc;\n      if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }\n      goto LAB_00195018;\n    }" ({ "{") (expression_statement "iVar6 = local_48 * 0xc;" (assignment_expression "iVar6 = local_48 * 0xc" (identifier "iVar6") (= "=") (binary_expression "local_48 * 0xc" (identifier "local_48") (* "*") (number_literal "0xc"))) (; ";")) (expression_statement "piVar5 = (int *)(iVar4 + iVar6);" (assignment_expression "piVar5 = (int *)(iVar4 + iVar6)" (identifier "piVar5") (= "=") (cast_expression "(int *)(iVar4 + iVar6)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + iVar6)" (( "(") (binary_expression "iVar4 + iVar6" (identifier "iVar4") (+ "+") (identifier "iVar6")) () ")")))) (; ";")) (expression_statement "piVar1 = (int *)*piVar5;" (assignment_expression "piVar1 = (int *)*piVar5" (identifier "piVar1") (= "=") (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")))) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c[0] = 0;" (assignment_expression "local_2c[0] = 0" (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" (identifier "local_34") (= "=") (identifier "local_2c")) (; ";")) (if_statement "if (piVar1 == (int *)0x0) {\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }\n      else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }" (if "if") (parenthesized_expression "(piVar1 == (int *)0x0)" (( "(") (binary_expression "piVar1 == (int *)0x0" (identifier "piVar1") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }\n      }" ({ "{") (if_statement "if (piVar5[1] != 0) {\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }" (if "if") (parenthesized_expression "(piVar5[1] != 0)" (( "(") (binary_expression "piVar5[1] != 0" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");\n        }" ({ "{") (expression_statement "FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");" (call_expression "FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols")" (identifier "FUN_00069d00") (argument_list "("../../gold/archive.cc",0x4e0,"add_symbols")" (( "(") (string_literal ""../../gold/archive.cc"" (" """) (string_content "../../gold/archive.cc") (" """)) (, ",") (number_literal "0x4e0") (, ",") (string_literal ""add_symbols"" (" """) (string_content "add_symbols") (" """)) () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }" (else "else") (compound_statement "{\n        iVar3 = piVar5[1];\n        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n      }" ({ "{") (expression_statement "iVar3 = piVar5[1];" (assignment_expression "iVar3 = piVar5[1]" (identifier "iVar3") (= "=") (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }\n        else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }" (if "if") (parenthesized_expression "((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0))" (( "(") (binary_expression "(iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)" (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(iVar3 + 0x18) != 0)" (( "(") (binary_expression "*(int *)(iVar3 + 0x18) != 0" (pointer_expression "*(int *)(iVar3 + 0x18)" (* "*") (cast_expression "(int *)(iVar3 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x18)" (( "(") (binary_expression "iVar3 + 0x18" (identifier "iVar3") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);\n          if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }\n          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);\n          bVar2 = true;\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }" ({ "{") (expression_statement "iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);" (assignment_expression "iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34)" (parenthesized_expression "(**(code **)(*piVar1 + 0x2c))" (( "(") (pointer_expression "**(code **)(*piVar1 + 0x2c)" (* "*") (pointer_expression "*(code **)(*piVar1 + 0x2c)" (* "*") (cast_expression "(code **)(*piVar1 + 0x2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 0x2c)" (( "(") (binary_expression "*piVar1 + 0x2c" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "0x2c")) () ")"))))) () ")")) (argument_list "(piVar1,param_2,param_3,iVar3,&local_34)" (( "(") (identifier "piVar1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "iVar3") (, ",") (pointer_expression "&local_34" (& "&") (identifier "local_34")) () ")")))) (; ";")) (if_statement "if (iVar3 != 1) {\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }" (if "if") (parenthesized_expression "(iVar3 != 1)" (( "(") (binary_expression "iVar3 != 1" (identifier "iVar3") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n            local_48 = local_48 + 1;\n            if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }\n            iVar4 = *(int *)(param_1 + 0xc);\n            iVar3 = *(int *)(param_1 + 0x10);\n            goto LAB_00195018;\n          }" ({ "{") (expression_statement "local_48 = local_48 + 1;" (assignment_expression "local_48 = local_48 + 1" (identifier "local_48") (= "=") (binary_expression "local_48 + 1" (identifier "local_48") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_34 != local_2c) {\n              FUN_001e6db0(local_34);\n            }" (if "if") (parenthesized_expression "(local_34 != local_2c)" (( "(") (binary_expression "local_34 != local_2c" (identifier "local_34") (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n              FUN_001e6db0(local_34);\n            }" ({ "{") (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" (identifier "FUN_001e6db0") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (goto_statement "goto LAB_00195018;" (goto "goto") (statement_identifier "LAB_00195018") (; ";")) (} "}"))) (expression_statement "FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);" (call_expression "FUN_00194e50(param_1,param_2,param_3,param_4,piVar5)" (identifier "FUN_00194e50") (argument_list "(param_1,param_2,param_3,param_4,piVar5)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "piVar5") () ")"))) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "piVar5 = (int *)(iVar4 + iVar6);" (assignment_expression "piVar5 = (int *)(iVar4 + iVar6)" (identifier "piVar5") (= "=") (cast_expression "(int *)(iVar4 + iVar6)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + iVar6)" (( "(") (binary_expression "iVar4 + iVar6" (identifier "iVar4") (+ "+") (identifier "iVar6")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }" (else "else") (compound_statement "{\n          if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }\n          if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }\n          iVar4 = *(int *)(param_1 + 0xc);\n          iVar3 = *(int *)(param_1 + 0x10);\n          piVar5 = (int *)(iVar4 + iVar6);\n        }" ({ "{") (if_statement "if (piVar1[7] == 0) {\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }\n          else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }" (if "if") (parenthesized_expression "(piVar1[7] == 0)" (( "(") (binary_expression "piVar1[7] == 0" (subscript_expression "piVar1[7]" (identifier "piVar1") ([ "[") (number_literal "7") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001951b0:\n            FUN_000b1760(iVar3);\n            FUN_001e6d90(piVar5[1],0x40);\n          }" ({ "{") (labeled_statement "LAB_001951b0:\n            FUN_000b1760(iVar3);" (statement_identifier "LAB_001951b0") (: ":") (expression_statement "FUN_000b1760(iVar3);" (call_expression "FUN_000b1760(iVar3)" (identifier "FUN_000b1760") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";"))) (expression_statement "FUN_001e6d90(piVar5[1],0x40);" (call_expression "FUN_001e6d90(piVar5[1],0x40)" (identifier "FUN_001e6d90") (argument_list "(piVar5[1],0x40)" (( "(") (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (, ",") (number_literal "0x40") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }" (else "else") (compound_statement "{\n            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n            iVar3 = piVar5[1];\n            if (iVar3 != 0) goto LAB_001951b0;\n          }" ({ "{") (expression_statement "FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));" (call_expression "FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4))" (identifier "FUN_000669a0") (argument_list "(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4))" (( "(") (binary_expression "piVar1[7] + 0x1c" (subscript_expression "piVar1[7]" (identifier "piVar1") ([ "[") (number_literal "7") (] "]")) (+ "+") (number_literal "0x1c")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = piVar5[1];" (assignment_expression "iVar3 = piVar5[1]" (identifier "iVar3") (= "=") (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar3 != 0) goto LAB_001951b0;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001951b0;" (goto "goto") (statement_identifier "LAB_001951b0") (; ";"))) (} "}")))) (if_statement "if (piVar1[7] != 0) {\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }" (if "if") (parenthesized_expression "(piVar1[7] != 0)" (( "(") (binary_expression "piVar1[7] != 0" (subscript_expression "piVar1[7]" (identifier "piVar1") ([ "[") (number_literal "7") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));\n          }" ({ "{") (expression_statement "FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));" (call_expression "FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4))" (identifier "FUN_000679d0") (argument_list "(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4))" (( "(") (binary_expression "piVar1[7] + 0x1c" (subscript_expression "piVar1[7]" (identifier "piVar1") ([ "[") (number_literal "7") (] "]")) (+ "+") (number_literal "0x1c")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "piVar5 = (int *)(iVar4 + iVar6);" (assignment_expression "piVar5 = (int *)(iVar4 + iVar6)" (identifier "piVar5") (= "=") (cast_expression "(int *)(iVar4 + iVar6)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + iVar6)" (( "(") (binary_expression "iVar4 + iVar6" (identifier "iVar4") (+ "+") (identifier "iVar6")) () ")")))) (; ";")) (} "}")))) (} "}")))) (expression_statement "*piVar5 = *(int *)(iVar3 + -0xc);" (assignment_expression "*piVar5 = *(int *)(iVar3 + -0xc)" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (pointer_expression "*(int *)(iVar3 + -0xc)" (* "*") (cast_expression "(int *)(iVar3 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + -0xc)" (( "(") (binary_expression "iVar3 + -0xc" (identifier "iVar3") (+ "+") (number_literal "-0xc")) () ")"))))) (; ";")) (expression_statement "piVar5[1] = *(int *)(iVar3 + -8);" (assignment_expression "piVar5[1] = *(int *)(iVar3 + -8)" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(int *)(iVar3 + -8)" (* "*") (cast_expression "(int *)(iVar3 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + -8)" (( "(") (binary_expression "iVar3 + -8" (identifier "iVar3") (+ "+") (number_literal "-8")) () ")"))))) (; ";")) (expression_statement "piVar5[2] = *(int *)(iVar3 + -4);" (assignment_expression "piVar5[2] = *(int *)(iVar3 + -4)" (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*(int *)(iVar3 + -4)" (* "*") (cast_expression "(int *)(iVar3 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + -4)" (( "(") (binary_expression "iVar3 + -4" (identifier "iVar3") (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 0x10) = iVar3 + -0xc;" (assignment_expression "*(int *)(param_1 + 0x10) = iVar3 + -0xc" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "iVar3 + -0xc" (identifier "iVar3") (+ "+") (number_literal "-0xc"))) (; ";")) (expression_statement "iVar3 = iVar3 + -0xc;" (assignment_expression "iVar3 = iVar3 + -0xc" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -0xc" (identifier "iVar3") (+ "+") (number_literal "-0xc"))) (; ";")) (if_statement "if (local_34 != local_2c) {\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }" (if "if") (parenthesized_expression "(local_34 != local_2c)" (( "(") (binary_expression "local_34 != local_2c" (identifier "local_34") (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n        FUN_001e6db0(local_34);\n        iVar4 = *(int *)(param_1 + 0xc);\n        iVar3 = *(int *)(param_1 + 0x10);\n      }" ({ "{") (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" (identifier "FUN_001e6db0") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x10)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (goto_statement "goto LAB_00195018;" (goto "goto") (statement_identifier "LAB_00195018") (; ";")) (} "}")))) (if_statement "if (!bVar2) {\n      return;\n    }" (if "if") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void add_symbols(Lib_group * this, Symbol_table * symtab, Layout *
   layout, Input_objects * input_objects) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 *symtab,type_3 *layout,type_4 *input_objects)

{
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  type_5 *var_10;
  bool bVar3;
  int var_13;
  type_6 *var_12;
  type_7 var_9;
  type_7 var_18;
  type_8 *member;
  type_9 *in_stack_ffffff98;
  type_10 var_8;
  type_11 why;
  
  var_18 = (this->members_).
           super__Vector_base<gold::type_8,_std::var_1<gold::type_8>var_3>._M_impl.
           _M_finish;
  var_9 = (this->members_).
           super__Vector_base<gold::type_8,_std::var_1<gold::type_8>var_3>._M_impl.
           _M_start;
  var_6 = var_6 + 1;
  var_7 = var_7 + ((int)var_18 - (int)var_9 >> 2) * -0x55555555;
  var_5 = &why.field_2;
  do {
    var_8 = 0;
    bVar3 = false;
LAB_00195018:
    if (var_8 < (type_10)(((int)var_18 - (int)var_9 >> 2) * -0x55555555)) {
      member = var_9 + var_8;
      var_10 = member->obj_;
      why._M_string_length = 0;
      why.field_2._M_local_buf[0] = '\0';
      why._M_dataplus._M_p = (type_7)var_5;
      if (var_10 == (type_5 *)0x0) {
        if (member->sd_ != (type_6 *)0x0) {
                    /* WARNING: Subroutine does not return */
          var_11("../../gold/archive.cc",0x4e0,"add_symbols");
        }
      }
      else {
        var_12 = member->sd_;
        if ((var_12 == (type_6 *)0x0) || (var_12->symbol_names != (type_12 *)0x0)) {
                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */
          var_13 = (*var_10->_vptr_Object[0xb])(var_10,symtab,layout,var_12,&why);
          if (var_13 != 1) {
            var_8 = var_8 + 1;
            if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                 *)why._M_dataplus._M_p != var_5) {
              var_14(why._M_dataplus._M_p);
            }
            var_9 = (this->members_).
                     super__Vector_base<gold::type_8,_std::var_1<gold::type_8>var_3>
                     ._M_impl._M_start;
            var_18 = (this->members_).
                     super__Vector_base<gold::type_8,_std::var_1<gold::type_8>var_3>
                     ._M_impl._M_finish;
            goto LAB_00195018;
          }
          var_15(this,symtab,layout,input_objects,member);
          bVar3 = true;
          var_9 = (this->members_).
                   super__Vector_base<gold::type_8,_std::var_1<gold::type_8>var_3>.
                   _M_impl._M_start;
          var_18 = (this->members_).
                   super__Vector_base<gold::type_8,_std::var_1<gold::type_8>var_3>.
                   _M_impl._M_finish;
          member = var_9 + var_8;
        }
        else {
          if (var_10->input_file_ == (type_13 *)0x0) {
LAB_001951b0:
            Read_symbols_data::~type_6(var_12,(int)in_stack_ffffff98);
            in_stack_ffffff98 = (type_9 *)0x40;
            var_14(member->sd_,0x40);
          }
          else {
            in_stack_ffffff98 = (this->super_Library_base).task_;
            File_read::var_16(&var_10->input_file_->file_,in_stack_ffffff98);
            var_12 = member->sd_;
            if (var_12 != (type_6 *)0x0) goto LAB_001951b0;
          }
          if (var_10->input_file_ != (type_13 *)0x0) {
            in_stack_ffffff98 = (this->super_Library_base).task_;
            File_read::var_17(&var_10->input_file_->file_,in_stack_ffffff98);
          }
          var_9 = (this->members_).
                   super__Vector_base<gold::type_8,_std::var_1<gold::type_8>var_3>.
                   _M_impl._M_start;
          var_18 = (this->members_).
                   super__Vector_base<gold::type_8,_std::var_1<gold::type_8>var_3>.
                   _M_impl._M_finish;
          member = var_9 + var_8;
        }
      }
      member->obj_ = var_18[-1].obj_;
      member->sd_ = var_18[-1].sd_;
      member->arg_serial_ = var_18[-1].arg_serial_;
      (this->members_).
      super__Vector_base<gold::type_8,_std::var_1<gold::type_8>var_3>._M_impl.
      _M_finish = var_18 + -1;
      var_18 = var_18 + -1;
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)why._M_dataplus._M_p != var_5) {
        var_14(why._M_dataplus._M_p);
        var_9 = (this->members_).
                 super__Vector_base<gold::type_8,_std::var_1<gold::type_8>var_3>.
                 _M_impl._M_start;
        var_18 = (this->members_).
                 super__Vector_base<gold::type_8,_std::var_1<gold::type_8>var_3>.
                 _M_impl._M_finish;
      }
      goto LAB_00195018;
    }
    if (!bVar3) {
      return;
    }
  } while( true );
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void MASKED(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  bool bVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  uint local_48;
  undefined1 *local_34;
  undefined4 local_30;
  undefined1 local_2c [28];
  
  iVar3 = *(int *)(param_1 + 0x10);
  iVar4 = *(int *)(param_1 + 0xc);
  DAT_0039626c = DAT_0039626c + 1;
  DAT_00396268 = DAT_00396268 + (iVar3 - iVar4 >> 2) * -0x55555555;
  do {
    local_48 = 0;
    bVar2 = false;
LAB_00195018:
    if (local_48 < (uint)((iVar3 - iVar4 >> 2) * -0x55555555)) {
      iVar6 = local_48 * 0xc;
      piVar5 = (int *)(iVar4 + iVar6);
      piVar1 = (int *)*piVar5;
      local_30 = 0;
      local_2c[0] = 0;
      local_34 = local_2c;
      if (piVar1 == (int *)0x0) {
        if (piVar5[1] != 0) {
                    /* WARNING: Subroutine does not return */
          FUN_00069d00("../../gold/archive.cc",0x4e0,"add_symbols");
        }
      }
      else {
        iVar3 = piVar5[1];
        if ((iVar3 == 0) || (*(int *)(iVar3 + 0x18) != 0)) {
                    /* try { // try from 00195078 to 00195194 has its CatchHandler @ 001951ea */
          iVar3 = (**(code **)(*piVar1 + 0x2c))(piVar1,param_2,param_3,iVar3,&local_34);
          if (iVar3 != 1) {
            local_48 = local_48 + 1;
            if (local_34 != local_2c) {
              FUN_001e6db0(local_34);
            }
            iVar4 = *(int *)(param_1 + 0xc);
            iVar3 = *(int *)(param_1 + 0x10);
            goto LAB_00195018;
          }
          FUN_00194e50(param_1,param_2,param_3,param_4,piVar5);
          bVar2 = true;
          iVar4 = *(int *)(param_1 + 0xc);
          iVar3 = *(int *)(param_1 + 0x10);
          piVar5 = (int *)(iVar4 + iVar6);
        }
        else {
          if (piVar1[7] == 0) {
LAB_001951b0:
            FUN_000b1760(iVar3);
            FUN_001e6d90(piVar5[1],0x40);
          }
          else {
            FUN_000669a0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));
            iVar3 = piVar5[1];
            if (iVar3 != 0) goto LAB_001951b0;
          }
          if (piVar1[7] != 0) {
            FUN_000679d0(piVar1[7] + 0x1c,*(undefined4 *)(param_1 + 4));
          }
          iVar4 = *(int *)(param_1 + 0xc);
          iVar3 = *(int *)(param_1 + 0x10);
          piVar5 = (int *)(iVar4 + iVar6);
        }
      }
      *piVar5 = *(int *)(iVar3 + -0xc);
      piVar5[1] = *(int *)(iVar3 + -8);
      piVar5[2] = *(int *)(iVar3 + -4);
      *(int *)(param_1 + 0x10) = iVar3 + -0xc;
      iVar3 = iVar3 + -0xc;
      if (local_34 != local_2c) {
        FUN_001e6db0(local_34);
        iVar4 = *(int *)(param_1 + 0xc);
        iVar3 = *(int *)(param_1 + 0x10);
      }
      goto LAB_00195018;
    }
    if (!bVar2) {
      return;
    }
  } while( true );
}

