
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool include_all_members(Archive * this, Symbol_table * symtab, Layout
   * layout, Input_objects * input_objects, Mapfile * mapfile) */

bool __thiscall
gold::Archive::include_all_members
          (Archive *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects,
          Mapfile *mapfile)

{
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar1;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar2;
  off_t off;
  uint uVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  bool bVar7;
  char cVar8;
  _Rb_tree_node_base *p_Var9;
  const_iterator p;
  const_iterator local_58;
  
  cVar8 = this->included_all_members_;
  if ((bool)cVar8 == false) {
    this->included_all_members_ = true;
    Input_objects::archive_start(input_objects,this);
    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count != 0) {
      for (p_Var9 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;
          (_Rb_tree_header *)p_Var9 != &(this->members_)._M_t._M_impl.super__Rb_tree_header;
          p_Var9 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var9)) {
        off._0_4_ = p_Var9[1]._M_color;
        off._4_4_ = p_Var9[1]._M_parent;
        bVar7 = include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,
                               "--whole-archive");
        if (!bVar7) {
          return bVar7;
        }
        total_members = total_members + 1;
      }
LAB_0013bb8b:
      Input_objects::archive_stop(input_objects,this);
      return true;
    }
    paVar1 = &p.header_.name.field_2;
    p.header_.name._M_string_length = 0;
    p.off_._0_4_ = 8;
    p.archive_ = this;
    p.off_._4_4_ = 0;
    p.header_.name.field_2._M_local_buf[0] = '\0';
    p.header_.name._M_dataplus._M_p = (pointer)paVar1;
                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */
    const_iterator::read_next_header(&p);
    paVar2 = &local_58.header_.name.field_2;
    while( true ) {
      local_58.header_.name._M_string_length = 0;
      local_58.header_.name.field_2._M_local_buf[0] = '\0';
      local_58.archive_ = this;
      local_58.off_._4_4_ = *(undefined4 *)((int)&(this->input_file_->file_).size_ + 4);
      local_58.off_._0_4_ = (undefined4)(this->input_file_->file_).size_;
      local_58.header_.name._M_dataplus._M_p = (pointer)paVar2;
                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */
      const_iterator::read_next_header(&local_58);
      iVar6 = local_58.header_.off._4_4_;
      uVar5 = (uint)local_58.header_.off;
      iVar4 = p.off_._4_4_;
      uVar3 = (uint)p.off_;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)local_58.header_.name._M_dataplus._M_p != paVar2) {
        operator_delete(local_58.header_.name._M_dataplus._M_p);
      }
      if (iVar6 == iVar4 && uVar3 == uVar5) {
        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
             *)p.header_.name._M_dataplus._M_p != paVar1) {
          operator_delete(p.header_.name._M_dataplus._M_p);
        }
        goto LAB_0013bb8b;
      }
                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */
      cVar8 = include_member(this,symtab,layout,input_objects,
                             CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off),mapfile,
                             (Symbol *)0x0,"--whole-archive");
      if (!(bool)cVar8) break;
      total_members = total_members + 1;
      if ((uint)((p.archive_)->input_file_->file_).size_ != (uint)p.off_ ||
          *(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_) {
        bVar7 = 0xffffffc3 < (uint)p.off_;
        p.off_._0_4_ = (uint)p.off_ + 0x3c;
        p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;
        if ((p.archive_)->is_thin_archive_ == false) {
          bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);
          p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;
          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;
        }
        if (((uint)p.off_ & 1) != 0) {
          bVar7 = 0xfffffffe < (uint)p.off_;
          p.off_._0_4_ = (uint)p.off_ + 1;
          p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;
        }
        const_iterator::read_next_header(&p);
      }
    }
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)p.header_.name._M_dataplus._M_p != paVar1) {
      operator_delete(p.header_.name._M_dataplus._M_p);
    }
  }
  return (bool)cVar8;
}



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

uint FUN_0013bac0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  bool bVar5;
  int local_94;
  uint local_90;
  int local_8c;
  undefined1 *local_88;
  undefined4 local_84;
  undefined1 local_80 [16];
  undefined4 local_70;
  undefined4 local_6c;
  uint local_60;
  int local_5c;
  int local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined1 *local_4c;
  undefined4 local_48;
  undefined1 local_44 [16];
  uint local_34;
  int local_30;
  
  uVar3 = (uint)*(byte *)(param_1 + 0xd5);
  if (*(byte *)(param_1 + 0xd5) == 0) {
    *(undefined1 *)(param_1 + 0xd5) = 1;
    FUN_00092300(param_4,param_1);
    if (*(int *)(param_1 + 0xa8) != 0) {
      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;
          iVar4 = thunk_FUN_00181d80(iVar4)) {
        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),
                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");
        if ((char)uVar3 == '\0') {
          return uVar3;
        }
        DAT_00309274 = DAT_00309274 + 1;
      }
LAB_0013bb8b:
      FUN_000923a0(param_4,param_1);
      return 1;
    }
    local_84 = 0;
    local_90 = 8;
    local_94 = param_1;
    local_8c = 0;
    local_80[0] = 0;
    local_88 = local_80;
                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */
    FUN_00139080(&local_94);
    while( true ) {
      local_48 = 0;
      local_44[0] = 0;
      local_58 = param_1;
      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);
      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);
      local_4c = local_44;
                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */
      FUN_00139080(&local_58);
      iVar2 = local_30;
      uVar1 = local_34;
      iVar4 = local_8c;
      uVar3 = local_90;
      if (local_4c != local_44) {
        FUN_001807a0(local_4c);
      }
      if (iVar2 == iVar4 && uVar3 == uVar1) {
        if (local_88 != local_80) {
          FUN_001807a0(local_88);
        }
        goto LAB_0013bb8b;
      }
                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */
      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,
                           "--whole-archive");
      if ((char)uVar3 == '\0') break;
      DAT_00309274 = DAT_00309274 + 1;
      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||
          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {
        bVar5 = 0xffffffc3 < local_90;
        local_90 = local_90 + 0x3c;
        local_8c = local_8c + (uint)bVar5;
        if (*(char *)(local_94 + 0xac) == '\0') {
          bVar5 = CARRY4(local_90,local_60);
          local_90 = local_90 + local_60;
          local_8c = local_8c + local_5c + (uint)bVar5;
        }
        if ((local_90 & 1) != 0) {
          bVar5 = 0xfffffffe < local_90;
          local_90 = local_90 + 1;
          local_8c = local_8c + (uint)bVar5;
        }
        FUN_00139080(&local_94);
      }
    }
    if (local_88 != local_80) {
      FUN_001807a0(local_88);
      uVar3 = uVar3 & 0xff;
    }
  }
  return uVar3;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
CALL 0x0004fb7a
ADD ESI,0x1c6536
PUSH EBX
SUB ESP,0xac
MOV EAX,dword ptr [EBP + 0x8]
MOVZX EAX,byte ptr [EAX + 0xd5]
TEST AL,AL
JZ 0x0013baf0
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0x8
MOV EBX,ESI
MOV byte ptr [EAX + 0xd5],0x1
PUSH EAX
PUSH dword ptr [EBP + 0x14]
CALL 0x00092300
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV EDX,dword ptr [EAX + 0xa8]
TEST EDX,EDX
JZ 0x0013bbb0
MOV EBX,dword ptr [EAX + 0xa0]
LEA EDI,[EAX + 0x98]
LEA EAX,[ESI + 0xfff323c2]
CMP EBX,EDI
JZ 0x0013bb8b
MOV dword ptr [EBP + 0xffffff64],EAX
LEA ESI,[ESI]
NOP
SUB ESP,0xc
PUSH dword ptr [EBP + 0xffffff64]
PUSH 0x0
PUSH dword ptr [EBP + 0x18]
PUSH dword ptr [EBX + 0x14]
PUSH dword ptr [EBX + 0x10]
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0x8]
CALL 0x0013b7f0
ADD ESP,0x30
TEST AL,AL
JZ 0x0013bae5
SUB ESP,0xc
ADD dword ptr [ESI + 0x7274],0x1
PUSH EBX
MOV EBX,ESI
CALL 0x00181dd0
ADD ESP,0x10
MOV EBX,EAX
CMP EAX,EDI
JNZ 0x0013bb40
SUB ESP,0x8
PUSH dword ptr [EBP + 0x8]
MOV EBX,ESI
PUSH dword ptr [EBP + 0x14]
CALL 0x000923a0
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
LEA EDX,[EBP + -0x7c]
MOV dword ptr [EBP + -0x80],0x0
MOV dword ptr [EBP + 0xffffff74],0x8
MOV dword ptr [EBP + 0xffffff70],EAX
LEA EAX,[EBP + 0xffffff70]
PUSH EAX
MOV dword ptr [EBP + 0xffffff78],0x0
MOV dword ptr [EBP + 0xffffff4c],EAX
MOV dword ptr [EBP + 0xffffff48],EDX
MOV dword ptr [EBP + 0xffffff7c],EDX
MOV byte ptr [EBP + -0x7c],0x0
CALL 0x00139080
LEA EAX,[EBP + -0x54]
ADD ESP,0x10
MOV dword ptr [EBP + 0xffffff5c],EAX
LEA EAX,[EBP + -0x40]
MOV dword ptr [EBP + 0xffffff60],EAX
LEA EAX,[ESI + 0xfff323c2]
MOV dword ptr [EBP + 0xffffff50],EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EDI,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x44],0x0
MOV EBX,dword ptr [EBP + 0xffffff60]
MOV byte ptr [EBP + -0x40],0x0
MOV EAX,dword ptr [EAX + 0x24]
MOV dword ptr [EBP + -0x54],EDI
MOV dword ptr [EBP + -0x48],EBX
MOV EDX,dword ptr [EAX + 0x44]
MOV EAX,dword ptr [EAX + 0x40]
PUSH dword ptr [EBP + 0xffffff5c]
MOV dword ptr [EBP + -0x50],EAX
MOV dword ptr [EBP + -0x4c],EDX
CALL 0x00139080
MOV EAX,dword ptr [EBP + 0xffffff78]
MOV ECX,dword ptr [EBP + -0x48]
ADD ESP,0x10
MOV EDI,dword ptr [EBP + 0xffffff74]
MOV EDX,dword ptr [EBP + -0x30]
MOV dword ptr [EBP + 0xffffff64],EAX
MOV EAX,dword ptr [EBP + -0x2c]
CMP ECX,EBX
JZ 0x0013bca2
SUB ESP,0xc
MOV EBX,ESI
MOV dword ptr [EBP + 0xffffff54],EAX
PUSH ECX
MOV dword ptr [EBP + 0xffffff58],EDX
CALL 0x001807a0
MOV EAX,dword ptr [EBP + 0xffffff54]
MOV EDX,dword ptr [EBP + 0xffffff58]
ADD ESP,0x10
XOR EDI,EDX
XOR EAX,dword ptr [EBP + 0xffffff64]
OR EAX,EDI
JZ 0x0013bd80
SUB ESP,0xc
PUSH dword ptr [EBP + 0xffffff50]
PUSH 0x0
PUSH dword ptr [EBP + 0x18]
PUSH dword ptr [EBP + -0x68]
PUSH dword ptr [EBP + -0x6c]
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0x8]
CALL 0x0013b7f0
ADD ESP,0x30
TEST AL,AL
JZ 0x0013bda8
MOV EDI,dword ptr [EBP + 0xffffff70]
MOV EAX,dword ptr [EBP + 0xffffff74]
MOV EDX,dword ptr [EBP + 0xffffff78]
ADD dword ptr [ESI + 0x7274],0x1
MOV ECX,dword ptr [EDI + 0x24]
MOV EBX,dword ptr [ECX + 0x40]
XOR EBX,EAX
MOV dword ptr [EBP + 0xffffff64],EBX
MOV EBX,dword ptr [ECX + 0x44]
XOR EBX,EDX
MOV ECX,EBX
MOV EBX,dword ptr [EBP + 0xffffff64]
OR EBX,ECX
JZ 0x0013bc20
ADD EAX,0x3c
ADC EDX,0x0
CMP byte ptr [EDI + 0xac],0x0
MOV dword ptr [EBP + 0xffffff74],EAX
MOV dword ptr [EBP + 0xffffff78],EDX
JNZ 0x0013bd4b
ADD EAX,dword ptr [EBP + -0x5c]
ADC EDX,dword ptr [EBP + -0x58]
MOV dword ptr [EBP + 0xffffff74],EAX
MOV dword ptr [EBP + 0xffffff78],EDX
MOV ECX,EAX
AND ECX,0x1
JZ 0x0013bd64
ADD EAX,0x1
ADC EDX,0x0
MOV dword ptr [EBP + 0xffffff74],EAX
MOV dword ptr [EBP + 0xffffff78],EDX
SUB ESP,0xc
PUSH dword ptr [EBP + 0xffffff4c]
CALL 0x00139080
ADD ESP,0x10
JMP 0x0013bc20
MOV EAX,dword ptr [EBP + 0xffffff7c]
CMP EAX,dword ptr [EBP + 0xffffff48]
JZ 0x0013bb8b
SUB ESP,0xc
MOV EBX,ESI
PUSH EAX
CALL 0x001807a0
ADD ESP,0x10
JMP 0x0013bb8b
MOV EDX,dword ptr [EBP + 0xffffff7c]
CMP EDX,dword ptr [EBP + 0xffffff48]
JZ 0x0013bae5
SUB ESP,0xc
MOV EBX,ESI
MOV byte ptr [EBP + 0xffffff64],AL
PUSH EDX
CALL 0x001807a0
ADD ESP,0x10
MOVZX EAX,byte ptr [EBP + 0xffffff64]
JMP 0x0013bae5
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nuint FUN_0013bac0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  int local_94;\n  uint local_90;\n  int local_8c;\n  undefined1 *local_88;\n  undefined4 local_84;\n  undefined1 local_80 [16];\n  undefined4 local_70;\n  undefined4 local_6c;\n  uint local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined1 local_44 [16];\n  uint local_34;\n  int local_30;\n  \n  uVar3 = (uint)*(byte *)(param_1 + 0xd5);\n  if (*(byte *)(param_1 + 0xd5) == 0) {\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */\n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }\n  return uVar3;\n}\n\n" comment (function_definition "uint FUN_0013bac0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  int local_94;\n  uint local_90;\n  int local_8c;\n  undefined1 *local_88;\n  undefined4 local_84;\n  undefined1 local_80 [16];\n  undefined4 local_70;\n  undefined4 local_6c;\n  uint local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined1 local_44 [16];\n  uint local_34;\n  int local_30;\n  \n  uVar3 = (uint)*(byte *)(param_1 + 0xd5);\n  if (*(byte *)(param_1 + 0xd5) == 0) {\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */\n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_0013bac0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)" ( (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) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  int local_94;\n  uint local_90;\n  int local_8c;\n  undefined1 *local_88;\n  undefined4 local_84;\n  undefined1 local_80 [16];\n  undefined4 local_70;\n  undefined4 local_6c;\n  uint local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined1 local_44 [16];\n  uint local_34;\n  int local_30;\n  \n  uVar3 = (uint)*(byte *)(param_1 + 0xd5);\n  if (*(byte *)(param_1 + 0xd5) == 0) {\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */\n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }\n  return uVar3;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "uint local_90;" type_identifier identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "undefined1 *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "undefined4 local_84;" type_identifier identifier ;) (declaration "undefined1 local_80 [16];" type_identifier (array_declarator "local_80 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_70;" type_identifier identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined1 *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined1 local_44 [16];" type_identifier (array_declarator "local_44 [16]" identifier [ number_literal ]) ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (expression_statement "uVar3 = (uint)*(byte *)(param_1 + 0xd5);" (assignment_expression "uVar3 = (uint)*(byte *)(param_1 + 0xd5)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 0xd5)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 0xd5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd5)" ( (binary_expression "param_1 + 0xd5" identifier + number_literal) ))))) ;) (if_statement "if (*(byte *)(param_1 + 0xd5) == 0) {\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */\n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }" if (parenthesized_expression "(*(byte *)(param_1 + 0xd5) == 0)" ( (binary_expression "*(byte *)(param_1 + 0xd5) == 0" (pointer_expression "*(byte *)(param_1 + 0xd5)" * (cast_expression "(byte *)(param_1 + 0xd5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd5)" ( (binary_expression "param_1 + 0xd5" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */\n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }" { (expression_statement "*(undefined1 *)(param_1 + 0xd5) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0xd5) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0xd5)" * (cast_expression "(undefined1 *)(param_1 + 0xd5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd5)" ( (binary_expression "param_1 + 0xd5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00092300(param_4,param_1);" (call_expression "FUN_00092300(param_4,param_1)" identifier (argument_list "(param_4,param_1)" ( identifier , identifier ))) ;) (if_statement "if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0xa8) != 0)" ( (binary_expression "*(int *)(param_1 + 0xa8) != 0" (pointer_expression "*(int *)(param_1 + 0xa8)" * (cast_expression "(int *)(param_1 + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }" { (for_statement "for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }" for ( (assignment_expression "iVar4 = *(int *)(param_1 + 0xa0)" identifier = (pointer_expression "*(int *)(param_1 + 0xa0)" * (cast_expression "(int *)(param_1 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ; (binary_expression "iVar4 != param_1 + 0x98" identifier != (binary_expression "param_1 + 0x98" identifier + number_literal)) ; (assignment_expression "iVar4 = thunk_FUN_00181d80(iVar4)" identifier = (call_expression "thunk_FUN_00181d80(iVar4)" identifier (argument_list "(iVar4)" ( identifier )))) ) (compound_statement "{\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }" { (expression_statement "uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");" (assignment_expression "uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive")" identifier = (call_expression "FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive")" identifier (argument_list "(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive")" ( identifier , identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(iVar4 + 0x10)" * (cast_expression "(undefined4 *)(iVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar4 + 0x14)" * (cast_expression "(undefined4 *)(iVar4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) , identifier , number_literal , (string_literal ""--whole-archive"" " string_content ") )))) ;) (if_statement "if ((char)uVar3 == '\0') {\n          return uVar3;\n        }" if (parenthesized_expression "((char)uVar3 == '\0')" ( (binary_expression "(char)uVar3 == '\0'" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return uVar3;\n        }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "DAT_00309274 = DAT_00309274 + 1;" (assignment_expression "DAT_00309274 = DAT_00309274 + 1" identifier = (binary_expression "DAT_00309274 + 1" identifier + number_literal)) ;) })) (labeled_statement "LAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);" statement_identifier : (expression_statement "FUN_000923a0(param_4,param_1);" (call_expression "FUN_000923a0(param_4,param_1)" identifier (argument_list "(param_4,param_1)" ( identifier , identifier ))) ;)) (return_statement "return 1;" return number_literal ;) })) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "local_90 = 8;" (assignment_expression "local_90 = 8" identifier = number_literal) ;) (expression_statement "local_94 = param_1;" (assignment_expression "local_94 = param_1" identifier = identifier) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "local_80[0] = 0;" (assignment_expression "local_80[0] = 0" (subscript_expression "local_80[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_88 = local_80;" (assignment_expression "local_88 = local_80" identifier = identifier) ;) comment (expression_statement "FUN_00139080(&local_94);" (call_expression "FUN_00139080(&local_94)" identifier (argument_list "(&local_94)" ( (pointer_expression "&local_94" & identifier) ))) ;) (while_statement "while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }" { (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44[0] = 0;" (assignment_expression "local_44[0] = 0" (subscript_expression "local_44[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_58 = param_1;" (assignment_expression "local_58 = param_1" identifier = identifier) ;) (expression_statement "local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);" (assignment_expression "local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x24) + 0x44)" ( (binary_expression "*(int *)(param_1 + 0x24) + 0x44" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);" (assignment_expression "local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x24) + 0x40)" ( (binary_expression "*(int *)(param_1 + 0x24) + 0x40" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "local_4c = local_44;" (assignment_expression "local_4c = local_44" identifier = identifier) ;) comment (expression_statement "FUN_00139080(&local_58);" (call_expression "FUN_00139080(&local_58)" identifier (argument_list "(&local_58)" ( (pointer_expression "&local_58" & identifier) ))) ;) (expression_statement "iVar2 = local_30;" (assignment_expression "iVar2 = local_30" identifier = identifier) ;) (expression_statement "uVar1 = local_34;" (assignment_expression "uVar1 = local_34" identifier = identifier) ;) (expression_statement "iVar4 = local_8c;" (assignment_expression "iVar4 = local_8c" identifier = identifier) ;) (expression_statement "uVar3 = local_90;" (assignment_expression "uVar3 = local_90" identifier = identifier) ;) (if_statement "if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n        FUN_001807a0(local_4c);\n      }" { (expression_statement "FUN_001807a0(local_4c);" (call_expression "FUN_001807a0(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) })) (if_statement "if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }" if (parenthesized_expression "(iVar2 == iVar4 && uVar3 == uVar1)" ( (binary_expression "iVar2 == iVar4 && uVar3 == uVar1" (binary_expression "iVar2 == iVar4" identifier == identifier) && (binary_expression "uVar3 == uVar1" identifier == identifier)) )) (compound_statement "{\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }" { (if_statement "if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }" if (parenthesized_expression "(local_88 != local_80)" ( (binary_expression "local_88 != local_80" identifier != identifier) )) (compound_statement "{\n          FUN_001807a0(local_88);\n        }" { (expression_statement "FUN_001807a0(local_88);" (call_expression "FUN_001807a0(local_88)" identifier (argument_list "(local_88)" ( identifier ))) ;) })) (goto_statement "goto LAB_0013bb8b;" goto statement_identifier ;) })) comment (expression_statement "uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");" (assignment_expression "uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive")" identifier = (call_expression "FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive")" identifier (argument_list "(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive")" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , number_literal , (string_literal ""--whole-archive"" " string_content ") )))) ;) (if_statement "if ((char)uVar3 == '\0') break;" if (parenthesized_expression "((char)uVar3 == '\0')" ( (binary_expression "(char)uVar3 == '\0'" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "DAT_00309274 = DAT_00309274 + 1;" (assignment_expression "DAT_00309274 = DAT_00309274 + 1" identifier = (binary_expression "DAT_00309274 + 1" identifier + number_literal)) ;) (if_statement "if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }" if (parenthesized_expression "(*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c)" ( (binary_expression "*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c" (binary_expression "*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90" (pointer_expression "*(uint *)(*(int *)(local_94 + 0x24) + 0x40)" * (cast_expression "(uint *)(*(int *)(local_94 + 0x24) + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_94 + 0x24) + 0x40)" ( (binary_expression "*(int *)(local_94 + 0x24) + 0x40" (pointer_expression "*(int *)(local_94 + 0x24)" * (cast_expression "(int *)(local_94 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_94 + 0x24)" ( (binary_expression "local_94 + 0x24" identifier + number_literal) )))) + number_literal) )))) != identifier) || (binary_expression "*(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c" (pointer_expression "*(int *)(*(int *)(local_94 + 0x24) + 0x44)" * (cast_expression "(int *)(*(int *)(local_94 + 0x24) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_94 + 0x24) + 0x44)" ( (binary_expression "*(int *)(local_94 + 0x24) + 0x44" (pointer_expression "*(int *)(local_94 + 0x24)" * (cast_expression "(int *)(local_94 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_94 + 0x24)" ( (binary_expression "local_94 + 0x24" identifier + number_literal) )))) + number_literal) )))) != identifier)) )) (compound_statement "{\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }" { (expression_statement "bVar5 = 0xffffffc3 < local_90;" (assignment_expression "bVar5 = 0xffffffc3 < local_90" identifier = (binary_expression "0xffffffc3 < local_90" number_literal < identifier)) ;) (expression_statement "local_90 = local_90 + 0x3c;" (assignment_expression "local_90 = local_90 + 0x3c" identifier = (binary_expression "local_90 + 0x3c" identifier + number_literal)) ;) (expression_statement "local_8c = local_8c + (uint)bVar5;" (assignment_expression "local_8c = local_8c + (uint)bVar5" identifier = (binary_expression "local_8c + (uint)bVar5" identifier + (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }" if (parenthesized_expression "(*(char *)(local_94 + 0xac) == '\0')" ( (binary_expression "*(char *)(local_94 + 0xac) == '\0'" (pointer_expression "*(char *)(local_94 + 0xac)" * (cast_expression "(char *)(local_94 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_94 + 0xac)" ( (binary_expression "local_94 + 0xac" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }" { (expression_statement "bVar5 = CARRY4(local_90,local_60);" (assignment_expression "bVar5 = CARRY4(local_90,local_60)" identifier = (call_expression "CARRY4(local_90,local_60)" identifier (argument_list "(local_90,local_60)" ( identifier , identifier )))) ;) (expression_statement "local_90 = local_90 + local_60;" (assignment_expression "local_90 = local_90 + local_60" identifier = (binary_expression "local_90 + local_60" identifier + identifier)) ;) (expression_statement "local_8c = local_8c + local_5c + (uint)bVar5;" (assignment_expression "local_8c = local_8c + local_5c + (uint)bVar5" identifier = (binary_expression "local_8c + local_5c + (uint)bVar5" (binary_expression "local_8c + local_5c" identifier + identifier) + (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) })) (if_statement "if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }" if (parenthesized_expression "((local_90 & 1) != 0)" ( (binary_expression "(local_90 & 1) != 0" (parenthesized_expression "(local_90 & 1)" ( (binary_expression "local_90 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }" { (expression_statement "bVar5 = 0xfffffffe < local_90;" (assignment_expression "bVar5 = 0xfffffffe < local_90" identifier = (binary_expression "0xfffffffe < local_90" number_literal < identifier)) ;) (expression_statement "local_90 = local_90 + 1;" (assignment_expression "local_90 = local_90 + 1" identifier = (binary_expression "local_90 + 1" identifier + number_literal)) ;) (expression_statement "local_8c = local_8c + (uint)bVar5;" (assignment_expression "local_8c = local_8c + (uint)bVar5" identifier = (binary_expression "local_8c + (uint)bVar5" identifier + (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) })) (expression_statement "FUN_00139080(&local_94);" (call_expression "FUN_00139080(&local_94)" identifier (argument_list "(&local_94)" ( (pointer_expression "&local_94" & identifier) ))) ;) })) })) (if_statement "if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }" if (parenthesized_expression "(local_88 != local_80)" ( (binary_expression "local_88 != local_80" identifier != identifier) )) (compound_statement "{\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }" { (expression_statement "FUN_001807a0(local_88);" (call_expression "FUN_001807a0(local_88)" identifier (argument_list "(local_88)" ( identifier ))) ;) (expression_statement "uVar3 = uVar3 & 0xff;" (assignment_expression "uVar3 = uVar3 & 0xff" identifier = (binary_expression "uVar3 & 0xff" identifier & number_literal)) ;) })) })) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: bool include_all_members(Archive * this, Symbol_table * symtab, Layout\n   * layout, Input_objects * input_objects, Mapfile * mapfile) */\n\nbool __thiscall\ngold::Archive::include_all_members\n          (Archive *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects,\n          Mapfile *mapfile)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  off_t off;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  bool bVar7;\n  char cVar8;\n  _Rb_tree_node_base *p_Var9;\n  const_iterator p;\n  const_iterator local_58;\n  \n  cVar8 = this->included_all_members_;\n  if ((bool)cVar8 == false) {\n    this->included_all_members_ = true;\n    Input_objects::archive_start(input_objects,this);\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count != 0) {\n      for (p_Var9 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n          (_Rb_tree_header *)p_Var9 != &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n          p_Var9 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var9)) {\n        off._0_4_ = p_Var9[1]._M_color;\n        off._4_4_ = p_Var9[1]._M_parent;\n        bVar7 = include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive");\n        if (!bVar7) {\n          return bVar7;\n        }\n        total_members = total_members + 1;\n      }\nLAB_0013bb8b:\n      Input_objects::archive_stop(input_objects,this);\n      return true;\n    }\n    paVar1 = &p.header_.name.field_2;\n    p.header_.name._M_string_length = 0;\n    p.off_._0_4_ = 8;\n    p.archive_ = this;\n    p.off_._4_4_ = 0;\n    p.header_.name.field_2._M_local_buf[0] = '\0';\n    p.header_.name._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */\n    const_iterator::read_next_header(&p);\n    paVar2 = &local_58.header_.name.field_2;\n    while( true ) {\n      local_58.header_.name._M_string_length = 0;\n      local_58.header_.name.field_2._M_local_buf[0] = '\0';\n      local_58.archive_ = this;\n      local_58.off_._4_4_ = *(undefined4 *)((int)&(this->input_file_->file_).size_ + 4);\n      local_58.off_._0_4_ = (undefined4)(this->input_file_->file_).size_;\n      local_58.header_.name._M_dataplus._M_p = (pointer)paVar2;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      const_iterator::read_next_header(&local_58);\n      iVar6 = local_58.header_.off._4_4_;\n      uVar5 = (uint)local_58.header_.off;\n      iVar4 = p.off_._4_4_;\n      uVar3 = (uint)p.off_;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_58.header_.name._M_dataplus._M_p != paVar2) {\n        operator_delete(local_58.header_.name._M_dataplus._M_p);\n      }\n      if (iVar6 == iVar4 && uVar3 == uVar5) {\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)p.header_.name._M_dataplus._M_p != paVar1) {\n          operator_delete(p.header_.name._M_dataplus._M_p);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      cVar8 = include_member(this,symtab,layout,input_objects,\n                             CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off),mapfile,\n                             (Symbol *)0x0,"--whole-archive");\n      if (!(bool)cVar8) break;\n      total_members = total_members + 1;\n      if ((uint)((p.archive_)->input_file_->file_).size_ != (uint)p.off_ ||\n          *(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_) {\n        bVar7 = 0xffffffc3 < (uint)p.off_;\n        p.off_._0_4_ = (uint)p.off_ + 0x3c;\n        p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);\n          p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;\n          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;\n        }\n        if (((uint)p.off_ & 1) != 0) {\n          bVar7 = 0xfffffffe < (uint)p.off_;\n          p.off_._0_4_ = (uint)p.off_ + 1;\n          p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        }\n        const_iterator::read_next_header(&p);\n      }\n    }\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)p.header_.name._M_dataplus._M_p != paVar1) {\n      operator_delete(p.header_.name._M_dataplus._M_p);\n    }\n  }\n  return (bool)cVar8;\n}\n\n" comment comment comment comment (function_definition "bool __thiscall\ngold::Archive::include_all_members\n          (Archive *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects,\n          Mapfile *mapfile)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  off_t off;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  bool bVar7;\n  char cVar8;\n  _Rb_tree_node_base *p_Var9;\n  const_iterator p;\n  const_iterator local_58;\n  \n  cVar8 = this->included_all_members_;\n  if ((bool)cVar8 == false) {\n    this->included_all_members_ = true;\n    Input_objects::archive_start(input_objects,this);\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count != 0) {\n      for (p_Var9 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n          (_Rb_tree_header *)p_Var9 != &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n          p_Var9 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var9)) {\n        off._0_4_ = p_Var9[1]._M_color;\n        off._4_4_ = p_Var9[1]._M_parent;\n        bVar7 = include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive");\n        if (!bVar7) {\n          return bVar7;\n        }\n        total_members = total_members + 1;\n      }\nLAB_0013bb8b:\n      Input_objects::archive_stop(input_objects,this);\n      return true;\n    }\n    paVar1 = &p.header_.name.field_2;\n    p.header_.name._M_string_length = 0;\n    p.off_._0_4_ = 8;\n    p.archive_ = this;\n    p.off_._4_4_ = 0;\n    p.header_.name.field_2._M_local_buf[0] = '\0';\n    p.header_.name._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */\n    const_iterator::read_next_header(&p);\n    paVar2 = &local_58.header_.name.field_2;\n    while( true ) {\n      local_58.header_.name._M_string_length = 0;\n      local_58.header_.name.field_2._M_local_buf[0] = '\0';\n      local_58.archive_ = this;\n      local_58.off_._4_4_ = *(undefined4 *)((int)&(this->input_file_->file_).size_ + 4);\n      local_58.off_._0_4_ = (undefined4)(this->input_file_->file_).size_;\n      local_58.header_.name._M_dataplus._M_p = (pointer)paVar2;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      const_iterator::read_next_header(&local_58);\n      iVar6 = local_58.header_.off._4_4_;\n      uVar5 = (uint)local_58.header_.off;\n      iVar4 = p.off_._4_4_;\n      uVar3 = (uint)p.off_;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_58.header_.name._M_dataplus._M_p != paVar2) {\n        operator_delete(local_58.header_.name._M_dataplus._M_p);\n      }\n      if (iVar6 == iVar4 && uVar3 == uVar5) {\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)p.header_.name._M_dataplus._M_p != paVar1) {\n          operator_delete(p.header_.name._M_dataplus._M_p);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      cVar8 = include_member(this,symtab,layout,input_objects,\n                             CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off),mapfile,\n                             (Symbol *)0x0,"--whole-archive");\n      if (!(bool)cVar8) break;\n      total_members = total_members + 1;\n      if ((uint)((p.archive_)->input_file_->file_).size_ != (uint)p.off_ ||\n          *(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_) {\n        bVar7 = 0xffffffc3 < (uint)p.off_;\n        p.off_._0_4_ = (uint)p.off_ + 0x3c;\n        p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);\n          p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;\n          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;\n        }\n        if (((uint)p.off_ & 1) != 0) {\n          bVar7 = 0xfffffffe < (uint)p.off_;\n          p.off_._0_4_ = (uint)p.off_ + 1;\n          p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        }\n        const_iterator::read_next_header(&p);\n      }\n    }\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)p.header_.name._M_dataplus._M_p != paVar1) {\n      operator_delete(p.header_.name._M_dataplus._M_p);\n    }\n  }\n  return (bool)cVar8;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Archive::" identifier : : identifier : :) (function_declarator "include_all_members\n          (Archive *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects,\n          Mapfile *mapfile)" identifier (parameter_list "(Archive *this,Symbol_table *symtab,Layout *layout,Input_objects *input_objects,\n          Mapfile *mapfile)" ( (parameter_declaration "Archive *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)) , (parameter_declaration "Mapfile *mapfile" type_identifier (pointer_declarator "*mapfile" * identifier)) ))) (compound_statement "{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  off_t off;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  bool bVar7;\n  char cVar8;\n  _Rb_tree_node_base *p_Var9;\n  const_iterator p;\n  const_iterator local_58;\n  \n  cVar8 = this->included_all_members_;\n  if ((bool)cVar8 == false) {\n    this->included_all_members_ = true;\n    Input_objects::archive_start(input_objects,this);\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count != 0) {\n      for (p_Var9 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n          (_Rb_tree_header *)p_Var9 != &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n          p_Var9 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var9)) {\n        off._0_4_ = p_Var9[1]._M_color;\n        off._4_4_ = p_Var9[1]._M_parent;\n        bVar7 = include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive");\n        if (!bVar7) {\n          return bVar7;\n        }\n        total_members = total_members + 1;\n      }\nLAB_0013bb8b:\n      Input_objects::archive_stop(input_objects,this);\n      return true;\n    }\n    paVar1 = &p.header_.name.field_2;\n    p.header_.name._M_string_length = 0;\n    p.off_._0_4_ = 8;\n    p.archive_ = this;\n    p.off_._4_4_ = 0;\n    p.header_.name.field_2._M_local_buf[0] = '\0';\n    p.header_.name._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */\n    const_iterator::read_next_header(&p);\n    paVar2 = &local_58.header_.name.field_2;\n    while( true ) {\n      local_58.header_.name._M_string_length = 0;\n      local_58.header_.name.field_2._M_local_buf[0] = '\0';\n      local_58.archive_ = this;\n      local_58.off_._4_4_ = *(undefined4 *)((int)&(this->input_file_->file_).size_ + 4);\n      local_58.off_._0_4_ = (undefined4)(this->input_file_->file_).size_;\n      local_58.header_.name._M_dataplus._M_p = (pointer)paVar2;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      const_iterator::read_next_header(&local_58);\n      iVar6 = local_58.header_.off._4_4_;\n      uVar5 = (uint)local_58.header_.off;\n      iVar4 = p.off_._4_4_;\n      uVar3 = (uint)p.off_;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_58.header_.name._M_dataplus._M_p != paVar2) {\n        operator_delete(local_58.header_.name._M_dataplus._M_p);\n      }\n      if (iVar6 == iVar4 && uVar3 == uVar5) {\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)p.header_.name._M_dataplus._M_p != paVar1) {\n          operator_delete(p.header_.name._M_dataplus._M_p);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      cVar8 = include_member(this,symtab,layout,input_objects,\n                             CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off),mapfile,\n                             (Symbol *)0x0,"--whole-archive");\n      if (!(bool)cVar8) break;\n      total_members = total_members + 1;\n      if ((uint)((p.archive_)->input_file_->file_).size_ != (uint)p.off_ ||\n          *(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_) {\n        bVar7 = 0xffffffc3 < (uint)p.off_;\n        p.off_._0_4_ = (uint)p.off_ + 0x3c;\n        p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);\n          p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;\n          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;\n        }\n        if (((uint)p.off_ & 1) != 0) {\n          bVar7 = 0xfffffffe < (uint)p.off_;\n          p.off_._0_4_ = (uint)p.off_ + 1;\n          p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        }\n        const_iterator::read_next_header(&p);\n      }\n    }\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)p.header_.name._M_dataplus._M_p != paVar1) {\n      operator_delete(p.header_.name._M_dataplus._M_p);\n    }\n  }\n  return (bool)cVar8;\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)) ;) (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  *paVar2;" (binary_expression "allocator<char>_>_9\n  *paVar2" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar2" identifier * identifier)) ;) (declaration "off_t off;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "_Rb_tree_node_base *p_Var9;" type_identifier (pointer_declarator "*p_Var9" * identifier) ;) (declaration "const_iterator p;" type_identifier identifier ;) (declaration "const_iterator local_58;" type_identifier identifier ;) (expression_statement "cVar8 = this->included_all_members_;" (assignment_expression "cVar8 = this->included_all_members_" identifier = (field_expression "this->included_all_members_" identifier -> field_identifier)) ;) (if_statement "if ((bool)cVar8 == false) {\n    this->included_all_members_ = true;\n    Input_objects::archive_start(input_objects,this);\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count != 0) {\n      for (p_Var9 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n          (_Rb_tree_header *)p_Var9 != &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n          p_Var9 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var9)) {\n        off._0_4_ = p_Var9[1]._M_color;\n        off._4_4_ = p_Var9[1]._M_parent;\n        bVar7 = include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive");\n        if (!bVar7) {\n          return bVar7;\n        }\n        total_members = total_members + 1;\n      }\nLAB_0013bb8b:\n      Input_objects::archive_stop(input_objects,this);\n      return true;\n    }\n    paVar1 = &p.header_.name.field_2;\n    p.header_.name._M_string_length = 0;\n    p.off_._0_4_ = 8;\n    p.archive_ = this;\n    p.off_._4_4_ = 0;\n    p.header_.name.field_2._M_local_buf[0] = '\0';\n    p.header_.name._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */\n    const_iterator::read_next_header(&p);\n    paVar2 = &local_58.header_.name.field_2;\n    while( true ) {\n      local_58.header_.name._M_string_length = 0;\n      local_58.header_.name.field_2._M_local_buf[0] = '\0';\n      local_58.archive_ = this;\n      local_58.off_._4_4_ = *(undefined4 *)((int)&(this->input_file_->file_).size_ + 4);\n      local_58.off_._0_4_ = (undefined4)(this->input_file_->file_).size_;\n      local_58.header_.name._M_dataplus._M_p = (pointer)paVar2;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      const_iterator::read_next_header(&local_58);\n      iVar6 = local_58.header_.off._4_4_;\n      uVar5 = (uint)local_58.header_.off;\n      iVar4 = p.off_._4_4_;\n      uVar3 = (uint)p.off_;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_58.header_.name._M_dataplus._M_p != paVar2) {\n        operator_delete(local_58.header_.name._M_dataplus._M_p);\n      }\n      if (iVar6 == iVar4 && uVar3 == uVar5) {\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)p.header_.name._M_dataplus._M_p != paVar1) {\n          operator_delete(p.header_.name._M_dataplus._M_p);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      cVar8 = include_member(this,symtab,layout,input_objects,\n                             CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off),mapfile,\n                             (Symbol *)0x0,"--whole-archive");\n      if (!(bool)cVar8) break;\n      total_members = total_members + 1;\n      if ((uint)((p.archive_)->input_file_->file_).size_ != (uint)p.off_ ||\n          *(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_) {\n        bVar7 = 0xffffffc3 < (uint)p.off_;\n        p.off_._0_4_ = (uint)p.off_ + 0x3c;\n        p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);\n          p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;\n          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;\n        }\n        if (((uint)p.off_ & 1) != 0) {\n          bVar7 = 0xfffffffe < (uint)p.off_;\n          p.off_._0_4_ = (uint)p.off_ + 1;\n          p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        }\n        const_iterator::read_next_header(&p);\n      }\n    }\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)p.header_.name._M_dataplus._M_p != paVar1) {\n      operator_delete(p.header_.name._M_dataplus._M_p);\n    }\n  }" if (parenthesized_expression "((bool)cVar8 == false)" ( (binary_expression "(bool)cVar8 == false" (cast_expression "(bool)cVar8" ( (type_descriptor "bool" primitive_type) ) identifier) == false) )) (compound_statement "{\n    this->included_all_members_ = true;\n    Input_objects::archive_start(input_objects,this);\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count != 0) {\n      for (p_Var9 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n          (_Rb_tree_header *)p_Var9 != &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n          p_Var9 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var9)) {\n        off._0_4_ = p_Var9[1]._M_color;\n        off._4_4_ = p_Var9[1]._M_parent;\n        bVar7 = include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive");\n        if (!bVar7) {\n          return bVar7;\n        }\n        total_members = total_members + 1;\n      }\nLAB_0013bb8b:\n      Input_objects::archive_stop(input_objects,this);\n      return true;\n    }\n    paVar1 = &p.header_.name.field_2;\n    p.header_.name._M_string_length = 0;\n    p.off_._0_4_ = 8;\n    p.archive_ = this;\n    p.off_._4_4_ = 0;\n    p.header_.name.field_2._M_local_buf[0] = '\0';\n    p.header_.name._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */\n    const_iterator::read_next_header(&p);\n    paVar2 = &local_58.header_.name.field_2;\n    while( true ) {\n      local_58.header_.name._M_string_length = 0;\n      local_58.header_.name.field_2._M_local_buf[0] = '\0';\n      local_58.archive_ = this;\n      local_58.off_._4_4_ = *(undefined4 *)((int)&(this->input_file_->file_).size_ + 4);\n      local_58.off_._0_4_ = (undefined4)(this->input_file_->file_).size_;\n      local_58.header_.name._M_dataplus._M_p = (pointer)paVar2;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      const_iterator::read_next_header(&local_58);\n      iVar6 = local_58.header_.off._4_4_;\n      uVar5 = (uint)local_58.header_.off;\n      iVar4 = p.off_._4_4_;\n      uVar3 = (uint)p.off_;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_58.header_.name._M_dataplus._M_p != paVar2) {\n        operator_delete(local_58.header_.name._M_dataplus._M_p);\n      }\n      if (iVar6 == iVar4 && uVar3 == uVar5) {\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)p.header_.name._M_dataplus._M_p != paVar1) {\n          operator_delete(p.header_.name._M_dataplus._M_p);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      cVar8 = include_member(this,symtab,layout,input_objects,\n                             CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off),mapfile,\n                             (Symbol *)0x0,"--whole-archive");\n      if (!(bool)cVar8) break;\n      total_members = total_members + 1;\n      if ((uint)((p.archive_)->input_file_->file_).size_ != (uint)p.off_ ||\n          *(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_) {\n        bVar7 = 0xffffffc3 < (uint)p.off_;\n        p.off_._0_4_ = (uint)p.off_ + 0x3c;\n        p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);\n          p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;\n          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;\n        }\n        if (((uint)p.off_ & 1) != 0) {\n          bVar7 = 0xfffffffe < (uint)p.off_;\n          p.off_._0_4_ = (uint)p.off_ + 1;\n          p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        }\n        const_iterator::read_next_header(&p);\n      }\n    }\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)p.header_.name._M_dataplus._M_p != paVar1) {\n      operator_delete(p.header_.name._M_dataplus._M_p);\n    }\n  }" { (expression_statement "this->included_all_members_ = true;" (assignment_expression "this->included_all_members_ = true" (field_expression "this->included_all_members_" identifier -> field_identifier) = true) ;) (labeled_statement "Input_objects::archive_start(input_objects,this);" statement_identifier : (ERROR ":" :) (expression_statement "archive_start(input_objects,this);" (call_expression "archive_start(input_objects,this)" identifier (argument_list "(input_objects,this)" ( identifier , identifier ))) ;)) (if_statement "if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count != 0) {\n      for (p_Var9 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n          (_Rb_tree_header *)p_Var9 != &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n          p_Var9 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var9)) {\n        off._0_4_ = p_Var9[1]._M_color;\n        off._4_4_ = p_Var9[1]._M_parent;\n        bVar7 = include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive");\n        if (!bVar7) {\n          return bVar7;\n        }\n        total_members = total_members + 1;\n      }\nLAB_0013bb8b:\n      Input_objects::archive_stop(input_objects,this);\n      return true;\n    }" if (parenthesized_expression "((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count != 0)" ( (binary_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count != 0" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) != number_literal) )) (compound_statement "{\n      for (p_Var9 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n          (_Rb_tree_header *)p_Var9 != &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n          p_Var9 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var9)) {\n        off._0_4_ = p_Var9[1]._M_color;\n        off._4_4_ = p_Var9[1]._M_parent;\n        bVar7 = include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive");\n        if (!bVar7) {\n          return bVar7;\n        }\n        total_members = total_members + 1;\n      }\nLAB_0013bb8b:\n      Input_objects::archive_stop(input_objects,this);\n      return true;\n    }" { (for_statement "for (p_Var9 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n          (_Rb_tree_header *)p_Var9 != &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n          p_Var9 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var9)) {\n        off._0_4_ = p_Var9[1]._M_color;\n        off._4_4_ = p_Var9[1]._M_parent;\n        bVar7 = include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive");\n        if (!bVar7) {\n          return bVar7;\n        }\n        total_members = total_members + 1;\n      }" for ( (assignment_expression "p_Var9 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" identifier = (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ; (binary_expression "(_Rb_tree_header *)p_Var9 != &(this->members_)._M_t._M_impl.super__Rb_tree_header" (cast_expression "(_Rb_tree_header *)p_Var9" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (pointer_expression "&(this->members_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ; (ERROR "p_Var9 = (_Rb_tree_node_base *)std::" (assignment_expression "p_Var9 = (_Rb_tree_node_base *)std" identifier = (cast_expression "(_Rb_tree_node_base *)std" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (call_expression "_Rb_tree_increment(p_Var9)" identifier (argument_list "(p_Var9)" ( identifier ))) ) (compound_statement "{\n        off._0_4_ = p_Var9[1]._M_color;\n        off._4_4_ = p_Var9[1]._M_parent;\n        bVar7 = include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive");\n        if (!bVar7) {\n          return bVar7;\n        }\n        total_members = total_members + 1;\n      }" { (expression_statement "off._0_4_ = p_Var9[1]._M_color;" (assignment_expression "off._0_4_ = p_Var9[1]._M_color" (field_expression "off._0_4_" identifier . field_identifier) = (field_expression "p_Var9[1]._M_color" (subscript_expression "p_Var9[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "off._4_4_ = p_Var9[1]._M_parent;" (assignment_expression "off._4_4_ = p_Var9[1]._M_parent" (field_expression "off._4_4_" identifier . field_identifier) = (field_expression "p_Var9[1]._M_parent" (subscript_expression "p_Var9[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "bVar7 = include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive");" (assignment_expression "bVar7 = include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive")" identifier = (call_expression "include_member(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive")" identifier (argument_list "(this,symtab,layout,input_objects,off,mapfile,(Symbol *)0x0,\n                               "--whole-archive")" ( identifier , identifier , identifier , identifier , identifier , identifier , (cast_expression "(Symbol *)0x0" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (string_literal ""--whole-archive"" " string_content ") )))) ;) (if_statement "if (!bVar7) {\n          return bVar7;\n        }" if (parenthesized_expression "(!bVar7)" ( (unary_expression "!bVar7" ! identifier) )) (compound_statement "{\n          return bVar7;\n        }" { (return_statement "return bVar7;" return identifier ;) })) (expression_statement "total_members = total_members + 1;" (assignment_expression "total_members = total_members + 1" identifier = (binary_expression "total_members + 1" identifier + number_literal)) ;) })) (labeled_statement "LAB_0013bb8b:\n      Input_objects::archive_stop(input_objects,this);" statement_identifier : (labeled_statement "Input_objects::archive_stop(input_objects,this);" statement_identifier : (ERROR ":" :) (expression_statement "archive_stop(input_objects,this);" (call_expression "archive_stop(input_objects,this)" identifier (argument_list "(input_objects,this)" ( identifier , identifier ))) ;))) (return_statement "return true;" return true ;) })) (expression_statement "paVar1 = &p.header_.name.field_2;" (assignment_expression "paVar1 = &p.header_.name.field_2" identifier = (pointer_expression "&p.header_.name.field_2" & (field_expression "p.header_.name.field_2" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "p.header_.name._M_string_length = 0;" (assignment_expression "p.header_.name._M_string_length = 0" (field_expression "p.header_.name._M_string_length" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "p.off_._0_4_ = 8;" (assignment_expression "p.off_._0_4_ = 8" (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "p.archive_ = this;" (assignment_expression "p.archive_ = this" (field_expression "p.archive_" identifier . field_identifier) = identifier) ;) (expression_statement "p.off_._4_4_ = 0;" (assignment_expression "p.off_._4_4_ = 0" (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "p.header_.name.field_2._M_local_buf[0] = '\0';" (assignment_expression "p.header_.name.field_2._M_local_buf[0] = '\0'" (subscript_expression "p.header_.name.field_2._M_local_buf[0]" (field_expression "p.header_.name.field_2._M_local_buf" (field_expression "p.header_.name.field_2" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "p.header_.name._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "p.header_.name._M_dataplus._M_p = (pointer)paVar1" (field_expression "p.header_.name._M_dataplus._M_p" (field_expression "p.header_.name._M_dataplus" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) comment (labeled_statement "const_iterator::read_next_header(&p);" statement_identifier : (ERROR ":" :) (expression_statement "read_next_header(&p);" (call_expression "read_next_header(&p)" identifier (argument_list "(&p)" ( (pointer_expression "&p" & identifier) ))) ;)) (expression_statement "paVar2 = &local_58.header_.name.field_2;" (assignment_expression "paVar2 = &local_58.header_.name.field_2" identifier = (pointer_expression "&local_58.header_.name.field_2" & (field_expression "local_58.header_.name.field_2" (field_expression "local_58.header_.name" (field_expression "local_58.header_" identifier . field_identifier) . field_identifier) . field_identifier))) ;) (while_statement "while( true ) {\n      local_58.header_.name._M_string_length = 0;\n      local_58.header_.name.field_2._M_local_buf[0] = '\0';\n      local_58.archive_ = this;\n      local_58.off_._4_4_ = *(undefined4 *)((int)&(this->input_file_->file_).size_ + 4);\n      local_58.off_._0_4_ = (undefined4)(this->input_file_->file_).size_;\n      local_58.header_.name._M_dataplus._M_p = (pointer)paVar2;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      const_iterator::read_next_header(&local_58);\n      iVar6 = local_58.header_.off._4_4_;\n      uVar5 = (uint)local_58.header_.off;\n      iVar4 = p.off_._4_4_;\n      uVar3 = (uint)p.off_;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_58.header_.name._M_dataplus._M_p != paVar2) {\n        operator_delete(local_58.header_.name._M_dataplus._M_p);\n      }\n      if (iVar6 == iVar4 && uVar3 == uVar5) {\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)p.header_.name._M_dataplus._M_p != paVar1) {\n          operator_delete(p.header_.name._M_dataplus._M_p);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      cVar8 = include_member(this,symtab,layout,input_objects,\n                             CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off),mapfile,\n                             (Symbol *)0x0,"--whole-archive");\n      if (!(bool)cVar8) break;\n      total_members = total_members + 1;\n      if ((uint)((p.archive_)->input_file_->file_).size_ != (uint)p.off_ ||\n          *(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_) {\n        bVar7 = 0xffffffc3 < (uint)p.off_;\n        p.off_._0_4_ = (uint)p.off_ + 0x3c;\n        p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);\n          p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;\n          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;\n        }\n        if (((uint)p.off_ & 1) != 0) {\n          bVar7 = 0xfffffffe < (uint)p.off_;\n          p.off_._0_4_ = (uint)p.off_ + 1;\n          p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        }\n        const_iterator::read_next_header(&p);\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      local_58.header_.name._M_string_length = 0;\n      local_58.header_.name.field_2._M_local_buf[0] = '\0';\n      local_58.archive_ = this;\n      local_58.off_._4_4_ = *(undefined4 *)((int)&(this->input_file_->file_).size_ + 4);\n      local_58.off_._0_4_ = (undefined4)(this->input_file_->file_).size_;\n      local_58.header_.name._M_dataplus._M_p = (pointer)paVar2;\n                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */\n      const_iterator::read_next_header(&local_58);\n      iVar6 = local_58.header_.off._4_4_;\n      uVar5 = (uint)local_58.header_.off;\n      iVar4 = p.off_._4_4_;\n      uVar3 = (uint)p.off_;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_58.header_.name._M_dataplus._M_p != paVar2) {\n        operator_delete(local_58.header_.name._M_dataplus._M_p);\n      }\n      if (iVar6 == iVar4 && uVar3 == uVar5) {\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)p.header_.name._M_dataplus._M_p != paVar1) {\n          operator_delete(p.header_.name._M_dataplus._M_p);\n        }\n        goto LAB_0013bb8b;\n      }\n                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */\n      cVar8 = include_member(this,symtab,layout,input_objects,\n                             CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off),mapfile,\n                             (Symbol *)0x0,"--whole-archive");\n      if (!(bool)cVar8) break;\n      total_members = total_members + 1;\n      if ((uint)((p.archive_)->input_file_->file_).size_ != (uint)p.off_ ||\n          *(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_) {\n        bVar7 = 0xffffffc3 < (uint)p.off_;\n        p.off_._0_4_ = (uint)p.off_ + 0x3c;\n        p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);\n          p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;\n          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;\n        }\n        if (((uint)p.off_ & 1) != 0) {\n          bVar7 = 0xfffffffe < (uint)p.off_;\n          p.off_._0_4_ = (uint)p.off_ + 1;\n          p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        }\n        const_iterator::read_next_header(&p);\n      }\n    }" { (expression_statement "local_58.header_.name._M_string_length = 0;" (assignment_expression "local_58.header_.name._M_string_length = 0" (field_expression "local_58.header_.name._M_string_length" (field_expression "local_58.header_.name" (field_expression "local_58.header_" identifier . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "local_58.header_.name.field_2._M_local_buf[0] = '\0';" (assignment_expression "local_58.header_.name.field_2._M_local_buf[0] = '\0'" (subscript_expression "local_58.header_.name.field_2._M_local_buf[0]" (field_expression "local_58.header_.name.field_2._M_local_buf" (field_expression "local_58.header_.name.field_2" (field_expression "local_58.header_.name" (field_expression "local_58.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_58.archive_ = this;" (assignment_expression "local_58.archive_ = this" (field_expression "local_58.archive_" identifier . field_identifier) = identifier) ;) (expression_statement "local_58.off_._4_4_ = *(undefined4 *)((int)&(this->input_file_->file_).size_ + 4);" (assignment_expression "local_58.off_._4_4_ = *(undefined4 *)((int)&(this->input_file_->file_).size_ + 4)" (field_expression "local_58.off_._4_4_" (field_expression "local_58.off_" identifier . field_identifier) . field_identifier) = (pointer_expression "*(undefined4 *)((int)&(this->input_file_->file_).size_ + 4)" * (cast_expression "(undefined4 *)((int)&(this->input_file_->file_).size_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->input_file_->file_).size_ + 4)" ( (binary_expression "(int)&(this->input_file_->file_).size_ + 4" (cast_expression "(int)&(this->input_file_->file_).size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->input_file_->file_).size_" & (field_expression "(this->input_file_->file_).size_" (parenthesized_expression "(this->input_file_->file_)" ( (field_expression "this->input_file_->file_" (field_expression "this->input_file_" identifier -> field_identifier) -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "local_58.off_._0_4_ = (undefined4)(this->input_file_->file_).size_;" (assignment_expression "local_58.off_._0_4_ = (undefined4)(this->input_file_->file_).size_" (field_expression "local_58.off_._0_4_" (field_expression "local_58.off_" identifier . field_identifier) . field_identifier) = (field_expression "(undefined4)(this->input_file_->file_).size_" (call_expression "(undefined4)(this->input_file_->file_)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "(this->input_file_->file_)" ( (field_expression "this->input_file_->file_" (field_expression "this->input_file_" identifier -> field_identifier) -> field_identifier) ))) . field_identifier)) ;) (expression_statement "local_58.header_.name._M_dataplus._M_p = (pointer)paVar2;" (assignment_expression "local_58.header_.name._M_dataplus._M_p = (pointer)paVar2" (field_expression "local_58.header_.name._M_dataplus._M_p" (field_expression "local_58.header_.name._M_dataplus" (field_expression "local_58.header_.name" (field_expression "local_58.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar2" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) comment (labeled_statement "const_iterator::read_next_header(&local_58);" statement_identifier : (ERROR ":" :) (expression_statement "read_next_header(&local_58);" (call_expression "read_next_header(&local_58)" identifier (argument_list "(&local_58)" ( (pointer_expression "&local_58" & identifier) ))) ;)) (expression_statement "iVar6 = local_58.header_.off._4_4_;" (assignment_expression "iVar6 = local_58.header_.off._4_4_" identifier = (field_expression "local_58.header_.off._4_4_" (field_expression "local_58.header_.off" (field_expression "local_58.header_" identifier . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "uVar5 = (uint)local_58.header_.off;" (assignment_expression "uVar5 = (uint)local_58.header_.off" identifier = (cast_expression "(uint)local_58.header_.off" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_58.header_.off" (field_expression "local_58.header_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "iVar4 = p.off_._4_4_;" (assignment_expression "iVar4 = p.off_._4_4_" identifier = (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier)) ;) (expression_statement "uVar3 = (uint)p.off_;" (assignment_expression "uVar3 = (uint)p.off_" identifier = (cast_expression "(uint)p.off_" ( (type_descriptor "uint" type_identifier) ) (field_expression "p.off_" identifier . field_identifier))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_58.header_.name._M_dataplus._M_p != paVar2) {\n        operator_delete(local_58.header_.name._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           *)local_58.header_.name._M_dataplus._M_p != paVar2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_58.header_.name._M_dataplus._M_p != paVar2)" ( (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           *)local_58.header_.name._M_dataplus._M_p != paVar2" (binary_expression "allocator<char>_>_9\n           *)local_58.header_.name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)local_58.header_.name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_58.header_.name._M_dataplus._M_p" (field_expression "local_58.header_.name._M_dataplus" (field_expression "local_58.header_.name" (field_expression "local_58.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n        operator_delete(local_58.header_.name._M_dataplus._M_p);\n      }" { (expression_statement "operator_delete(local_58.header_.name._M_dataplus._M_p);" (call_expression "operator_delete(local_58.header_.name._M_dataplus._M_p)" identifier (argument_list "(local_58.header_.name._M_dataplus._M_p)" ( (field_expression "local_58.header_.name._M_dataplus._M_p" (field_expression "local_58.header_.name._M_dataplus" (field_expression "local_58.header_.name" (field_expression "local_58.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) ))) ;) })) (if_statement "if (iVar6 == iVar4 && uVar3 == uVar5) {\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)p.header_.name._M_dataplus._M_p != paVar1) {\n          operator_delete(p.header_.name._M_dataplus._M_p);\n        }\n        goto LAB_0013bb8b;\n      }" if (parenthesized_expression "(iVar6 == iVar4 && uVar3 == uVar5)" ( (binary_expression "iVar6 == iVar4 && uVar3 == uVar5" (binary_expression "iVar6 == iVar4" identifier == identifier) && (binary_expression "uVar3 == uVar5" identifier == identifier)) )) (compound_statement "{\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)p.header_.name._M_dataplus._M_p != paVar1) {\n          operator_delete(p.header_.name._M_dataplus._M_p);\n        }\n        goto LAB_0013bb8b;\n      }" { (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)p.header_.name._M_dataplus._M_p != paVar1) {\n          operator_delete(p.header_.name._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             *)p.header_.name._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             *)p.header_.name._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             *)p.header_.name._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n             *)p.header_.name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n             *)p.header_.name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "p.header_.name._M_dataplus._M_p" (field_expression "p.header_.name._M_dataplus" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n          operator_delete(p.header_.name._M_dataplus._M_p);\n        }" { (expression_statement "operator_delete(p.header_.name._M_dataplus._M_p);" (call_expression "operator_delete(p.header_.name._M_dataplus._M_p)" identifier (argument_list "(p.header_.name._M_dataplus._M_p)" ( (field_expression "p.header_.name._M_dataplus._M_p" (field_expression "p.header_.name._M_dataplus" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) ))) ;) })) (goto_statement "goto LAB_0013bb8b;" goto statement_identifier ;) })) comment (expression_statement "cVar8 = include_member(this,symtab,layout,input_objects,\n                             CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off),mapfile,\n                             (Symbol *)0x0,"--whole-archive");" (assignment_expression "cVar8 = include_member(this,symtab,layout,input_objects,\n                             CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off),mapfile,\n                             (Symbol *)0x0,"--whole-archive")" identifier = (call_expression "include_member(this,symtab,layout,input_objects,\n                             CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off),mapfile,\n                             (Symbol *)0x0,"--whole-archive")" identifier (argument_list "(this,symtab,layout,input_objects,\n                             CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off),mapfile,\n                             (Symbol *)0x0,"--whole-archive")" ( identifier , identifier , identifier , identifier , (call_expression "CONCAT44(p.header_.off._4_4_,(undefined4)p.header_.off)" identifier (argument_list "(p.header_.off._4_4_,(undefined4)p.header_.off)" ( (field_expression "p.header_.off._4_4_" (field_expression "p.header_.off" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) , (cast_expression "(undefined4)p.header_.off" ( (type_descriptor "undefined4" type_identifier) ) (field_expression "p.header_.off" (field_expression "p.header_" identifier . field_identifier) . field_identifier)) ))) , identifier , (cast_expression "(Symbol *)0x0" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (string_literal ""--whole-archive"" " string_content ") )))) ;) (if_statement "if (!(bool)cVar8) break;" if (parenthesized_expression "(!(bool)cVar8)" ( (unary_expression "!(bool)cVar8" ! (cast_expression "(bool)cVar8" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "total_members = total_members + 1;" (assignment_expression "total_members = total_members + 1" identifier = (binary_expression "total_members + 1" identifier + number_literal)) ;) (if_statement "if ((uint)((p.archive_)->input_file_->file_).size_ != (uint)p.off_ ||\n          *(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_) {\n        bVar7 = 0xffffffc3 < (uint)p.off_;\n        p.off_._0_4_ = (uint)p.off_ + 0x3c;\n        p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);\n          p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;\n          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;\n        }\n        if (((uint)p.off_ & 1) != 0) {\n          bVar7 = 0xfffffffe < (uint)p.off_;\n          p.off_._0_4_ = (uint)p.off_ + 1;\n          p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        }\n        const_iterator::read_next_header(&p);\n      }" if (parenthesized_expression "((uint)((p.archive_)->input_file_->file_).size_ != (uint)p.off_ ||\n          *(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_)" ( (binary_expression "(uint)((p.archive_)->input_file_->file_).size_ != (uint)p.off_ ||\n          *(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_" (binary_expression "(uint)((p.archive_)->input_file_->file_).size_ != (uint)p.off_" (field_expression "(uint)((p.archive_)->input_file_->file_).size_" (call_expression "(uint)((p.archive_)->input_file_->file_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((p.archive_)->input_file_->file_)" ( (field_expression "(p.archive_)->input_file_->file_" (field_expression "(p.archive_)->input_file_" (parenthesized_expression "(p.archive_)" ( (field_expression "p.archive_" identifier . field_identifier) )) -> field_identifier) -> field_identifier) ))) . field_identifier) != (cast_expression "(uint)p.off_" ( (type_descriptor "uint" type_identifier) ) (field_expression "p.off_" identifier . field_identifier))) || (binary_expression "*(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_" (pointer_expression "*(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4)" * (cast_expression "(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((p.archive_)->input_file_->file_).size_ + 4)" ( (binary_expression "(int)&((p.archive_)->input_file_->file_).size_ + 4" (cast_expression "(int)&((p.archive_)->input_file_->file_).size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((p.archive_)->input_file_->file_).size_" & (field_expression "((p.archive_)->input_file_->file_).size_" (parenthesized_expression "((p.archive_)->input_file_->file_)" ( (field_expression "(p.archive_)->input_file_->file_" (field_expression "(p.archive_)->input_file_" (parenthesized_expression "(p.archive_)" ( (field_expression "p.archive_" identifier . field_identifier) )) -> field_identifier) -> field_identifier) )) . field_identifier))) + number_literal) )))) != (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier))) )) (compound_statement "{\n        bVar7 = 0xffffffc3 < (uint)p.off_;\n        p.off_._0_4_ = (uint)p.off_ + 0x3c;\n        p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        if ((p.archive_)->is_thin_archive_ == false) {\n          bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);\n          p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;\n          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;\n        }\n        if (((uint)p.off_ & 1) != 0) {\n          bVar7 = 0xfffffffe < (uint)p.off_;\n          p.off_._0_4_ = (uint)p.off_ + 1;\n          p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        }\n        const_iterator::read_next_header(&p);\n      }" { (expression_statement "bVar7 = 0xffffffc3 < (uint)p.off_;" (assignment_expression "bVar7 = 0xffffffc3 < (uint)p.off_" identifier = (binary_expression "0xffffffc3 < (uint)p.off_" number_literal < (cast_expression "(uint)p.off_" ( (type_descriptor "uint" type_identifier) ) (field_expression "p.off_" identifier . field_identifier)))) ;) (expression_statement "p.off_._0_4_ = (uint)p.off_ + 0x3c;" (assignment_expression "p.off_._0_4_ = (uint)p.off_ + 0x3c" (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = (binary_expression "(uint)p.off_ + 0x3c" (cast_expression "(uint)p.off_" ( (type_descriptor "uint" type_identifier) ) (field_expression "p.off_" identifier . field_identifier)) + number_literal)) ;) (expression_statement "p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;" (assignment_expression "p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7" (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = (binary_expression "p.off_._4_4_ + (uint)bVar7" (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) + (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((p.archive_)->is_thin_archive_ == false) {\n          bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);\n          p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;\n          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;\n        }" if (parenthesized_expression "((p.archive_)->is_thin_archive_ == false)" ( (binary_expression "(p.archive_)->is_thin_archive_ == false" (field_expression "(p.archive_)->is_thin_archive_" (parenthesized_expression "(p.archive_)" ( (field_expression "p.archive_" identifier . field_identifier) )) -> field_identifier) == false) )) (compound_statement "{\n          bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);\n          p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;\n          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;\n        }" { (expression_statement "bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size);" (assignment_expression "bVar7 = CARRY4((uint)p.off_,(uint)p.header_.size)" identifier = (call_expression "CARRY4((uint)p.off_,(uint)p.header_.size)" identifier (argument_list "((uint)p.off_,(uint)p.header_.size)" ( (cast_expression "(uint)p.off_" ( (type_descriptor "uint" type_identifier) ) (field_expression "p.off_" identifier . field_identifier)) , (cast_expression "(uint)p.header_.size" ( (type_descriptor "uint" type_identifier) ) (field_expression "p.header_.size" (field_expression "p.header_" identifier . field_identifier) . field_identifier)) )))) ;) (expression_statement "p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size;" (assignment_expression "p.off_._0_4_ = (uint)p.off_ + (uint)p.header_.size" (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = (binary_expression "(uint)p.off_ + (uint)p.header_.size" (cast_expression "(uint)p.off_" ( (type_descriptor "uint" type_identifier) ) (field_expression "p.off_" identifier . field_identifier)) + (cast_expression "(uint)p.header_.size" ( (type_descriptor "uint" type_identifier) ) (field_expression "p.header_.size" (field_expression "p.header_" identifier . field_identifier) . field_identifier)))) ;) (expression_statement "p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7;" (assignment_expression "p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7" (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = (binary_expression "p.off_._4_4_ + p.header_.size._4_4_ + (uint)bVar7" (binary_expression "p.off_._4_4_ + p.header_.size._4_4_" (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) + (field_expression "p.header_.size._4_4_" (field_expression "p.header_.size" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier)) + (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) })) (if_statement "if (((uint)p.off_ & 1) != 0) {\n          bVar7 = 0xfffffffe < (uint)p.off_;\n          p.off_._0_4_ = (uint)p.off_ + 1;\n          p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        }" if (parenthesized_expression "(((uint)p.off_ & 1) != 0)" ( (binary_expression "((uint)p.off_ & 1) != 0" (parenthesized_expression "((uint)p.off_ & 1)" ( (binary_expression "(uint)p.off_ & 1" (cast_expression "(uint)p.off_" ( (type_descriptor "uint" type_identifier) ) (field_expression "p.off_" identifier . field_identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n          bVar7 = 0xfffffffe < (uint)p.off_;\n          p.off_._0_4_ = (uint)p.off_ + 1;\n          p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;\n        }" { (expression_statement "bVar7 = 0xfffffffe < (uint)p.off_;" (assignment_expression "bVar7 = 0xfffffffe < (uint)p.off_" identifier = (binary_expression "0xfffffffe < (uint)p.off_" number_literal < (cast_expression "(uint)p.off_" ( (type_descriptor "uint" type_identifier) ) (field_expression "p.off_" identifier . field_identifier)))) ;) (expression_statement "p.off_._0_4_ = (uint)p.off_ + 1;" (assignment_expression "p.off_._0_4_ = (uint)p.off_ + 1" (field_expression "p.off_._0_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = (binary_expression "(uint)p.off_ + 1" (cast_expression "(uint)p.off_" ( (type_descriptor "uint" type_identifier) ) (field_expression "p.off_" identifier . field_identifier)) + number_literal)) ;) (expression_statement "p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7;" (assignment_expression "p.off_._4_4_ = p.off_._4_4_ + (uint)bVar7" (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) = (binary_expression "p.off_._4_4_ + (uint)bVar7" (field_expression "p.off_._4_4_" (field_expression "p.off_" identifier . field_identifier) . field_identifier) + (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) })) (labeled_statement "const_iterator::read_next_header(&p);" statement_identifier : (ERROR ":" :) (expression_statement "read_next_header(&p);" (call_expression "read_next_header(&p)" identifier (argument_list "(&p)" ( (pointer_expression "&p" & identifier) ))) ;)) })) })) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)p.header_.name._M_dataplus._M_p != paVar1) {\n      operator_delete(p.header_.name._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         *)p.header_.name._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         *)p.header_.name._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         *)p.header_.name._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n         *)p.header_.name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)p.header_.name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "p.header_.name._M_dataplus._M_p" (field_expression "p.header_.name._M_dataplus" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n      operator_delete(p.header_.name._M_dataplus._M_p);\n    }" { (expression_statement "operator_delete(p.header_.name._M_dataplus._M_p);" (call_expression "operator_delete(p.header_.name._M_dataplus._M_p)" identifier (argument_list "(p.header_.name._M_dataplus._M_p)" ( (field_expression "p.header_.name._M_dataplus._M_p" (field_expression "p.header_.name._M_dataplus" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) ))) ;) })) })) (return_statement "return (bool)cVar8;" return (cast_expression "(bool)cVar8" ( (type_descriptor "bool" primitive_type) ) identifier) ;) })))
(translation_unit "uint FUN_0013bac0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  int local_94;\n  uint local_90;\n  int local_8c;\n  undefined1 *local_88;\n  undefined4 local_84;\n  undefined1 local_80 [16];\n  undefined4 local_70;\n  undefined4 local_6c;\n  uint local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined1 local_44 [16];\n  uint local_34;\n  int local_30;\n  \n  uVar3 = (uint)*(byte *)(param_1 + 0xd5);\n  if (*(byte *)(param_1 + 0xd5) == 0) {\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    \n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }\n  return uVar3;\n}\n\n" (function_definition "uint FUN_0013bac0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  int local_94;\n  uint local_90;\n  int local_8c;\n  undefined1 *local_88;\n  undefined4 local_84;\n  undefined1 local_80 [16];\n  undefined4 local_70;\n  undefined4 local_6c;\n  uint local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined1 local_44 [16];\n  uint local_34;\n  int local_30;\n  \n  uVar3 = (uint)*(byte *)(param_1 + 0xd5);\n  if (*(byte *)(param_1 + 0xd5) == 0) {\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    \n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_0013bac0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)" ( (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) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  int local_94;\n  uint local_90;\n  int local_8c;\n  undefined1 *local_88;\n  undefined4 local_84;\n  undefined1 local_80 [16];\n  undefined4 local_70;\n  undefined4 local_6c;\n  uint local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined1 local_44 [16];\n  uint local_34;\n  int local_30;\n  \n  uVar3 = (uint)*(byte *)(param_1 + 0xd5);\n  if (*(byte *)(param_1 + 0xd5) == 0) {\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    \n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }\n  return uVar3;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "uint local_90;" type_identifier identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "undefined1 *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "undefined4 local_84;" type_identifier identifier ;) (declaration "undefined1 local_80 [16];" type_identifier (array_declarator "local_80 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_70;" type_identifier identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined1 *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined1 local_44 [16];" type_identifier (array_declarator "local_44 [16]" identifier [ number_literal ]) ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (expression_statement "uVar3 = (uint)*(byte *)(param_1 + 0xd5);" (assignment_expression "uVar3 = (uint)*(byte *)(param_1 + 0xd5)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 0xd5)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 0xd5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd5)" ( (binary_expression "param_1 + 0xd5" identifier + number_literal) ))))) ;) (if_statement "if (*(byte *)(param_1 + 0xd5) == 0) {\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    \n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }" if (parenthesized_expression "(*(byte *)(param_1 + 0xd5) == 0)" ( (binary_expression "*(byte *)(param_1 + 0xd5) == 0" (pointer_expression "*(byte *)(param_1 + 0xd5)" * (cast_expression "(byte *)(param_1 + 0xd5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd5)" ( (binary_expression "param_1 + 0xd5" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    \n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }" { (expression_statement "*(undefined1 *)(param_1 + 0xd5) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0xd5) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0xd5)" * (cast_expression "(undefined1 *)(param_1 + 0xd5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd5)" ( (binary_expression "param_1 + 0xd5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00092300(param_4,param_1);" (call_expression "FUN_00092300(param_4,param_1)" identifier (argument_list "(param_4,param_1)" ( identifier , identifier ))) ;) (if_statement "if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0xa8) != 0)" ( (binary_expression "*(int *)(param_1 + 0xa8) != 0" (pointer_expression "*(int *)(param_1 + 0xa8)" * (cast_expression "(int *)(param_1 + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }" { (for_statement "for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }" for ( (assignment_expression "iVar4 = *(int *)(param_1 + 0xa0)" identifier = (pointer_expression "*(int *)(param_1 + 0xa0)" * (cast_expression "(int *)(param_1 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ; (binary_expression "iVar4 != param_1 + 0x98" identifier != (binary_expression "param_1 + 0x98" identifier + number_literal)) ; (assignment_expression "iVar4 = thunk_FUN_00181d80(iVar4)" identifier = (call_expression "thunk_FUN_00181d80(iVar4)" identifier (argument_list "(iVar4)" ( identifier )))) ) (compound_statement "{\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }" { (expression_statement "uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");" (assignment_expression "uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive")" identifier = (call_expression "FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive")" identifier (argument_list "(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive")" ( identifier , identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(iVar4 + 0x10)" * (cast_expression "(undefined4 *)(iVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar4 + 0x14)" * (cast_expression "(undefined4 *)(iVar4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) , identifier , number_literal , (string_literal ""--whole-archive"" " string_content ") )))) ;) (if_statement "if ((char)uVar3 == '\0') {\n          return uVar3;\n        }" if (parenthesized_expression "((char)uVar3 == '\0')" ( (binary_expression "(char)uVar3 == '\0'" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return uVar3;\n        }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "DAT_00309274 = DAT_00309274 + 1;" (assignment_expression "DAT_00309274 = DAT_00309274 + 1" identifier = (binary_expression "DAT_00309274 + 1" identifier + number_literal)) ;) })) (labeled_statement "LAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);" statement_identifier : (expression_statement "FUN_000923a0(param_4,param_1);" (call_expression "FUN_000923a0(param_4,param_1)" identifier (argument_list "(param_4,param_1)" ( identifier , identifier ))) ;)) (return_statement "return 1;" return number_literal ;) })) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "local_90 = 8;" (assignment_expression "local_90 = 8" identifier = number_literal) ;) (expression_statement "local_94 = param_1;" (assignment_expression "local_94 = param_1" identifier = identifier) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "local_80[0] = 0;" (assignment_expression "local_80[0] = 0" (subscript_expression "local_80[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_88 = local_80;" (assignment_expression "local_88 = local_80" identifier = identifier) ;) (expression_statement "FUN_00139080(&local_94);" (call_expression "FUN_00139080(&local_94)" identifier (argument_list "(&local_94)" ( (pointer_expression "&local_94" & identifier) ))) ;) (while_statement "while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }" { (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44[0] = 0;" (assignment_expression "local_44[0] = 0" (subscript_expression "local_44[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_58 = param_1;" (assignment_expression "local_58 = param_1" identifier = identifier) ;) (expression_statement "local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);" (assignment_expression "local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x24) + 0x44)" ( (binary_expression "*(int *)(param_1 + 0x24) + 0x44" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);" (assignment_expression "local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x24) + 0x40)" ( (binary_expression "*(int *)(param_1 + 0x24) + 0x40" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "local_4c = local_44;" (assignment_expression "local_4c = local_44" identifier = identifier) ;) (expression_statement "FUN_00139080(&local_58);" (call_expression "FUN_00139080(&local_58)" identifier (argument_list "(&local_58)" ( (pointer_expression "&local_58" & identifier) ))) ;) (expression_statement "iVar2 = local_30;" (assignment_expression "iVar2 = local_30" identifier = identifier) ;) (expression_statement "uVar1 = local_34;" (assignment_expression "uVar1 = local_34" identifier = identifier) ;) (expression_statement "iVar4 = local_8c;" (assignment_expression "iVar4 = local_8c" identifier = identifier) ;) (expression_statement "uVar3 = local_90;" (assignment_expression "uVar3 = local_90" identifier = identifier) ;) (if_statement "if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n        FUN_001807a0(local_4c);\n      }" { (expression_statement "FUN_001807a0(local_4c);" (call_expression "FUN_001807a0(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) })) (if_statement "if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }" if (parenthesized_expression "(iVar2 == iVar4 && uVar3 == uVar1)" ( (binary_expression "iVar2 == iVar4 && uVar3 == uVar1" (binary_expression "iVar2 == iVar4" identifier == identifier) && (binary_expression "uVar3 == uVar1" identifier == identifier)) )) (compound_statement "{\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }" { (if_statement "if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }" if (parenthesized_expression "(local_88 != local_80)" ( (binary_expression "local_88 != local_80" identifier != identifier) )) (compound_statement "{\n          FUN_001807a0(local_88);\n        }" { (expression_statement "FUN_001807a0(local_88);" (call_expression "FUN_001807a0(local_88)" identifier (argument_list "(local_88)" ( identifier ))) ;) })) (goto_statement "goto LAB_0013bb8b;" goto statement_identifier ;) })) (expression_statement "uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");" (assignment_expression "uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive")" identifier = (call_expression "FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive")" identifier (argument_list "(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive")" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , number_literal , (string_literal ""--whole-archive"" " string_content ") )))) ;) (if_statement "if ((char)uVar3 == '\0') break;" if (parenthesized_expression "((char)uVar3 == '\0')" ( (binary_expression "(char)uVar3 == '\0'" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "DAT_00309274 = DAT_00309274 + 1;" (assignment_expression "DAT_00309274 = DAT_00309274 + 1" identifier = (binary_expression "DAT_00309274 + 1" identifier + number_literal)) ;) (if_statement "if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }" if (parenthesized_expression "(*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c)" ( (binary_expression "*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c" (binary_expression "*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90" (pointer_expression "*(uint *)(*(int *)(local_94 + 0x24) + 0x40)" * (cast_expression "(uint *)(*(int *)(local_94 + 0x24) + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_94 + 0x24) + 0x40)" ( (binary_expression "*(int *)(local_94 + 0x24) + 0x40" (pointer_expression "*(int *)(local_94 + 0x24)" * (cast_expression "(int *)(local_94 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_94 + 0x24)" ( (binary_expression "local_94 + 0x24" identifier + number_literal) )))) + number_literal) )))) != identifier) || (binary_expression "*(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c" (pointer_expression "*(int *)(*(int *)(local_94 + 0x24) + 0x44)" * (cast_expression "(int *)(*(int *)(local_94 + 0x24) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_94 + 0x24) + 0x44)" ( (binary_expression "*(int *)(local_94 + 0x24) + 0x44" (pointer_expression "*(int *)(local_94 + 0x24)" * (cast_expression "(int *)(local_94 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_94 + 0x24)" ( (binary_expression "local_94 + 0x24" identifier + number_literal) )))) + number_literal) )))) != identifier)) )) (compound_statement "{\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }" { (expression_statement "bVar5 = 0xffffffc3 < local_90;" (assignment_expression "bVar5 = 0xffffffc3 < local_90" identifier = (binary_expression "0xffffffc3 < local_90" number_literal < identifier)) ;) (expression_statement "local_90 = local_90 + 0x3c;" (assignment_expression "local_90 = local_90 + 0x3c" identifier = (binary_expression "local_90 + 0x3c" identifier + number_literal)) ;) (expression_statement "local_8c = local_8c + (uint)bVar5;" (assignment_expression "local_8c = local_8c + (uint)bVar5" identifier = (binary_expression "local_8c + (uint)bVar5" identifier + (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }" if (parenthesized_expression "(*(char *)(local_94 + 0xac) == '\0')" ( (binary_expression "*(char *)(local_94 + 0xac) == '\0'" (pointer_expression "*(char *)(local_94 + 0xac)" * (cast_expression "(char *)(local_94 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_94 + 0xac)" ( (binary_expression "local_94 + 0xac" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }" { (expression_statement "bVar5 = CARRY4(local_90,local_60);" (assignment_expression "bVar5 = CARRY4(local_90,local_60)" identifier = (call_expression "CARRY4(local_90,local_60)" identifier (argument_list "(local_90,local_60)" ( identifier , identifier )))) ;) (expression_statement "local_90 = local_90 + local_60;" (assignment_expression "local_90 = local_90 + local_60" identifier = (binary_expression "local_90 + local_60" identifier + identifier)) ;) (expression_statement "local_8c = local_8c + local_5c + (uint)bVar5;" (assignment_expression "local_8c = local_8c + local_5c + (uint)bVar5" identifier = (binary_expression "local_8c + local_5c + (uint)bVar5" (binary_expression "local_8c + local_5c" identifier + identifier) + (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) })) (if_statement "if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }" if (parenthesized_expression "((local_90 & 1) != 0)" ( (binary_expression "(local_90 & 1) != 0" (parenthesized_expression "(local_90 & 1)" ( (binary_expression "local_90 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }" { (expression_statement "bVar5 = 0xfffffffe < local_90;" (assignment_expression "bVar5 = 0xfffffffe < local_90" identifier = (binary_expression "0xfffffffe < local_90" number_literal < identifier)) ;) (expression_statement "local_90 = local_90 + 1;" (assignment_expression "local_90 = local_90 + 1" identifier = (binary_expression "local_90 + 1" identifier + number_literal)) ;) (expression_statement "local_8c = local_8c + (uint)bVar5;" (assignment_expression "local_8c = local_8c + (uint)bVar5" identifier = (binary_expression "local_8c + (uint)bVar5" identifier + (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) })) (expression_statement "FUN_00139080(&local_94);" (call_expression "FUN_00139080(&local_94)" identifier (argument_list "(&local_94)" ( (pointer_expression "&local_94" & identifier) ))) ;) })) })) (if_statement "if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }" if (parenthesized_expression "(local_88 != local_80)" ( (binary_expression "local_88 != local_80" identifier != identifier) )) (compound_statement "{\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }" { (expression_statement "FUN_001807a0(local_88);" (call_expression "FUN_001807a0(local_88)" identifier (argument_list "(local_88)" ( identifier ))) ;) (expression_statement "uVar3 = uVar3 & 0xff;" (assignment_expression "uVar3 = uVar3 & 0xff" identifier = (binary_expression "uVar3 & 0xff" identifier & number_literal)) ;) })) })) (return_statement "return uVar3;" return identifier ;) })))
(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) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != (binary_expression IDENT + LIT)) ; (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (binary_expression IDENT == IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , LIT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != IDENT) || (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) })) })) (return_statement return IDENT ;) })))
(function_definition "uint FUN_0013bac0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  int local_94;\n  uint local_90;\n  int local_8c;\n  undefined1 *local_88;\n  undefined4 local_84;\n  undefined1 local_80 [16];\n  undefined4 local_70;\n  undefined4 local_6c;\n  uint local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined1 local_44 [16];\n  uint local_34;\n  int local_30;\n  \n  uVar3 = (uint)*(byte *)(param_1 + 0xd5);\n  if (*(byte *)(param_1 + 0xd5) == 0) {\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    \n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }\n  return uVar3;\n}" (type_identifier "uint") (function_declarator "FUN_0013bac0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)" (identifier "FUN_0013bac0") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)" (( "(") (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")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  bool bVar5;\n  int local_94;\n  uint local_90;\n  int local_8c;\n  undefined1 *local_88;\n  undefined4 local_84;\n  undefined1 local_80 [16];\n  undefined4 local_70;\n  undefined4 local_6c;\n  uint local_60;\n  int local_5c;\n  int local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined1 local_44 [16];\n  uint local_34;\n  int local_30;\n  \n  uVar3 = (uint)*(byte *)(param_1 + 0xd5);\n  if (*(byte *)(param_1 + 0xd5) == 0) {\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    \n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }\n  return uVar3;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (declaration "int local_94;" (primitive_type "int") (identifier "local_94") (; ";")) (declaration "uint local_90;" (type_identifier "uint") (identifier "local_90") (; ";")) (declaration "int local_8c;" (primitive_type "int") (identifier "local_8c") (; ";")) (declaration "undefined1 *local_88;" (type_identifier "undefined1") (pointer_declarator "*local_88" (* "*") (identifier "local_88")) (; ";")) (declaration "undefined4 local_84;" (type_identifier "undefined4") (identifier "local_84") (; ";")) (declaration "undefined1 local_80 [16];" (type_identifier "undefined1") (array_declarator "local_80 [16]" (identifier "local_80") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined4 local_70;" (type_identifier "undefined4") (identifier "local_70") (; ";")) (declaration "undefined4 local_6c;" (type_identifier "undefined4") (identifier "local_6c") (; ";")) (declaration "uint local_60;" (type_identifier "uint") (identifier "local_60") (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (declaration "undefined4 local_54;" (type_identifier "undefined4") (identifier "local_54") (; ";")) (declaration "undefined4 local_50;" (type_identifier "undefined4") (identifier "local_50") (; ";")) (declaration "undefined1 *local_4c;" (type_identifier "undefined1") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "undefined1 local_44 [16];" (type_identifier "undefined1") (array_declarator "local_44 [16]" (identifier "local_44") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "uint local_34;" (type_identifier "uint") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (expression_statement "uVar3 = (uint)*(byte *)(param_1 + 0xd5);" (assignment_expression "uVar3 = (uint)*(byte *)(param_1 + 0xd5)" (identifier "uVar3") (= "=") (binary_expression "(uint)*(byte *)(param_1 + 0xd5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + 0xd5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd5)" (( "(") (binary_expression "param_1 + 0xd5" (identifier "param_1") (+ "+") (number_literal "0xd5")) () ")"))))) (; ";")) (if_statement "if (*(byte *)(param_1 + 0xd5) == 0) {\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    \n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }" (if "if") (parenthesized_expression "(*(byte *)(param_1 + 0xd5) == 0)" (( "(") (binary_expression "*(byte *)(param_1 + 0xd5) == 0" (pointer_expression "*(byte *)(param_1 + 0xd5)" (* "*") (cast_expression "(byte *)(param_1 + 0xd5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd5)" (( "(") (binary_expression "param_1 + 0xd5" (identifier "param_1") (+ "+") (number_literal "0xd5")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined1 *)(param_1 + 0xd5) = 1;\n    FUN_00092300(param_4,param_1);\n    if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }\n    local_84 = 0;\n    local_90 = 8;\n    local_94 = param_1;\n    local_8c = 0;\n    local_80[0] = 0;\n    local_88 = local_80;\n                    \n    FUN_00139080(&local_94);\n    while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }\n    if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }\n  }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0xd5) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0xd5) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0xd5)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xd5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd5)" (( "(") (binary_expression "param_1 + 0xd5" (identifier "param_1") (+ "+") (number_literal "0xd5")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00092300(param_4,param_1);" (call_expression "FUN_00092300(param_4,param_1)" (identifier "FUN_00092300") (argument_list "(param_4,param_1)" (( "(") (identifier "param_4") (, ",") (identifier "param_1") () ")"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0xa8) != 0) {\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xa8) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xa8) != 0" (pointer_expression "*(int *)(param_1 + 0xa8)" (* "*") (cast_expression "(int *)(param_1 + 0xa8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa8)" (( "(") (binary_expression "param_1 + 0xa8" (identifier "param_1") (+ "+") (number_literal "0xa8")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }\nLAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);\n      return 1;\n    }" ({ "{") (for_statement "for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;\n          iVar4 = thunk_FUN_00181d80(iVar4)) {\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }" (for "for") (( "(") (assignment_expression "iVar4 = *(int *)(param_1 + 0xa0)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0xa0)" (* "*") (cast_expression "(int *)(param_1 + 0xa0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")"))))) (; ";") (binary_expression "iVar4 != param_1 + 0x98" (identifier "iVar4") (!= "!=") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98"))) (; ";") (assignment_expression "iVar4 = thunk_FUN_00181d80(iVar4)" (identifier "iVar4") (= "=") (call_expression "thunk_FUN_00181d80(iVar4)" (identifier "thunk_FUN_00181d80") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")")))) () ")") (compound_statement "{\n        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");\n        if ((char)uVar3 == '\0') {\n          return uVar3;\n        }\n        DAT_00309274 = DAT_00309274 + 1;\n      }" ({ "{") (expression_statement "uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");" (assignment_expression "uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive")" (identifier "uVar3") (= "=") (call_expression "FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive")" (identifier "FUN_0013b7f0") (argument_list "(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),\n                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive")" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (pointer_expression "*(undefined4 *)(iVar4 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x10)" (( "(") (binary_expression "iVar4 + 0x10" (identifier "iVar4") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar4 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x14)" (( "(") (binary_expression "iVar4 + 0x14" (identifier "iVar4") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (identifier "param_5") (, ",") (number_literal "0") (, ",") (string_literal ""--whole-archive"" (" """) (string_content "--whole-archive") (" """)) () ")")))) (; ";")) (if_statement "if ((char)uVar3 == '\0') {\n          return uVar3;\n        }" (if "if") (parenthesized_expression "((char)uVar3 == '\0')" (( "(") (binary_expression "(char)uVar3 == '\0'" (cast_expression "(char)uVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar3")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          return uVar3;\n        }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "DAT_00309274 = DAT_00309274 + 1;" (assignment_expression "DAT_00309274 = DAT_00309274 + 1" (identifier "DAT_00309274") (= "=") (binary_expression "DAT_00309274 + 1" (identifier "DAT_00309274") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (labeled_statement "LAB_0013bb8b:\n      FUN_000923a0(param_4,param_1);" (statement_identifier "LAB_0013bb8b") (: ":") (expression_statement "FUN_000923a0(param_4,param_1);" (call_expression "FUN_000923a0(param_4,param_1)" (identifier "FUN_000923a0") (argument_list "(param_4,param_1)" (( "(") (identifier "param_4") (, ",") (identifier "param_1") () ")"))) (; ";"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_90 = 8;" (assignment_expression "local_90 = 8" (identifier "local_90") (= "=") (number_literal "8")) (; ";")) (expression_statement "local_94 = param_1;" (assignment_expression "local_94 = param_1" (identifier "local_94") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" (identifier "local_8c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_80[0] = 0;" (assignment_expression "local_80[0] = 0" (subscript_expression "local_80[0]" (identifier "local_80") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_88 = local_80;" (assignment_expression "local_88 = local_80" (identifier "local_88") (= "=") (identifier "local_80")) (; ";")) (expression_statement "FUN_00139080(&local_94);" (call_expression "FUN_00139080(&local_94)" (identifier "FUN_00139080") (argument_list "(&local_94)" (( "(") (pointer_expression "&local_94" (& "&") (identifier "local_94")) () ")"))) (; ";")) (while_statement "while( true ) {\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      local_48 = 0;\n      local_44[0] = 0;\n      local_58 = param_1;\n      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);\n      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);\n      local_4c = local_44;\n                    \n      FUN_00139080(&local_58);\n      iVar2 = local_30;\n      uVar1 = local_34;\n      iVar4 = local_8c;\n      uVar3 = local_90;\n      if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }\n      if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }\n                    \n      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");\n      if ((char)uVar3 == '\0') break;\n      DAT_00309274 = DAT_00309274 + 1;\n      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }\n    }" ({ "{") (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44[0] = 0;" (assignment_expression "local_44[0] = 0" (subscript_expression "local_44[0]" (identifier "local_44") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_58 = param_1;" (assignment_expression "local_58 = param_1" (identifier "local_58") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);" (assignment_expression "local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44)" (identifier "local_50") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x24) + 0x44)" (( "(") (binary_expression "*(int *)(param_1 + 0x24) + 0x44" (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);" (assignment_expression "local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40)" (identifier "local_54") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x24) + 0x40)" (( "(") (binary_expression "*(int *)(param_1 + 0x24) + 0x40" (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "local_4c = local_44;" (assignment_expression "local_4c = local_44" (identifier "local_4c") (= "=") (identifier "local_44")) (; ";")) (expression_statement "FUN_00139080(&local_58);" (call_expression "FUN_00139080(&local_58)" (identifier "FUN_00139080") (argument_list "(&local_58)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (expression_statement "iVar2 = local_30;" (assignment_expression "iVar2 = local_30" (identifier "iVar2") (= "=") (identifier "local_30")) (; ";")) (expression_statement "uVar1 = local_34;" (assignment_expression "uVar1 = local_34" (identifier "uVar1") (= "=") (identifier "local_34")) (; ";")) (expression_statement "iVar4 = local_8c;" (assignment_expression "iVar4 = local_8c" (identifier "iVar4") (= "=") (identifier "local_8c")) (; ";")) (expression_statement "uVar3 = local_90;" (assignment_expression "uVar3 = local_90" (identifier "uVar3") (= "=") (identifier "local_90")) (; ";")) (if_statement "if (local_4c != local_44) {\n        FUN_001807a0(local_4c);\n      }" (if "if") (parenthesized_expression "(local_4c != local_44)" (( "(") (binary_expression "local_4c != local_44" (identifier "local_4c") (!= "!=") (identifier "local_44")) () ")")) (compound_statement "{\n        FUN_001807a0(local_4c);\n      }" ({ "{") (expression_statement "FUN_001807a0(local_4c);" (call_expression "FUN_001807a0(local_4c)" (identifier "FUN_001807a0") (argument_list "(local_4c)" (( "(") (identifier "local_4c") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar2 == iVar4 && uVar3 == uVar1) {\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }" (if "if") (parenthesized_expression "(iVar2 == iVar4 && uVar3 == uVar1)" (( "(") (binary_expression "iVar2 == iVar4 && uVar3 == uVar1" (binary_expression "iVar2 == iVar4" (identifier "iVar2") (== "==") (identifier "iVar4")) (&& "&&") (binary_expression "uVar3 == uVar1" (identifier "uVar3") (== "==") (identifier "uVar1"))) () ")")) (compound_statement "{\n        if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }\n        goto LAB_0013bb8b;\n      }" ({ "{") (if_statement "if (local_88 != local_80) {\n          FUN_001807a0(local_88);\n        }" (if "if") (parenthesized_expression "(local_88 != local_80)" (( "(") (binary_expression "local_88 != local_80" (identifier "local_88") (!= "!=") (identifier "local_80")) () ")")) (compound_statement "{\n          FUN_001807a0(local_88);\n        }" ({ "{") (expression_statement "FUN_001807a0(local_88);" (call_expression "FUN_001807a0(local_88)" (identifier "FUN_001807a0") (argument_list "(local_88)" (( "(") (identifier "local_88") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0013bb8b;" (goto "goto") (statement_identifier "LAB_0013bb8b") (; ";")) (} "}"))) (expression_statement "uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive");" (assignment_expression "uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive")" (identifier "uVar3") (= "=") (call_expression "FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive")" (identifier "FUN_0013b7f0") (argument_list "(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,\n                           "--whole-archive")" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "local_70") (, ",") (identifier "local_6c") (, ",") (identifier "param_5") (, ",") (number_literal "0") (, ",") (string_literal ""--whole-archive"" (" """) (string_content "--whole-archive") (" """)) () ")")))) (; ";")) (if_statement "if ((char)uVar3 == '\0') break;" (if "if") (parenthesized_expression "((char)uVar3 == '\0')" (( "(") (binary_expression "(char)uVar3 == '\0'" (cast_expression "(char)uVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar3")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "DAT_00309274 = DAT_00309274 + 1;" (assignment_expression "DAT_00309274 = DAT_00309274 + 1" (identifier "DAT_00309274") (= "=") (binary_expression "DAT_00309274 + 1" (identifier "DAT_00309274") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }" (if "if") (parenthesized_expression "(*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c)" (( "(") (binary_expression "*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||\n          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c" (binary_expression "*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90" (pointer_expression "*(uint *)(*(int *)(local_94 + 0x24) + 0x40)" (* "*") (cast_expression "(uint *)(*(int *)(local_94 + 0x24) + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_94 + 0x24) + 0x40)" (( "(") (binary_expression "*(int *)(local_94 + 0x24) + 0x40" (pointer_expression "*(int *)(local_94 + 0x24)" (* "*") (cast_expression "(int *)(local_94 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_94 + 0x24)" (( "(") (binary_expression "local_94 + 0x24" (identifier "local_94") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (identifier "local_90")) (|| "||") (binary_expression "*(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c" (pointer_expression "*(int *)(*(int *)(local_94 + 0x24) + 0x44)" (* "*") (cast_expression "(int *)(*(int *)(local_94 + 0x24) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_94 + 0x24) + 0x44)" (( "(") (binary_expression "*(int *)(local_94 + 0x24) + 0x44" (pointer_expression "*(int *)(local_94 + 0x24)" (* "*") (cast_expression "(int *)(local_94 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_94 + 0x24)" (( "(") (binary_expression "local_94 + 0x24" (identifier "local_94") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (identifier "local_8c"))) () ")")) (compound_statement "{\n        bVar5 = 0xffffffc3 < local_90;\n        local_90 = local_90 + 0x3c;\n        local_8c = local_8c + (uint)bVar5;\n        if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }\n        if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }\n        FUN_00139080(&local_94);\n      }" ({ "{") (expression_statement "bVar5 = 0xffffffc3 < local_90;" (assignment_expression "bVar5 = 0xffffffc3 < local_90" (identifier "bVar5") (= "=") (binary_expression "0xffffffc3 < local_90" (number_literal "0xffffffc3") (< "<") (identifier "local_90"))) (; ";")) (expression_statement "local_90 = local_90 + 0x3c;" (assignment_expression "local_90 = local_90 + 0x3c" (identifier "local_90") (= "=") (binary_expression "local_90 + 0x3c" (identifier "local_90") (+ "+") (number_literal "0x3c"))) (; ";")) (expression_statement "local_8c = local_8c + (uint)bVar5;" (assignment_expression "local_8c = local_8c + (uint)bVar5" (identifier "local_8c") (= "=") (binary_expression "local_8c + (uint)bVar5" (identifier "local_8c") (+ "+") (cast_expression "(uint)bVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar5")))) (; ";")) (if_statement "if (*(char *)(local_94 + 0xac) == '\0') {\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }" (if "if") (parenthesized_expression "(*(char *)(local_94 + 0xac) == '\0')" (( "(") (binary_expression "*(char *)(local_94 + 0xac) == '\0'" (pointer_expression "*(char *)(local_94 + 0xac)" (* "*") (cast_expression "(char *)(local_94 + 0xac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_94 + 0xac)" (( "(") (binary_expression "local_94 + 0xac" (identifier "local_94") (+ "+") (number_literal "0xac")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          bVar5 = CARRY4(local_90,local_60);\n          local_90 = local_90 + local_60;\n          local_8c = local_8c + local_5c + (uint)bVar5;\n        }" ({ "{") (expression_statement "bVar5 = CARRY4(local_90,local_60);" (assignment_expression "bVar5 = CARRY4(local_90,local_60)" (identifier "bVar5") (= "=") (call_expression "CARRY4(local_90,local_60)" (identifier "CARRY4") (argument_list "(local_90,local_60)" (( "(") (identifier "local_90") (, ",") (identifier "local_60") () ")")))) (; ";")) (expression_statement "local_90 = local_90 + local_60;" (assignment_expression "local_90 = local_90 + local_60" (identifier "local_90") (= "=") (binary_expression "local_90 + local_60" (identifier "local_90") (+ "+") (identifier "local_60"))) (; ";")) (expression_statement "local_8c = local_8c + local_5c + (uint)bVar5;" (assignment_expression "local_8c = local_8c + local_5c + (uint)bVar5" (identifier "local_8c") (= "=") (binary_expression "local_8c + local_5c + (uint)bVar5" (binary_expression "local_8c + local_5c" (identifier "local_8c") (+ "+") (identifier "local_5c")) (+ "+") (cast_expression "(uint)bVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar5")))) (; ";")) (} "}"))) (if_statement "if ((local_90 & 1) != 0) {\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }" (if "if") (parenthesized_expression "((local_90 & 1) != 0)" (( "(") (binary_expression "(local_90 & 1) != 0" (parenthesized_expression "(local_90 & 1)" (( "(") (binary_expression "local_90 & 1" (identifier "local_90") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          bVar5 = 0xfffffffe < local_90;\n          local_90 = local_90 + 1;\n          local_8c = local_8c + (uint)bVar5;\n        }" ({ "{") (expression_statement "bVar5 = 0xfffffffe < local_90;" (assignment_expression "bVar5 = 0xfffffffe < local_90" (identifier "bVar5") (= "=") (binary_expression "0xfffffffe < local_90" (number_literal "0xfffffffe") (< "<") (identifier "local_90"))) (; ";")) (expression_statement "local_90 = local_90 + 1;" (assignment_expression "local_90 = local_90 + 1" (identifier "local_90") (= "=") (binary_expression "local_90 + 1" (identifier "local_90") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_8c = local_8c + (uint)bVar5;" (assignment_expression "local_8c = local_8c + (uint)bVar5" (identifier "local_8c") (= "=") (binary_expression "local_8c + (uint)bVar5" (identifier "local_8c") (+ "+") (cast_expression "(uint)bVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar5")))) (; ";")) (} "}"))) (expression_statement "FUN_00139080(&local_94);" (call_expression "FUN_00139080(&local_94)" (identifier "FUN_00139080") (argument_list "(&local_94)" (( "(") (pointer_expression "&local_94" (& "&") (identifier "local_94")) () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_88 != local_80) {\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }" (if "if") (parenthesized_expression "(local_88 != local_80)" (( "(") (binary_expression "local_88 != local_80" (identifier "local_88") (!= "!=") (identifier "local_80")) () ")")) (compound_statement "{\n      FUN_001807a0(local_88);\n      uVar3 = uVar3 & 0xff;\n    }" ({ "{") (expression_statement "FUN_001807a0(local_88);" (call_expression "FUN_001807a0(local_88)" (identifier "FUN_001807a0") (argument_list "(local_88)" (( "(") (identifier "local_88") () ")"))) (; ";")) (expression_statement "uVar3 = uVar3 & 0xff;" (assignment_expression "uVar3 = uVar3 & 0xff" (identifier "uVar3") (= "=") (binary_expression "uVar3 & 0xff" (identifier "uVar3") (& "&") (number_literal "0xff"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool include_all_members(Archive * this, Symbol_table * symtab, Layout
   * layout, Input_objects * input_objects, Mapfile * mapfile) */

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

{
  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;
  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_6;
  type_6 off;
  type_7 var_16;
  int var_15;
  type_7 var_17;
  int var_14;
  bool bVar7;
  char cVar8;
  type_8 *p_Var9;
  type_9 p;
  type_9 local_58;
  
  cVar8 = this->included_all_members_;
  if ((bool)cVar8 == false) {
    this->included_all_members_ = true;
    Input_objects::var_7(input_objects,this);
    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count != 0) {
      for (p_Var9 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;
          (type_10 *)p_Var9 != &(this->members_)._M_t._M_impl.super__Rb_tree_header;
          p_Var9 = (type_8 *)std::var_8(p_Var9)) {
        off._0_4_ = p_Var9[1]._M_color;
        off._4_4_ = p_Var9[1]._M_parent;
        bVar7 = var_9(this,symtab,layout,input_objects,off,mapfile,(type_11 *)0x0,
                               "--whole-archive");
        if (!bVar7) {
          return bVar7;
        }
        var_10 = var_10 + 1;
      }
LAB_0013bb8b:
      Input_objects::var_11(input_objects,this);
      return true;
    }
    var_5 = &p.header_.name.field_2;
    p.header_.name._M_string_length = 0;
    p.off_._0_4_ = 8;
    p.archive_ = this;
    p.off_._4_4_ = 0;
    p.header_.name.field_2._M_local_buf[0] = '\0';
    p.header_.name._M_dataplus._M_p = (type_12)var_5;
                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */
    const_iterator::var_12(&p);
    var_6 = &local_58.header_.name.field_2;
    while( true ) {
      local_58.header_.name._M_string_length = 0;
      local_58.header_.name.field_2._M_local_buf[0] = '\0';
      local_58.archive_ = this;
      local_58.off_._4_4_ = *(type_13 *)((int)&(this->input_file_->file_).size_ + 4);
      local_58.off_._0_4_ = (type_13)(this->input_file_->file_).size_;
      local_58.header_.name._M_dataplus._M_p = (type_12)var_6;
                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */
      const_iterator::var_12(&local_58);
      var_14 = local_58.header_.off._4_4_;
      var_17 = (type_7)local_58.header_.off;
      var_15 = p.off_._4_4_;
      var_16 = (type_7)p.off_;
      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
           *)local_58.header_.name._M_dataplus._M_p != var_6) {
        var_13(local_58.header_.name._M_dataplus._M_p);
      }
      if (var_14 == var_15 && var_16 == var_17) {
        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
             *)p.header_.name._M_dataplus._M_p != var_5) {
          var_13(p.header_.name._M_dataplus._M_p);
        }
        goto LAB_0013bb8b;
      }
                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */
      cVar8 = var_9(this,symtab,layout,input_objects,
                             var_18(p.header_.off._4_4_,(type_13)p.header_.off),mapfile,
                             (type_11 *)0x0,"--whole-archive");
      if (!(bool)cVar8) break;
      var_10 = var_10 + 1;
      if ((type_7)((p.archive_)->input_file_->file_).size_ != (type_7)p.off_ ||
          *(int *)((int)&((p.archive_)->input_file_->file_).size_ + 4) != p.off_._4_4_) {
        bVar7 = 0xffffffc3 < (type_7)p.off_;
        p.off_._0_4_ = (type_7)p.off_ + 0x3c;
        p.off_._4_4_ = p.off_._4_4_ + (type_7)bVar7;
        if ((p.archive_)->is_thin_archive_ == false) {
          bVar7 = var_19((type_7)p.off_,(type_7)p.header_.size);
          p.off_._0_4_ = (type_7)p.off_ + (type_7)p.header_.size;
          p.off_._4_4_ = p.off_._4_4_ + p.header_.size._4_4_ + (type_7)bVar7;
        }
        if (((type_7)p.off_ & 1) != 0) {
          bVar7 = 0xfffffffe < (type_7)p.off_;
          p.off_._0_4_ = (type_7)p.off_ + 1;
          p.off_._4_4_ = p.off_._4_4_ + (type_7)bVar7;
        }
        const_iterator::var_12(&p);
      }
    }
    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
         *)p.header_.name._M_dataplus._M_p != var_5) {
      var_13(p.header_.name._M_dataplus._M_p);
    }
  }
  return (bool)cVar8;
}


(translation_unit (function_definition type: (type_identifier) 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)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (for_statement initializer: (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)))))) condition: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) update: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier) (number_literal) (string_literal (string_content)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (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))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (string_literal (string_content)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (identifier)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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))))) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))))))) (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: (binary_expression left: (identifier) right: (number_literal)))))))) (return_statement (identifier)))))

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

uint MASKED(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  bool bVar5;
  int local_94;
  uint local_90;
  int local_8c;
  undefined1 *local_88;
  undefined4 local_84;
  undefined1 local_80 [16];
  undefined4 local_70;
  undefined4 local_6c;
  uint local_60;
  int local_5c;
  int local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined1 *local_4c;
  undefined4 local_48;
  undefined1 local_44 [16];
  uint local_34;
  int local_30;
  
  uVar3 = (uint)*(byte *)(param_1 + 0xd5);
  if (*(byte *)(param_1 + 0xd5) == 0) {
    *(undefined1 *)(param_1 + 0xd5) = 1;
    FUN_00092300(param_4,param_1);
    if (*(int *)(param_1 + 0xa8) != 0) {
      for (iVar4 = *(int *)(param_1 + 0xa0); iVar4 != param_1 + 0x98;
          iVar4 = thunk_FUN_00181d80(iVar4)) {
        uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,*(undefined4 *)(iVar4 + 0x10),
                             *(undefined4 *)(iVar4 + 0x14),param_5,0,"--whole-archive");
        if ((char)uVar3 == '\0') {
          return uVar3;
        }
        DAT_00309274 = DAT_00309274 + 1;
      }
LAB_0013bb8b:
      FUN_000923a0(param_4,param_1);
      return 1;
    }
    local_84 = 0;
    local_90 = 8;
    local_94 = param_1;
    local_8c = 0;
    local_80[0] = 0;
    local_88 = local_80;
                    /* try { // try from 0013bbf7 to 0013bbfb has its CatchHandler @ 0013bdda */
    FUN_00139080(&local_94);
    while( true ) {
      local_48 = 0;
      local_44[0] = 0;
      local_58 = param_1;
      local_50 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x44);
      local_54 = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x40);
      local_4c = local_44;
                    /* try { // try from 0013bc55 to 0013bc59 has its CatchHandler @ 0013bde8 */
      FUN_00139080(&local_58);
      iVar2 = local_30;
      uVar1 = local_34;
      iVar4 = local_8c;
      uVar3 = local_90;
      if (local_4c != local_44) {
        FUN_001807a0(local_4c);
      }
      if (iVar2 == iVar4 && uVar3 == uVar1) {
        if (local_88 != local_80) {
          FUN_001807a0(local_88);
        }
        goto LAB_0013bb8b;
      }
                    /* try { // try from 0013bcd2 to 0013bd71 has its CatchHandler @ 0013bde1 */
      uVar3 = FUN_0013b7f0(param_1,param_2,param_3,param_4,local_70,local_6c,param_5,0,
                           "--whole-archive");
      if ((char)uVar3 == '\0') break;
      DAT_00309274 = DAT_00309274 + 1;
      if (*(uint *)(*(int *)(local_94 + 0x24) + 0x40) != local_90 ||
          *(int *)(*(int *)(local_94 + 0x24) + 0x44) != local_8c) {
        bVar5 = 0xffffffc3 < local_90;
        local_90 = local_90 + 0x3c;
        local_8c = local_8c + (uint)bVar5;
        if (*(char *)(local_94 + 0xac) == '\0') {
          bVar5 = CARRY4(local_90,local_60);
          local_90 = local_90 + local_60;
          local_8c = local_8c + local_5c + (uint)bVar5;
        }
        if ((local_90 & 1) != 0) {
          bVar5 = 0xfffffffe < local_90;
          local_90 = local_90 + 1;
          local_8c = local_8c + (uint)bVar5;
        }
        FUN_00139080(&local_94);
      }
    }
    if (local_88 != local_80) {
      FUN_001807a0(local_88);
      uVar3 = uVar3 & 0xff;
    }
  }
  return uVar3;
}

