
/* DWARF original prototype: void read_dynamic(Sized_dynobj<32,_true> * this, uchar * pshdrs, uint
   dynamic_shndx, uint strtab_shndx, uchar * strtabu, off_t strtab_size) */

void __thiscall
gold::Sized_dynobj<32,_true>::read_dynamic
          (Sized_dynobj<32,_true> *this,uchar *pshdrs,uint dynamic_shndx,uint strtab_shndx,
          uchar *strtabu,off_t strtab_size)

{
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar1;
  pointer *ppbVar2;
  uint uVar3;
  iterator __position;
  uint *puVar4;
  size_t sVar5;
  uint uVar6;
  uchar *puVar7;
  ulong uVar8;
  uint *puVar9;
  char *pcVar10;
  Input_file *this_00;
  uchar *__s;
  uchar *local_60;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_58;
  
  if (*(int *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 4) != 0x6000000) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/dynobj.cc",0x100,"read_dynamic");
  }
  uVar6 = *(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x14);
  uVar3 = *(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x10);
  this_00 = (this->super_Dynobj).super_Object.input_file_;
  uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);
  if (this_00 == (Input_file *)0x0) {
LAB_002b3b94:
                    /* WARNING: Subroutine does not return */
    Object::input_file((Object *)this_00);
  }
  puVar4 = (uint *)File_read::get_view(&this_00->file_,(this->super_Dynobj).super_Object.offset_,
                                       (ulong)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 |
                                               (uVar3 & 0xff00) << 8 | uVar3 << 0x18),uVar8,true,
                                       false);
  uVar6 = *(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x18);
  uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;
  if (0xfeff < uVar6) {
    elfcpp::Elf_file<32,_true,_gold::Object>::initialize_shnum(&this->elf_file_);
    uVar6 = uVar6 + (this->elf_file_).large_shndx_offset_;
  }
  local_60 = strtabu;
  if (strtab_shndx == uVar6) {
LAB_002b39ab:
    puVar9 = (uint *)(uVar8 + (long)puVar4);
    if (puVar4 < puVar9) {
      paVar1 = &local_58.field_2;
      do {
        while( true ) {
          uVar6 = *puVar4;
          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;
          if (uVar6 == 1) break;
          if (uVar6 == 0) {
            return;
          }
          if (uVar6 == 0xe) {
            uVar6 = puVar4[1];
            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";
            uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |
                           uVar6 << 0x18);
            if (strtab_size <= (long)uVar8) goto LAB_002b3a66;
            sVar5 = strlen((char *)(local_60 + uVar8));
            std::string::_M_replace
                      ((string *)&(this->super_Dynobj).soname_,0,
                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),
                       sVar5);
          }
joined_r0x002b3b2b:
          puVar4 = puVar4 + 2;
          if (puVar9 <= puVar4) goto LAB_002b3a1e;
        }
        uVar6 = puVar4[1];
        uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |
                       uVar6 << 0x18);
        if (strtab_size <= (long)uVar8) {
          pcVar10 = "DT_NEEDED value out of range: %lld >= %lld";
LAB_002b3a66:
          pcVar10 = (char *)gettext(pcVar10);
          Object::error((Object *)this,pcVar10,uVar8,strtab_size);
          goto joined_r0x002b3b2b;
        }
        puVar7 = (uchar *)0xffffffffffffffff;
        __s = local_60 + uVar8;
        local_58._M_dataplus._M_p = (pointer)paVar1;
        if (__s != (uchar *)0x0) {
          sVar5 = strlen((char *)__s);
          puVar7 = __s + sVar5;
        }
        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
        _M_construct<char_const*>(&local_58,__s,puVar7);
        __position._M_current =
             (this->super_Dynobj).needed_.
             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
             ._M_impl._M_finish;
        if (__position._M_current !=
            (this->super_Dynobj).needed_.
            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
            ._M_impl._M_end_of_storage) {
          ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;
          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
               *)local_58._M_dataplus._M_p == paVar1) {
            ((__position._M_current)->field_2)._M_allocated_capacity =
                 local_58.field_2._M_allocated_capacity;
            *(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;
          }
          else {
            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;
            ((__position._M_current)->field_2)._M_allocated_capacity =
                 local_58.field_2._M_allocated_capacity;
          }
          (__position._M_current)->_M_string_length = local_58._M_string_length;
          ppbVar2 = &(this->super_Dynobj).needed_.
                     super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
                     ._M_impl._M_finish;
          *ppbVar2 = *ppbVar2 + 1;
          goto joined_r0x002b3b2b;
        }
                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */
        std::
        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
        ::
        _M_realloc_insert<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>
                  (&(this->super_Dynobj).needed_,__position,&local_58);
        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
             *)local_58._M_dataplus._M_p == paVar1) goto joined_r0x002b3b2b;
        operator_delete(local_58._M_dataplus._M_p);
        puVar4 = puVar4 + 2;
      } while (puVar4 < puVar9);
    }
LAB_002b3a1e:
    pcVar10 = (char *)gettext("missing DT_NULL in dynamic segment");
    Object::error((Object *)this,pcVar10);
    return;
  }
  if (uVar6 < (this->super_Dynobj).super_Object.shnum_) {
    if (*(int *)(pshdrs + (ulong)(uVar6 * 0x28) + 4) == 0x3000000) {
      uVar3 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x14);
      uVar6 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x10);
      this_00 = (this->super_Dynobj).super_Object.input_file_;
      strtab_size = (off_t)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                           uVar3 << 0x18);
      if (this_00 == (Input_file *)0x0) goto LAB_002b3b94;
      local_60 = File_read::get_view(&this_00->file_,(this->super_Dynobj).super_Object.offset_,
                                     (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |
                                             (uVar6 & 0xff00) << 8 | uVar6 << 0x18),strtab_size,
                                     false,false);
      goto LAB_002b39ab;
    }
    pcVar10 = "DYNAMIC section %u link %u is not a strtab";
  }
  else {
    pcVar10 = "DYNAMIC section %u link out of range: %u";
  }
  pcVar10 = (char *)gettext(pcVar10);
  Object::error((Object *)this,pcVar10,(ulong)dynamic_shndx,uVar6);
  return;
}



void FUN_002b3880(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)

{
  uint uVar1;
  long *plVar2;
  uint *puVar3;
  undefined8 uVar4;
  size_t sVar5;
  uint uVar6;
  ulong uVar7;
  uint *puVar8;
  char *pcVar9;
  long lVar10;
  char *__s;
  long local_60;
  long *local_58;
  long local_50;
  long local_48;
  long lStack_40;
  
  lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;
  if (*(int *)(lVar10 + 4) != 0x6000000) {
                    /* WARNING: Subroutine does not return */
    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");
  }
  uVar6 = *(uint *)(lVar10 + 0x14);
  uVar1 = *(uint *)(lVar10 + 0x10);
  uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);
  if (*(long *)(param_1 + 0x28) == 0) {
LAB_002b3b94:
                    /* WARNING: Subroutine does not return */
    FUN_002a89d0();
  }
  puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),
                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |
                                uVar1 << 0x18,uVar7,1,0);
  uVar6 = *(uint *)(lVar10 + 0x18);
  uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;
  if (0xfeff < uVar6) {
    FUN_001da740(param_1 + 0x90);
    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);
  }
  local_60 = param_5;
  if (param_4 == uVar6) {
LAB_002b39ab:
    puVar8 = (uint *)(uVar7 + (long)puVar3);
    if (puVar3 < puVar8) {
      do {
        while( true ) {
          uVar6 = *puVar3;
          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;
          if (uVar6 == 1) break;
          if (uVar6 == 0) {
            return;
          }
          if (uVar6 == 0xe) {
            uVar6 = puVar3[1];
            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";
            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |
                           uVar6 << 0x18);
            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;
            sVar5 = strlen((char *)(uVar7 + local_60));
            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)
                         ,sVar5);
          }
joined_r0x002b3b2b:
          puVar3 = puVar3 + 2;
          if (puVar8 <= puVar3) goto LAB_002b3a1e;
        }
        uVar6 = puVar3[1];
        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |
                       uVar6 << 0x18);
        if ((long)param_6 <= (long)uVar7) {
          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";
LAB_002b3a66:
          uVar4 = gettext(pcVar9);
          FUN_001d19e0(param_1,uVar4,uVar7,param_6);
          goto joined_r0x002b3b2b;
        }
        pcVar9 = (char *)0xffffffffffffffff;
        __s = (char *)(uVar7 + local_60);
        local_58 = &local_48;
        if (__s != (char *)0x0) {
          sVar5 = strlen(__s);
          pcVar9 = __s + sVar5;
        }
        FUN_00174550(&local_58,__s,pcVar9);
        plVar2 = *(long **)(param_1 + 0x78);
        if (plVar2 != *(long **)(param_1 + 0x80)) {
          *plVar2 = (long)(plVar2 + 2);
          if (local_58 == &local_48) {
            plVar2[2] = local_48;
            plVar2[3] = lStack_40;
          }
          else {
            *plVar2 = (long)local_58;
            plVar2[2] = local_48;
          }
          plVar2[1] = local_50;
          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;
          goto joined_r0x002b3b2b;
        }
                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */
        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);
        if (local_58 == &local_48) goto joined_r0x002b3b2b;
        FUN_002f1e60();
        puVar3 = puVar3 + 2;
      } while (puVar3 < puVar8);
    }
LAB_002b3a1e:
    uVar4 = gettext("missing DT_NULL in dynamic segment");
    FUN_001d19e0(param_1,uVar4);
    return;
  }
  if (uVar6 < *(uint *)(param_1 + 0x38)) {
    param_2 = (ulong)(uVar6 * 0x28) + param_2;
    if (*(int *)(param_2 + 4) == 0x3000000) {
      uVar6 = *(uint *)(param_2 + 0x14);
      uVar1 = *(uint *)(param_2 + 0x10);
      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |
                       uVar6 << 0x18);
      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;
      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),
                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |
                              uVar1 << 0x18,param_6,0,0);
      goto LAB_002b39ab;
    }
    pcVar9 = "DYNAMIC section %u link %u is not a strtab";
  }
  else {
    pcVar9 = "DYNAMIC section %u link out of range: %u";
  }
  uVar4 = gettext(pcVar9);
  FUN_001d19e0(param_1,uVar4,param_3,uVar6);
  return;
}


PUSH R15
LEA R10D,[RDX + RDX*0x4]
PUSH R14
SHL R10D,0x3
PUSH R13
ADD R10,RSI
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x48
CMP dword ptr [R10 + 0x4],0x6000000
MOV dword ptr [RSP + 0x8],ECX
MOV qword ptr [RSP + 0x18],R8
JNZ 0x002b3b99
MOV R12,RDI
MOV R14D,EDX
MOV EBP,dword ptr [R10 + 0x14]
MOV EDX,dword ptr [R10 + 0x10]
MOV RDI,qword ptr [RDI + 0x28]
BSWAP EBP
BSWAP EDX
MOV EBP,EBP
MOV EDX,EDX
TEST RDI,RDI
JZ 0x002b3b94
MOV R15,RSI
MOV RSI,qword ptr [R12 + 0x30]
MOV RCX,RBP
MOV R13,R9
ADD RDI,0x28
XOR R9D,R9D
MOV R8D,0x1
MOV qword ptr [RSP + 0x10],R10
CALL 0x0018a760
MOV R10,qword ptr [RSP + 0x10]
MOV RBX,RAX
MOV ECX,dword ptr [R10 + 0x18]
BSWAP ECX
CMP ECX,0xfeff
JA 0x002b3a90
CMP dword ptr [RSP + 0x8],ECX
JZ 0x002b39ab
CMP dword ptr [R12 + 0x38],ECX
JBE 0x002b3b50
LEA EAX,[RCX + RCX*0x4]
MOV dword ptr [RSP + 0x8],ECX
SHL EAX,0x3
ADD RAX,R15
CMP dword ptr [RAX + 0x4],0x3000000
JZ 0x002b3970
LEA RDI,[0x3a5ab0]
CALL 0x00149320
MOV ECX,dword ptr [RSP + 0x8]
MOV EDX,R14D
MOV RDI,R12
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001d19e0
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R13D,dword ptr [RAX + 0x14]
MOV EDX,dword ptr [RAX + 0x10]
MOV RDI,qword ptr [R12 + 0x28]
BSWAP R13D
BSWAP EDX
MOV R13D,R13D
MOV EDX,EDX
TEST RDI,RDI
JZ 0x002b3b94
MOV RSI,qword ptr [R12 + 0x30]
ADD RDI,0x28
XOR R9D,R9D
XOR R8D,R8D
MOV RCX,R13
CALL 0x0018a760
MOV qword ptr [RSP + 0x18],RAX
ADD RBP,RBX
CMP RBX,RBP
JNC 0x002b3a1e
LEA R14,[RSP + 0x20]
LEA RAX,[R14 + 0x10]
MOV qword ptr [RSP + 0x8],RAX
LEA RAX,[R12 + 0x70]
MOV qword ptr [RSP + 0x10],RAX
MOV EAX,dword ptr [RBX]
BSWAP EAX
CMP EAX,0x1
JZ 0x002b3a50
TEST EAX,EAX
JZ 0x002b395d
CMP EAX,0xe
JNZ 0x002b3a15
MOV EDX,dword ptr [RBX + 0x4]
LEA RDI,[0x3a5ae0]
BSWAP EDX
MOV R15D,EDX
CMP R13,R15
JLE 0x002b3a66
ADD R15,qword ptr [RSP + 0x18]
MOV RDI,R15
CALL 0x00149490
MOV RDX,qword ptr [R12 + 0x58]
MOV RCX,R15
XOR ESI,ESI
MOV R8,RAX
LEA RDI,[R12 + 0x50]
CALL 0x002f9790
ADD RBX,0x8
CMP RBX,RBP
JC 0x002b39cb
LEA RDI,[0x3a5b40]
CALL 0x00149320
MOV RDI,R12
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001d19e0
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R8D,dword ptr [RBX + 0x4]
BSWAP R8D
MOV R15D,R8D
CMP R13,R15
JG 0x002b3ab8
LEA RDI,[0x3a5b10]
CALL 0x00149320
ADD RBX,0x8
MOV RCX,R13
MOV RDX,R15
MOV RSI,RAX
MOV RDI,R12
XOR EAX,EAX
CALL 0x001d19e0
CMP RBX,RBP
JC 0x002b39cb
JMP 0x002b3a1e
LEA RDI,[R12 + 0x90]
MOV dword ptr [RSP + 0x10],ECX
CALL 0x001da740
MOV ECX,dword ptr [RSP + 0x10]
ADD ECX,dword ptr [R12 + 0xa8]
JMP 0x002b3912
MOV RAX,qword ptr [RSP + 0x8]
MOV RDX,-0x1
MOV qword ptr [RSP + 0x20],RAX
ADD R15,qword ptr [RSP + 0x18]
JZ 0x002b3adc
MOV RDI,R15
CALL 0x00149490
LEA RDX,[R15 + RAX*0x1]
MOV RSI,R15
MOV RDI,R14
CALL 0x00174550
MOV RSI,qword ptr [R12 + 0x78]
CMP RSI,qword ptr [R12 + 0x80]
JZ 0x002b3b60
LEA RAX,[RSI + 0x10]
MOV qword ptr [RSI],RAX
MOV RAX,qword ptr [RSP + 0x20]
CMP RAX,qword ptr [RSP + 0x8]
JZ 0x002b3b40
MOV qword ptr [RSI],RAX
MOV RAX,qword ptr [RSP + 0x30]
MOV qword ptr [RSI + 0x10],RAX
MOV RAX,qword ptr [RSP + 0x28]
ADD RBX,0x8
MOV qword ptr [RSI + 0x8],RAX
ADD qword ptr [R12 + 0x78],0x20
CMP RBX,RBP
JC 0x002b39cb
JMP 0x002b3a1e
MOVDQA XMM0,xmmword ptr [RSP + 0x30]
MOVUPS xmmword ptr [RSI + 0x10],XMM0
JMP 0x002b3b15
MOV dword ptr [RSP + 0x8],ECX
LEA RDI,[0x3a5a80]
JMP 0x002b3944
MOV RDI,qword ptr [RSP + 0x10]
MOV RDX,R14
CALL 0x0018bb70
MOV RDI,qword ptr [RSP + 0x20]
CMP RDI,qword ptr [RSP + 0x8]
JZ 0x002b3a15
CALL 0x002f1e60
ADD RBX,0x8
CMP RBX,RBP
JC 0x002b39cb
JMP 0x002b3a1e
CALL 0x002a89d0
LEA RDX,[0x3a5e88]
MOV ESI,0x100
LEA RDI,[0x3a5825]
CALL 0x0018ff20
(translation_unit "void FUN_002b3880(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)\n\n{\n  uint uVar1;\n  long *plVar2;\n  uint *puVar3;\n  undefined8 uVar4;\n  size_t sVar5;\n  uint uVar6;\n  ulong uVar7;\n  uint *puVar8;\n  char *pcVar9;\n  long lVar10;\n  char *__s;\n  long local_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;\n  if (*(int *)(lVar10 + 4) != 0x6000000) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }\n  uVar6 = *(uint *)(lVar10 + 0x14);\n  uVar1 = *(uint *)(lVar10 + 0x10);\n  uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);\n  if (*(long *)(param_1 + 0x28) == 0) {\nLAB_002b3b94:\n                    /* WARNING: Subroutine does not return */\n    FUN_002a89d0();\n  }\n  puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0);\n  uVar6 = *(uint *)(lVar10 + 0x18);\n  uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n  if (0xfeff < uVar6) {\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }\n  local_60 = param_5;\n  if (param_4 == uVar6) {\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }\n  if (uVar6 < *(uint *)(param_1 + 0x38)) {\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar4 = gettext(pcVar9);\n  FUN_001d19e0(param_1,uVar4,param_3,uVar6);\n  return;\n}\n\n" (function_definition "void FUN_002b3880(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)\n\n{\n  uint uVar1;\n  long *plVar2;\n  uint *puVar3;\n  undefined8 uVar4;\n  size_t sVar5;\n  uint uVar6;\n  ulong uVar7;\n  uint *puVar8;\n  char *pcVar9;\n  long lVar10;\n  char *__s;\n  long local_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;\n  if (*(int *)(lVar10 + 4) != 0x6000000) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }\n  uVar6 = *(uint *)(lVar10 + 0x14);\n  uVar1 = *(uint *)(lVar10 + 0x10);\n  uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);\n  if (*(long *)(param_1 + 0x28) == 0) {\nLAB_002b3b94:\n                    /* WARNING: Subroutine does not return */\n    FUN_002a89d0();\n  }\n  puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0);\n  uVar6 = *(uint *)(lVar10 + 0x18);\n  uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n  if (0xfeff < uVar6) {\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }\n  local_60 = param_5;\n  if (param_4 == uVar6) {\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }\n  if (uVar6 < *(uint *)(param_1 + 0x38)) {\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar4 = gettext(pcVar9);\n  FUN_001d19e0(param_1,uVar4,param_3,uVar6);\n  return;\n}" primitive_type (function_declarator "FUN_002b3880(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)" identifier (parameter_list "(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "long param_5" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong param_6" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  long *plVar2;\n  uint *puVar3;\n  undefined8 uVar4;\n  size_t sVar5;\n  uint uVar6;\n  ulong uVar7;\n  uint *puVar8;\n  char *pcVar9;\n  long lVar10;\n  char *__s;\n  long local_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;\n  if (*(int *)(lVar10 + 4) != 0x6000000) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }\n  uVar6 = *(uint *)(lVar10 + 0x14);\n  uVar1 = *(uint *)(lVar10 + 0x10);\n  uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);\n  if (*(long *)(param_1 + 0x28) == 0) {\nLAB_002b3b94:\n                    /* WARNING: Subroutine does not return */\n    FUN_002a89d0();\n  }\n  puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0);\n  uVar6 = *(uint *)(lVar10 + 0x18);\n  uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n  if (0xfeff < uVar6) {\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }\n  local_60 = param_5;\n  if (param_4 == uVar6) {\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }\n  if (uVar6 < *(uint *)(param_1 + 0x38)) {\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar4 = gettext(pcVar9);\n  FUN_001d19e0(param_1,uVar4,param_3,uVar6);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "long local_60;" (sized_type_specifier "long" long) identifier ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "long lStack_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;" (assignment_expression "lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2" identifier = (binary_expression "(ulong)(uint)(param_3 * 0x28) + param_2" (call_expression "(ulong)(uint)(param_3 * 0x28)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(param_3 * 0x28)" ( (binary_expression "param_3 * 0x28" identifier * number_literal) ))) + identifier)) ;) (if_statement "if (*(int *)(lVar10 + 4) != 0x6000000) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }" if (parenthesized_expression "(*(int *)(lVar10 + 4) != 0x6000000)" ( (binary_expression "*(int *)(lVar10 + 4) != 0x6000000" (pointer_expression "*(int *)(lVar10 + 4)" * (cast_expression "(int *)(lVar10 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 4)" ( (binary_expression "lVar10 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }" { comment (expression_statement "FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");" (call_expression "FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic")" identifier (argument_list "("../../gold/dynobj.cc",0x100,"read_dynamic")" ( (string_literal ""../../gold/dynobj.cc"" " string_content ") , number_literal , (string_literal ""read_dynamic"" " string_content ") ))) ;) })) (expression_statement "uVar6 = *(uint *)(lVar10 + 0x14);" (assignment_expression "uVar6 = *(uint *)(lVar10 + 0x14)" identifier = (pointer_expression "*(uint *)(lVar10 + 0x14)" * (cast_expression "(uint *)(lVar10 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x14)" ( (binary_expression "lVar10 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(uint *)(lVar10 + 0x10);" (assignment_expression "uVar1 = *(uint *)(lVar10 + 0x10)" identifier = (pointer_expression "*(uint *)(lVar10 + 0x10)" * (cast_expression "(uint *)(lVar10 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);" (assignment_expression "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" identifier = (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" ( (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (*(long *)(param_1 + 0x28) == 0) {\nLAB_002b3b94:\n                    /* WARNING: Subroutine does not return */\n    FUN_002a89d0();\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x28) == 0)" ( (binary_expression "*(long *)(param_1 + 0x28) == 0" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_002b3b94:\n                    /* WARNING: Subroutine does not return */\n    FUN_002a89d0();\n  }" { (labeled_statement "LAB_002b3b94:\n                    /* WARNING: Subroutine does not return */\n    FUN_002a89d0();" statement_identifier : comment (expression_statement "FUN_002a89d0();" (call_expression "FUN_002a89d0()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0);" (assignment_expression "puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0)" identifier = (cast_expression "(uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0)" identifier (argument_list "(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0)" ( (binary_expression "*(long *)(param_1 + 0x28) + 0x28" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal)) , identifier , number_literal , number_literal ))))) ;) (expression_statement "uVar6 = *(uint *)(lVar10 + 0x18);" (assignment_expression "uVar6 = *(uint *)(lVar10 + 0x18)" identifier = (pointer_expression "*(uint *)(lVar10 + 0x18)" * (cast_expression "(uint *)(lVar10 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x18)" ( (binary_expression "lVar10 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;" (assignment_expression "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" identifier = (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal))) ;) (if_statement "if (0xfeff < uVar6) {\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }" if (parenthesized_expression "(0xfeff < uVar6)" ( (binary_expression "0xfeff < uVar6" number_literal < identifier) )) (compound_statement "{\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }" { (expression_statement "FUN_001da740(param_1 + 0x90);" (call_expression "FUN_001da740(param_1 + 0x90)" identifier (argument_list "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) ))) ;) (expression_statement "uVar6 = uVar6 + *(int *)(param_1 + 0xa8);" (assignment_expression "uVar6 = uVar6 + *(int *)(param_1 + 0xa8)" identifier = (binary_expression "uVar6 + *(int *)(param_1 + 0xa8)" identifier + (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) )))))) ;) })) (expression_statement "local_60 = param_5;" (assignment_expression "local_60 = param_5" identifier = identifier) ;) (if_statement "if (param_4 == uVar6) {\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }" if (parenthesized_expression "(param_4 == uVar6)" ( (binary_expression "param_4 == uVar6" identifier == identifier) )) (compound_statement "{\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }" { (labeled_statement "LAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);" statement_identifier : (expression_statement "puVar8 = (uint *)(uVar7 + (long)puVar3);" (assignment_expression "puVar8 = (uint *)(uVar7 + (long)puVar3)" identifier = (cast_expression "(uint *)(uVar7 + (long)puVar3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + (long)puVar3)" ( (binary_expression "uVar7 + (long)puVar3" identifier + (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;)) (if_statement "if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }" if (parenthesized_expression "(puVar3 < puVar8)" ( (binary_expression "puVar3 < puVar8" identifier < identifier) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }" { (do_statement "do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);" do (compound_statement "{\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      }" { (while_statement "while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }" { (expression_statement "uVar6 = *puVar3;" (assignment_expression "uVar6 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;" (assignment_expression "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" identifier = (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar6 == 1) break;" if (parenthesized_expression "(uVar6 == 1)" ( (binary_expression "uVar6 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar6 == 0) {\n            return;\n          }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (if_statement "if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }" if (parenthesized_expression "(uVar6 == 0xe)" ( (binary_expression "uVar6 == 0xe" identifier == number_literal) )) (compound_statement "{\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }" { (expression_statement "uVar6 = puVar3[1];" (assignment_expression "uVar6 = puVar3[1]" identifier = (subscript_expression "puVar3[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar9 = "DT_SONAME value out of range: %lld >= %lld";" (assignment_expression "pcVar9 = "DT_SONAME value out of range: %lld >= %lld"" identifier = (string_literal ""DT_SONAME value out of range: %lld >= %lld"" " string_content ")) ;) (expression_statement "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);" (assignment_expression "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18)" identifier = (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18)" ( (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;" if (parenthesized_expression "((long)param_6 <= (long)uVar7)" ( (binary_expression "(long)param_6 <= (long)uVar7" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) <= (cast_expression "(long)uVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (goto_statement "goto LAB_002b3a66;" goto statement_identifier ;)) (expression_statement "sVar5 = strlen((char *)(uVar7 + local_60));" (assignment_expression "sVar5 = strlen((char *)(uVar7 + local_60))" identifier = (call_expression "strlen((char *)(uVar7 + local_60))" identifier (argument_list "((char *)(uVar7 + local_60))" ( (cast_expression "(char *)(uVar7 + local_60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + local_60)" ( (binary_expression "uVar7 + local_60" identifier + identifier) ))) )))) ;) (expression_statement "FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);" (call_expression "FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5)" identifier (argument_list "(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x58)" * (cast_expression "(undefined8 *)(param_1 + 0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) , (cast_expression "(char *)(uVar7 + local_60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + local_60)" ( (binary_expression "uVar7 + local_60" identifier + identifier) ))) , identifier ))) ;) })) (labeled_statement "joined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;" statement_identifier : (expression_statement "puVar3 = puVar3 + 2;" (assignment_expression "puVar3 = puVar3 + 2" identifier = (binary_expression "puVar3 + 2" identifier + number_literal)) ;)) (if_statement "if (puVar8 <= puVar3) goto LAB_002b3a1e;" if (parenthesized_expression "(puVar8 <= puVar3)" ( (binary_expression "puVar8 <= puVar3" identifier <= identifier) )) (goto_statement "goto LAB_002b3a1e;" goto statement_identifier ;)) })) (expression_statement "uVar6 = puVar3[1];" (assignment_expression "uVar6 = puVar3[1]" identifier = (subscript_expression "puVar3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);" (assignment_expression "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" identifier = (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" ( (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }" if (parenthesized_expression "((long)param_6 <= (long)uVar7)" ( (binary_expression "(long)param_6 <= (long)uVar7" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) <= (cast_expression "(long)uVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }" { (expression_statement "pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";" (assignment_expression "pcVar9 = "DT_NEEDED value out of range: %lld >= %lld"" identifier = (string_literal ""DT_NEEDED value out of range: %lld >= %lld"" " string_content ")) ;) (labeled_statement "LAB_002b3a66:\n          uVar4 = gettext(pcVar9);" statement_identifier : (expression_statement "uVar4 = gettext(pcVar9);" (assignment_expression "uVar4 = gettext(pcVar9)" identifier = (call_expression "gettext(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier )))) ;)) (expression_statement "FUN_001d19e0(param_1,uVar4,uVar7,param_6);" (call_expression "FUN_001d19e0(param_1,uVar4,uVar7,param_6)" identifier (argument_list "(param_1,uVar4,uVar7,param_6)" ( identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto joined_r0x002b3b2b;" goto statement_identifier ;) })) (expression_statement "pcVar9 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar9 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__s = (char *)(uVar7 + local_60);" (assignment_expression "__s = (char *)(uVar7 + local_60)" identifier = (cast_expression "(char *)(uVar7 + local_60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + local_60)" ( (binary_expression "uVar7 + local_60" identifier + identifier) )))) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (if_statement "if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }" { (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar9 = __s + sVar5;" (assignment_expression "pcVar9 = __s + sVar5" identifier = (binary_expression "__s + sVar5" identifier + identifier)) ;) })) (expression_statement "FUN_00174550(&local_58,__s,pcVar9);" (call_expression "FUN_00174550(&local_58,__s,pcVar9)" identifier (argument_list "(&local_58,__s,pcVar9)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (expression_statement "plVar2 = *(long **)(param_1 + 0x78);" (assignment_expression "plVar2 = *(long **)(param_1 + 0x78)" identifier = (pointer_expression "*(long **)(param_1 + 0x78)" * (cast_expression "(long **)(param_1 + 0x78)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) ;) (if_statement "if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }" if (parenthesized_expression "(plVar2 != *(long **)(param_1 + 0x80))" ( (binary_expression "plVar2 != *(long **)(param_1 + 0x80)" identifier != (pointer_expression "*(long **)(param_1 + 0x80)" * (cast_expression "(long **)(param_1 + 0x80)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) )) (compound_statement "{\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }" { (expression_statement "*plVar2 = (long)(plVar2 + 2);" (assignment_expression "*plVar2 = (long)(plVar2 + 2)" (pointer_expression "*plVar2" * identifier) = (cast_expression "(long)(plVar2 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar2 + 2)" ( (binary_expression "plVar2 + 2" identifier + number_literal) )))) ;) (if_statement "if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }" { (expression_statement "plVar2[2] = local_48;" (assignment_expression "plVar2[2] = local_48" (subscript_expression "plVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar2[3] = lStack_40;" (assignment_expression "plVar2[3] = lStack_40" (subscript_expression "plVar2[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }" else (compound_statement "{\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }" { (expression_statement "*plVar2 = (long)local_58;" (assignment_expression "*plVar2 = (long)local_58" (pointer_expression "*plVar2" * identifier) = (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "plVar2[2] = local_48;" (assignment_expression "plVar2[2] = local_48" (subscript_expression "plVar2[2]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "plVar2[1] = local_50;" (assignment_expression "plVar2[1] = local_50" (subscript_expression "plVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;" (assignment_expression "*(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20" (pointer_expression "*(long *)(param_1 + 0x78)" * (cast_expression "(long *)(param_1 + 0x78)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x78) + 0x20" (pointer_expression "*(long *)(param_1 + 0x78)" * (cast_expression "(long *)(param_1 + 0x78)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) + number_literal)) ;) (goto_statement "goto joined_r0x002b3b2b;" goto statement_identifier ;) })) comment (expression_statement "FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);" (call_expression "FUN_0018bb70(param_1 + 0x70,plVar2,&local_58)" identifier (argument_list "(param_1 + 0x70,plVar2,&local_58)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) , identifier , (pointer_expression "&local_58" & identifier) ))) ;) (if_statement "if (local_58 == &local_48) goto joined_r0x002b3b2b;" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (goto_statement "goto joined_r0x002b3b2b;" goto statement_identifier ;)) (expression_statement "FUN_002f1e60();" (call_expression "FUN_002f1e60()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar3 = puVar3 + 2;" (assignment_expression "puVar3 = puVar3 + 2" identifier = (binary_expression "puVar3 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 < puVar8)" ( (binary_expression "puVar3 < puVar8" identifier < identifier) )) ;) })) (labeled_statement "LAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");" statement_identifier : (expression_statement "uVar4 = gettext("missing DT_NULL in dynamic segment");" (assignment_expression "uVar4 = gettext("missing DT_NULL in dynamic segment")" identifier = (call_expression "gettext("missing DT_NULL in dynamic segment")" identifier (argument_list "("missing DT_NULL in dynamic segment")" ( (string_literal ""missing DT_NULL in dynamic segment"" " string_content ") )))) ;)) (expression_statement "FUN_001d19e0(param_1,uVar4);" (call_expression "FUN_001d19e0(param_1,uVar4)" identifier (argument_list "(param_1,uVar4)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar6 < *(uint *)(param_1 + 0x38)) {\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }" if (parenthesized_expression "(uVar6 < *(uint *)(param_1 + 0x38))" ( (binary_expression "uVar6 < *(uint *)(param_1 + 0x38)" identifier < (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) )) (compound_statement "{\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }" { (expression_statement "param_2 = (ulong)(uVar6 * 0x28) + param_2;" (assignment_expression "param_2 = (ulong)(uVar6 * 0x28) + param_2" identifier = (binary_expression "(ulong)(uVar6 * 0x28) + param_2" (call_expression "(ulong)(uVar6 * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 * 0x28)" ( (binary_expression "uVar6 * 0x28" identifier * number_literal) ))) + identifier)) ;) (if_statement "if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }" if (parenthesized_expression "(*(int *)(param_2 + 4) == 0x3000000)" ( (binary_expression "*(int *)(param_2 + 4) == 0x3000000" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }" { (expression_statement "uVar6 = *(uint *)(param_2 + 0x14);" (assignment_expression "uVar6 = *(uint *)(param_2 + 0x14)" identifier = (pointer_expression "*(uint *)(param_2 + 0x14)" * (cast_expression "(uint *)(param_2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(uint *)(param_2 + 0x10);" (assignment_expression "uVar1 = *(uint *)(param_2 + 0x10)" identifier = (pointer_expression "*(uint *)(param_2 + 0x10)" * (cast_expression "(uint *)(param_2 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);" (assignment_expression "param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" identifier = (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" ( (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;" if (parenthesized_expression "(*(long *)(param_1 + 0x28) == 0)" ( (binary_expression "*(long *)(param_1 + 0x28) == 0" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_002b3b94;" goto statement_identifier ;)) (expression_statement "local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);" (assignment_expression "local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0)" identifier = (call_expression "FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0)" identifier (argument_list "(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0)" ( (binary_expression "*(long *)(param_1 + 0x28) + 0x28" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal)) , identifier , number_literal , number_literal )))) ;) (goto_statement "goto LAB_002b39ab;" goto statement_identifier ;) })) (expression_statement "pcVar9 = "DYNAMIC section %u link %u is not a strtab";" (assignment_expression "pcVar9 = "DYNAMIC section %u link %u is not a strtab"" identifier = (string_literal ""DYNAMIC section %u link %u is not a strtab"" " string_content ")) ;) }) (else_clause "else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }" else (compound_statement "{\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }" { (expression_statement "pcVar9 = "DYNAMIC section %u link out of range: %u";" (assignment_expression "pcVar9 = "DYNAMIC section %u link out of range: %u"" identifier = (string_literal ""DYNAMIC section %u link out of range: %u"" " string_content ")) ;) }))) (expression_statement "uVar4 = gettext(pcVar9);" (assignment_expression "uVar4 = gettext(pcVar9)" identifier = (call_expression "gettext(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier )))) ;) (expression_statement "FUN_001d19e0(param_1,uVar4,param_3,uVar6);" (call_expression "FUN_001d19e0(param_1,uVar4,param_3,uVar6)" identifier (argument_list "(param_1,uVar4,param_3,uVar6)" ( identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void read_dynamic(Sized_dynobj<32,_true> * this, uchar * pshdrs, uint\n   dynamic_shndx, uint strtab_shndx, uchar * strtabu, off_t strtab_size) */\n\nvoid __thiscall\ngold::Sized_dynobj<32,_true>::read_dynamic\n          (Sized_dynobj<32,_true> *this,uchar *pshdrs,uint dynamic_shndx,uint strtab_shndx,\n          uchar *strtabu,off_t strtab_size)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  pointer *ppbVar2;\n  uint uVar3;\n  iterator __position;\n  uint *puVar4;\n  size_t sVar5;\n  uint uVar6;\n  uchar *puVar7;\n  ulong uVar8;\n  uint *puVar9;\n  char *pcVar10;\n  Input_file *this_00;\n  uchar *__s;\n  uchar *local_60;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_58;\n  \n  if (*(int *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 4) != 0x6000000) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }\n  uVar6 = *(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x14);\n  uVar3 = *(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x10);\n  this_00 = (this->super_Dynobj).super_Object.input_file_;\n  uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);\n  if (this_00 == (Input_file *)0x0) {\nLAB_002b3b94:\n                    /* WARNING: Subroutine does not return */\n    Object::input_file((Object *)this_00);\n  }\n  puVar4 = (uint *)File_read::get_view(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                                       (ulong)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 |\n                                               (uVar3 & 0xff00) << 8 | uVar3 << 0x18),uVar8,true,\n                                       false);\n  uVar6 = *(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x18);\n  uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n  if (0xfeff < uVar6) {\n    elfcpp::Elf_file<32,_true,_gold::Object>::initialize_shnum(&this->elf_file_);\n    uVar6 = uVar6 + (this->elf_file_).large_shndx_offset_;\n  }\n  local_60 = strtabu;\n  if (strtab_shndx == uVar6) {\nLAB_002b39ab:\n    puVar9 = (uint *)(uVar8 + (long)puVar4);\n    if (puVar4 < puVar9) {\n      paVar1 = &local_58.field_2;\n      do {\n        while( true ) {\n          uVar6 = *puVar4;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar4[1];\n            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if (strtab_size <= (long)uVar8) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(local_60 + uVar8));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar4 = puVar4 + 2;\n          if (puVar9 <= puVar4) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar4[1];\n        uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if (strtab_size <= (long)uVar8) {\n          pcVar10 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          pcVar10 = (char *)gettext(pcVar10);\n          Object::error((Object *)this,pcVar10,uVar8,strtab_size);\n          goto joined_r0x002b3b2b;\n        }\n        puVar7 = (uchar *)0xffffffffffffffff;\n        __s = local_60 + uVar8;\n        local_58._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar5 = strlen((char *)__s);\n          puVar7 = __s + sVar5;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_58,__s,puVar7);\n        __position._M_current =\n             (this->super_Dynobj).needed_.\n             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n             ._M_impl._M_finish;\n        if (__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            ._M_impl._M_end_of_storage) {\n          ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n            *(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_58._M_string_length;\n          ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                     ._M_impl._M_finish;\n          *ppbVar2 = *ppbVar2 + 1;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n                  (&(this->super_Dynobj).needed_,__position,&local_58);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_58._M_dataplus._M_p == paVar1) goto joined_r0x002b3b2b;\n        operator_delete(local_58._M_dataplus._M_p);\n        puVar4 = puVar4 + 2;\n      } while (puVar4 < puVar9);\n    }\nLAB_002b3a1e:\n    pcVar10 = (char *)gettext("missing DT_NULL in dynamic segment");\n    Object::error((Object *)this,pcVar10);\n    return;\n  }\n  if (uVar6 < (this->super_Dynobj).super_Object.shnum_) {\n    if (*(int *)(pshdrs + (ulong)(uVar6 * 0x28) + 4) == 0x3000000) {\n      uVar3 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x14);\n      uVar6 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x10);\n      this_00 = (this->super_Dynobj).super_Object.input_file_;\n      strtab_size = (off_t)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      if (this_00 == (Input_file *)0x0) goto LAB_002b3b94;\n      local_60 = File_read::get_view(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                                     (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |\n                                             (uVar6 & 0xff00) << 8 | uVar6 << 0x18),strtab_size,\n                                     false,false);\n      goto LAB_002b39ab;\n    }\n    pcVar10 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar10 = "DYNAMIC section %u link out of range: %u";\n  }\n  pcVar10 = (char *)gettext(pcVar10);\n  Object::error((Object *)this,pcVar10,(ulong)dynamic_shndx,uVar6);\n  return;\n}\n\n" comment (declaration "void __thiscall\ngold::Sized_dynobj<32,_true>::read_dynamic\n          (Sized_dynobj<32,_true> *this,uchar *pshdrs,uint dynamic_shndx,uint strtab_shndx,\n          uchar *strtabu,off_t strtab_size)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>::read_dynamic\n          (Sized_dynobj<32,_true> *this,uchar *pshdrs,uint dynamic_shndx,uint strtab_shndx,\n          uchar *strtabu,off_t strtab_size)\n\n{" identifier > : : (function_declarator "read_dynamic\n          (Sized_dynobj<32,_true> *this,uchar *pshdrs,uint dynamic_shndx,uint strtab_shndx,\n          uchar *strtabu,off_t strtab_size)" identifier (parameter_list "(Sized_dynobj<32,_true> *this,uchar *pshdrs,uint dynamic_shndx,uint strtab_shndx,\n          uchar *strtabu,off_t strtab_size)" ( (parameter_declaration "Sized_dynobj" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uchar *pshdrs" type_identifier (pointer_declarator "*pshdrs" * identifier)) , (parameter_declaration "uint dynamic_shndx" type_identifier identifier) , (parameter_declaration "uint strtab_shndx" type_identifier identifier) , (parameter_declaration "uchar *strtabu" type_identifier (pointer_declarator "*strtabu" * identifier)) , (parameter_declaration "off_t strtab_size" type_identifier identifier) ))) {) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>_>_9" identifier : : identifier < primitive_type > identifier > identifier) (pointer_declarator "*paVar1" * identifier) ;) (declaration "pointer *ppbVar2;" type_identifier (pointer_declarator "*ppbVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uchar *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "Input_file *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "uchar *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "uchar *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (ERROR "basic_string<char," (binary_expression "basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_> local_58;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_> local_58;" (binary_expression "allocator<char>_> local_58" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) ;)) (if_statement "if (*(int *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 4) != 0x6000000) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }" if (parenthesized_expression "(*(int *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 4) != 0x6000000)" ( (binary_expression "*(int *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 4) != 0x6000000" (pointer_expression "*(int *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 4)" * (cast_expression "(int *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(dynamic_shndx * 0x28) + 4)" ( (binary_expression "pshdrs + (ulong)(dynamic_shndx * 0x28) + 4" (binary_expression "pshdrs + (ulong)(dynamic_shndx * 0x28)" identifier + (call_expression "(ulong)(dynamic_shndx * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dynamic_shndx * 0x28)" ( (binary_expression "dynamic_shndx * 0x28" identifier * number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/dynobj.cc",0x100,"read_dynamic");" (call_expression "do_gold_unreachable("../../gold/dynobj.cc",0x100,"read_dynamic")" identifier (argument_list "("../../gold/dynobj.cc",0x100,"read_dynamic")" ( (string_literal ""../../gold/dynobj.cc"" " string_content ") , number_literal , (string_literal ""read_dynamic"" " string_content ") ))) ;) })) (expression_statement "uVar6 = *(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x14);" (assignment_expression "uVar6 = *(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x14)" identifier = (pointer_expression "*(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x14)" * (cast_expression "(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x14)" ( (binary_expression "pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x14" (binary_expression "pshdrs + (ulong)(dynamic_shndx * 0x28)" identifier + (call_expression "(ulong)(dynamic_shndx * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dynamic_shndx * 0x28)" ( (binary_expression "dynamic_shndx * 0x28" identifier * number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x10);" (assignment_expression "uVar3 = *(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x10)" identifier = (pointer_expression "*(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x10)" * (cast_expression "(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x10)" ( (binary_expression "pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x10" (binary_expression "pshdrs + (ulong)(dynamic_shndx * 0x28)" identifier + (call_expression "(ulong)(dynamic_shndx * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dynamic_shndx * 0x28)" ( (binary_expression "dynamic_shndx * 0x28" identifier * number_literal) )))) + number_literal) ))))) ;) (expression_statement "this_00 = (this->super_Dynobj).super_Object.input_file_;" (assignment_expression "this_00 = (this->super_Dynobj).super_Object.input_file_" identifier = (field_expression "(this->super_Dynobj).super_Object.input_file_" (field_expression "(this->super_Dynobj).super_Object" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);" (assignment_expression "uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" identifier = (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" ( (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (this_00 == (Input_file *)0x0) {\nLAB_002b3b94:\n                    /* WARNING: Subroutine does not return */\n    Object::input_file((Object *)this_00);\n  }" if (parenthesized_expression "(this_00 == (Input_file *)0x0)" ( (binary_expression "this_00 == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_002b3b94:\n                    /* WARNING: Subroutine does not return */\n    Object::input_file((Object *)this_00);\n  }" { (labeled_statement "LAB_002b3b94:\n                    /* WARNING: Subroutine does not return */\n    Object::input_file((Object *)this_00);" statement_identifier : comment (labeled_statement "Object::input_file((Object *)this_00);" statement_identifier : (ERROR ":" :) (expression_statement "input_file((Object *)this_00);" (call_expression "input_file((Object *)this_00)" identifier (argument_list "((Object *)this_00)" ( (cast_expression "(Object *)this_00" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) })) (ERROR "puVar4 = (uint *)File_read::" (assignment_expression "puVar4 = (uint *)File_read" identifier = (cast_expression "(uint *)File_read" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "get_view(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                                       (ulong)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 |\n                                               (uVar3 & 0xff00) << 8 | uVar3 << 0x18),uVar8,true,\n                                       false);" (call_expression "get_view(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                                       (ulong)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 |\n                                               (uVar3 & 0xff00) << 8 | uVar3 << 0x18),uVar8,true,\n                                       false)" identifier (argument_list "(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                                       (ulong)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 |\n                                               (uVar3 & 0xff00) << 8 | uVar3 << 0x18),uVar8,true,\n                                       false)" ( (pointer_expression "&this_00->file_" & (field_expression "this_00->file_" identifier -> field_identifier)) , (field_expression "(this->super_Dynobj).super_Object.offset_" (field_expression "(this->super_Dynobj).super_Object" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (call_expression "(ulong)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 |\n                                               (uVar3 & 0xff00) << 8 | uVar3 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 |\n                                               (uVar3 & 0xff00) << 8 | uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 |\n                                               (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 |\n                                               (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) ))) , identifier , true , false ))) ;) (expression_statement "uVar6 = *(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x18);" (assignment_expression "uVar6 = *(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x18)" identifier = (pointer_expression "*(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x18)" * (cast_expression "(uint *)(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x18)" ( (binary_expression "pshdrs + (ulong)(dynamic_shndx * 0x28) + 0x18" (binary_expression "pshdrs + (ulong)(dynamic_shndx * 0x28)" identifier + (call_expression "(ulong)(dynamic_shndx * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dynamic_shndx * 0x28)" ( (binary_expression "dynamic_shndx * 0x28" identifier * number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;" (assignment_expression "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" identifier = (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal))) ;) (if_statement "if (0xfeff < uVar6) {\n    elfcpp::Elf_file<32,_true,_gold::Object>::initialize_shnum(&this->elf_file_);\n    uVar6 = uVar6 + (this->elf_file_).large_shndx_offset_;\n  }" if (parenthesized_expression "(0xfeff < uVar6)" ( (binary_expression "0xfeff < uVar6" number_literal < identifier) )) (compound_statement "{\n    elfcpp::Elf_file<32,_true,_gold::Object>::initialize_shnum(&this->elf_file_);\n    uVar6 = uVar6 + (this->elf_file_).large_shndx_offset_;\n  }" { (labeled_statement "elfcpp::Elf_file<32,_true,_gold::Object>::initialize_shnum(&this->elf_file_);" statement_identifier (ERROR "::Elf_file<32,_true,_gold::Object>:" : : (comma_expression "Elf_file<32,_true,_gold" (binary_expression "Elf_file<32" identifier < number_literal) , (comma_expression "_true,_gold" identifier , identifier)) : : identifier > :) : (expression_statement "initialize_shnum(&this->elf_file_);" (call_expression "initialize_shnum(&this->elf_file_)" identifier (argument_list "(&this->elf_file_)" ( (pointer_expression "&this->elf_file_" & (field_expression "this->elf_file_" identifier -> field_identifier)) ))) ;)) (expression_statement "uVar6 = uVar6 + (this->elf_file_).large_shndx_offset_;" (assignment_expression "uVar6 = uVar6 + (this->elf_file_).large_shndx_offset_" identifier = (binary_expression "uVar6 + (this->elf_file_).large_shndx_offset_" identifier + (field_expression "(this->elf_file_).large_shndx_offset_" (parenthesized_expression "(this->elf_file_)" ( (field_expression "this->elf_file_" identifier -> field_identifier) )) . field_identifier))) ;) })) (expression_statement "local_60 = strtabu;" (assignment_expression "local_60 = strtabu" identifier = identifier) ;) (if_statement "if (strtab_shndx == uVar6) {\nLAB_002b39ab:\n    puVar9 = (uint *)(uVar8 + (long)puVar4);\n    if (puVar4 < puVar9) {\n      paVar1 = &local_58.field_2;\n      do {\n        while( true ) {\n          uVar6 = *puVar4;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar4[1];\n            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if (strtab_size <= (long)uVar8) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(local_60 + uVar8));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar4 = puVar4 + 2;\n          if (puVar9 <= puVar4) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar4[1];\n        uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if (strtab_size <= (long)uVar8) {\n          pcVar10 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          pcVar10 = (char *)gettext(pcVar10);\n          Object::error((Object *)this,pcVar10,uVar8,strtab_size);\n          goto joined_r0x002b3b2b;\n        }\n        puVar7 = (uchar *)0xffffffffffffffff;\n        __s = local_60 + uVar8;\n        local_58._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar5 = strlen((char *)__s);\n          puVar7 = __s + sVar5;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_58,__s,puVar7);\n        __position._M_current =\n             (this->super_Dynobj).needed_.\n             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n             ._M_impl._M_finish;\n        if (__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            ._M_impl._M_end_of_storage) {\n          ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n            *(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_58._M_string_length;\n          ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                     ._M_impl._M_finish;\n          *ppbVar2 = *ppbVar2 + 1;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n                  (&(this->super_Dynobj).needed_,__position,&local_58);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_58._M_dataplus._M_p == paVar1) goto joined_r0x002b3b2b;\n        operator_delete(local_58._M_dataplus._M_p);\n        puVar4 = puVar4 + 2;\n      } while (puVar4 < puVar9);\n    }\nLAB_002b3a1e:\n    pcVar10 = (char *)gettext("missing DT_NULL in dynamic segment");\n    Object::error((Object *)this,pcVar10);\n    return;\n  }" if (parenthesized_expression "(strtab_shndx == uVar6)" ( (binary_expression "strtab_shndx == uVar6" identifier == identifier) )) (compound_statement "{\nLAB_002b39ab:\n    puVar9 = (uint *)(uVar8 + (long)puVar4);\n    if (puVar4 < puVar9) {\n      paVar1 = &local_58.field_2;\n      do {\n        while( true ) {\n          uVar6 = *puVar4;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar4[1];\n            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if (strtab_size <= (long)uVar8) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(local_60 + uVar8));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar4 = puVar4 + 2;\n          if (puVar9 <= puVar4) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar4[1];\n        uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if (strtab_size <= (long)uVar8) {\n          pcVar10 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          pcVar10 = (char *)gettext(pcVar10);\n          Object::error((Object *)this,pcVar10,uVar8,strtab_size);\n          goto joined_r0x002b3b2b;\n        }\n        puVar7 = (uchar *)0xffffffffffffffff;\n        __s = local_60 + uVar8;\n        local_58._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar5 = strlen((char *)__s);\n          puVar7 = __s + sVar5;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_58,__s,puVar7);\n        __position._M_current =\n             (this->super_Dynobj).needed_.\n             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n             ._M_impl._M_finish;\n        if (__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            ._M_impl._M_end_of_storage) {\n          ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n            *(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_58._M_string_length;\n          ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                     ._M_impl._M_finish;\n          *ppbVar2 = *ppbVar2 + 1;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n                  (&(this->super_Dynobj).needed_,__position,&local_58);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_58._M_dataplus._M_p == paVar1) goto joined_r0x002b3b2b;\n        operator_delete(local_58._M_dataplus._M_p);\n        puVar4 = puVar4 + 2;\n      } while (puVar4 < puVar9);\n    }\nLAB_002b3a1e:\n    pcVar10 = (char *)gettext("missing DT_NULL in dynamic segment");\n    Object::error((Object *)this,pcVar10);\n    return;\n  }" { (labeled_statement "LAB_002b39ab:\n    puVar9 = (uint *)(uVar8 + (long)puVar4);" statement_identifier : (expression_statement "puVar9 = (uint *)(uVar8 + (long)puVar4);" (assignment_expression "puVar9 = (uint *)(uVar8 + (long)puVar4)" identifier = (cast_expression "(uint *)(uVar8 + (long)puVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + (long)puVar4)" ( (binary_expression "uVar8 + (long)puVar4" identifier + (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;)) (if_statement "if (puVar4 < puVar9) {\n      paVar1 = &local_58.field_2;\n      do {\n        while( true ) {\n          uVar6 = *puVar4;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar4[1];\n            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if (strtab_size <= (long)uVar8) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(local_60 + uVar8));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar4 = puVar4 + 2;\n          if (puVar9 <= puVar4) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar4[1];\n        uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if (strtab_size <= (long)uVar8) {\n          pcVar10 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          pcVar10 = (char *)gettext(pcVar10);\n          Object::error((Object *)this,pcVar10,uVar8,strtab_size);\n          goto joined_r0x002b3b2b;\n        }\n        puVar7 = (uchar *)0xffffffffffffffff;\n        __s = local_60 + uVar8;\n        local_58._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar5 = strlen((char *)__s);\n          puVar7 = __s + sVar5;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_58,__s,puVar7);\n        __position._M_current =\n             (this->super_Dynobj).needed_.\n             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n             ._M_impl._M_finish;\n        if (__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            ._M_impl._M_end_of_storage) {\n          ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n            *(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_58._M_string_length;\n          ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                     ._M_impl._M_finish;\n          *ppbVar2 = *ppbVar2 + 1;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n                  (&(this->super_Dynobj).needed_,__position,&local_58);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_58._M_dataplus._M_p == paVar1) goto joined_r0x002b3b2b;\n        operator_delete(local_58._M_dataplus._M_p);\n        puVar4 = puVar4 + 2;\n      } while (puVar4 < puVar9);\n    }" if (parenthesized_expression "(puVar4 < puVar9)" ( (binary_expression "puVar4 < puVar9" identifier < identifier) )) (compound_statement "{\n      paVar1 = &local_58.field_2;\n      do {\n        while( true ) {\n          uVar6 = *puVar4;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar4[1];\n            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if (strtab_size <= (long)uVar8) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(local_60 + uVar8));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar4 = puVar4 + 2;\n          if (puVar9 <= puVar4) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar4[1];\n        uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if (strtab_size <= (long)uVar8) {\n          pcVar10 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          pcVar10 = (char *)gettext(pcVar10);\n          Object::error((Object *)this,pcVar10,uVar8,strtab_size);\n          goto joined_r0x002b3b2b;\n        }\n        puVar7 = (uchar *)0xffffffffffffffff;\n        __s = local_60 + uVar8;\n        local_58._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar5 = strlen((char *)__s);\n          puVar7 = __s + sVar5;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_58,__s,puVar7);\n        __position._M_current =\n             (this->super_Dynobj).needed_.\n             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n             ._M_impl._M_finish;\n        if (__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            ._M_impl._M_end_of_storage) {\n          ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n            *(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_58._M_string_length;\n          ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                     ._M_impl._M_finish;\n          *ppbVar2 = *ppbVar2 + 1;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n                  (&(this->super_Dynobj).needed_,__position,&local_58);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_58._M_dataplus._M_p == paVar1) goto joined_r0x002b3b2b;\n        operator_delete(local_58._M_dataplus._M_p);\n        puVar4 = puVar4 + 2;\n      } while (puVar4 < puVar9);\n    }" { (expression_statement "paVar1 = &local_58.field_2;" (assignment_expression "paVar1 = &local_58.field_2" identifier = (pointer_expression "&local_58.field_2" & (field_expression "local_58.field_2" identifier . field_identifier))) ;) (do_statement "do {\n        while( true ) {\n          uVar6 = *puVar4;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar4[1];\n            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if (strtab_size <= (long)uVar8) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(local_60 + uVar8));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar4 = puVar4 + 2;\n          if (puVar9 <= puVar4) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar4[1];\n        uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if (strtab_size <= (long)uVar8) {\n          pcVar10 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          pcVar10 = (char *)gettext(pcVar10);\n          Object::error((Object *)this,pcVar10,uVar8,strtab_size);\n          goto joined_r0x002b3b2b;\n        }\n        puVar7 = (uchar *)0xffffffffffffffff;\n        __s = local_60 + uVar8;\n        local_58._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar5 = strlen((char *)__s);\n          puVar7 = __s + sVar5;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_58,__s,puVar7);\n        __position._M_current =\n             (this->super_Dynobj).needed_.\n             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n             ._M_impl._M_finish;\n        if (__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            ._M_impl._M_end_of_storage) {\n          ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n            *(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_58._M_string_length;\n          ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                     ._M_impl._M_finish;\n          *ppbVar2 = *ppbVar2 + 1;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n                  (&(this->super_Dynobj).needed_,__position,&local_58);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_58._M_dataplus._M_p == paVar1) goto joined_r0x002b3b2b;\n        operator_delete(local_58._M_dataplus._M_p);\n        puVar4 = puVar4 + 2;\n      } while (puVar4 < puVar9);" do (compound_statement "{\n        while( true ) {\n          uVar6 = *puVar4;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar4[1];\n            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if (strtab_size <= (long)uVar8) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(local_60 + uVar8));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar4 = puVar4 + 2;\n          if (puVar9 <= puVar4) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar4[1];\n        uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if (strtab_size <= (long)uVar8) {\n          pcVar10 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          pcVar10 = (char *)gettext(pcVar10);\n          Object::error((Object *)this,pcVar10,uVar8,strtab_size);\n          goto joined_r0x002b3b2b;\n        }\n        puVar7 = (uchar *)0xffffffffffffffff;\n        __s = local_60 + uVar8;\n        local_58._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar5 = strlen((char *)__s);\n          puVar7 = __s + sVar5;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_58,__s,puVar7);\n        __position._M_current =\n             (this->super_Dynobj).needed_.\n             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n             ._M_impl._M_finish;\n        if (__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            ._M_impl._M_end_of_storage) {\n          ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n            *(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_58._M_string_length;\n          ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                     ._M_impl._M_finish;\n          *ppbVar2 = *ppbVar2 + 1;\n          goto joined_r0x002b3b2b;\n        }\n                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */\n        std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>\n                  (&(this->super_Dynobj).needed_,__position,&local_58);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_58._M_dataplus._M_p == paVar1) goto joined_r0x002b3b2b;\n        operator_delete(local_58._M_dataplus._M_p);\n        puVar4 = puVar4 + 2;\n      }" { (while_statement "while( true ) {\n          uVar6 = *puVar4;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar4[1];\n            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if (strtab_size <= (long)uVar8) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(local_60 + uVar8));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar4 = puVar4 + 2;\n          if (puVar9 <= puVar4) goto LAB_002b3a1e;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar6 = *puVar4;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar4[1];\n            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if (strtab_size <= (long)uVar8) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(local_60 + uVar8));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar4 = puVar4 + 2;\n          if (puVar9 <= puVar4) goto LAB_002b3a1e;\n        }" { (expression_statement "uVar6 = *puVar4;" (assignment_expression "uVar6 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;" (assignment_expression "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" identifier = (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar6 == 1) break;" if (parenthesized_expression "(uVar6 == 1)" ( (binary_expression "uVar6 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar6 == 0) {\n            return;\n          }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (if_statement "if (uVar6 == 0xe) {\n            uVar6 = puVar4[1];\n            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if (strtab_size <= (long)uVar8) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(local_60 + uVar8));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);\n          }" if (parenthesized_expression "(uVar6 == 0xe)" ( (binary_expression "uVar6 == 0xe" identifier == number_literal) )) (compound_statement "{\n            uVar6 = puVar4[1];\n            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if (strtab_size <= (long)uVar8) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(local_60 + uVar8));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);\n          }" { (expression_statement "uVar6 = puVar4[1];" (assignment_expression "uVar6 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar10 = "DT_SONAME value out of range: %lld >= %lld";" (assignment_expression "pcVar10 = "DT_SONAME value out of range: %lld >= %lld"" identifier = (string_literal ""DT_SONAME value out of range: %lld >= %lld"" " string_content ")) ;) (expression_statement "uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);" (assignment_expression "uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18)" identifier = (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18)" ( (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (strtab_size <= (long)uVar8) goto LAB_002b3a66;" if (parenthesized_expression "(strtab_size <= (long)uVar8)" ( (binary_expression "strtab_size <= (long)uVar8" identifier <= (cast_expression "(long)uVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (goto_statement "goto LAB_002b3a66;" goto statement_identifier ;)) (expression_statement "sVar5 = strlen((char *)(local_60 + uVar8));" (assignment_expression "sVar5 = strlen((char *)(local_60 + uVar8))" identifier = (call_expression "strlen((char *)(local_60 + uVar8))" identifier (argument_list "((char *)(local_60 + uVar8))" ( (cast_expression "(char *)(local_60 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_60 + uVar8)" ( (binary_expression "local_60 + uVar8" identifier + identifier) ))) )))) ;) (labeled_statement "std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5);" (call_expression "_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5)" identifier (argument_list "((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(local_60 + uVar8),\n                       sVar5)" ( (cast_expression "(string *)&(this->super_Dynobj).soname_" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(this->super_Dynobj).soname_" & (field_expression "(this->super_Dynobj).soname_" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier))) , number_literal , (field_expression "(this->super_Dynobj).soname_._M_string_length" (field_expression "(this->super_Dynobj).soname_" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (cast_expression "(char *)(local_60 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_60 + uVar8)" ( (binary_expression "local_60 + uVar8" identifier + identifier) ))) , identifier ))) ;))) })) (labeled_statement "joined_r0x002b3b2b:\n          puVar4 = puVar4 + 2;" statement_identifier : (expression_statement "puVar4 = puVar4 + 2;" (assignment_expression "puVar4 = puVar4 + 2" identifier = (binary_expression "puVar4 + 2" identifier + number_literal)) ;)) (if_statement "if (puVar9 <= puVar4) goto LAB_002b3a1e;" if (parenthesized_expression "(puVar9 <= puVar4)" ( (binary_expression "puVar9 <= puVar4" identifier <= identifier) )) (goto_statement "goto LAB_002b3a1e;" goto statement_identifier ;)) })) (expression_statement "uVar6 = puVar4[1];" (assignment_expression "uVar6 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);" (assignment_expression "uVar8 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" identifier = (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" ( (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (strtab_size <= (long)uVar8) {\n          pcVar10 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          pcVar10 = (char *)gettext(pcVar10);\n          Object::error((Object *)this,pcVar10,uVar8,strtab_size);\n          goto joined_r0x002b3b2b;\n        }" if (parenthesized_expression "(strtab_size <= (long)uVar8)" ( (binary_expression "strtab_size <= (long)uVar8" identifier <= (cast_expression "(long)uVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n          pcVar10 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          pcVar10 = (char *)gettext(pcVar10);\n          Object::error((Object *)this,pcVar10,uVar8,strtab_size);\n          goto joined_r0x002b3b2b;\n        }" { (expression_statement "pcVar10 = "DT_NEEDED value out of range: %lld >= %lld";" (assignment_expression "pcVar10 = "DT_NEEDED value out of range: %lld >= %lld"" identifier = (string_literal ""DT_NEEDED value out of range: %lld >= %lld"" " string_content ")) ;) (labeled_statement "LAB_002b3a66:\n          pcVar10 = (char *)gettext(pcVar10);" statement_identifier : (expression_statement "pcVar10 = (char *)gettext(pcVar10);" (assignment_expression "pcVar10 = (char *)gettext(pcVar10)" identifier = (cast_expression "(char *)gettext(pcVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))))) ;)) (labeled_statement "Object::error((Object *)this,pcVar10,uVar8,strtab_size);" statement_identifier : (ERROR ":" :) (expression_statement "error((Object *)this,pcVar10,uVar8,strtab_size);" (call_expression "error((Object *)this,pcVar10,uVar8,strtab_size)" identifier (argument_list "((Object *)this,pcVar10,uVar8,strtab_size)" ( (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , identifier ))) ;)) (goto_statement "goto joined_r0x002b3b2b;" goto statement_identifier ;) })) (expression_statement "puVar7 = (uchar *)0xffffffffffffffff;" (assignment_expression "puVar7 = (uchar *)0xffffffffffffffff" identifier = (cast_expression "(uchar *)0xffffffffffffffff" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__s = local_60 + uVar8;" (assignment_expression "__s = local_60 + uVar8" identifier = (binary_expression "local_60 + uVar8" identifier + identifier)) ;) (expression_statement "local_58._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "local_58._M_dataplus._M_p = (pointer)paVar1" (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (if_statement "if (__s != (uchar *)0x0) {\n          sVar5 = strlen((char *)__s);\n          puVar7 = __s + sVar5;\n        }" if (parenthesized_expression "(__s != (uchar *)0x0)" ( (binary_expression "__s != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          sVar5 = strlen((char *)__s);\n          puVar7 = __s + sVar5;\n        }" { (expression_statement "sVar5 = strlen((char *)__s);" (assignment_expression "sVar5 = strlen((char *)__s)" identifier = (call_expression "strlen((char *)__s)" identifier (argument_list "((char *)__s)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "puVar7 = __s + sVar5;" (assignment_expression "puVar7 = __s + sVar5" identifier = (binary_expression "__s + sVar5" identifier + identifier)) ;) })) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_58,__s,puVar7);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&local_58,__s,puVar7);" (binary_expression "_M_construct<char_const*>(&local_58,__s,puVar7)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_58,__s,puVar7)" ( (comma_expression "&local_58,__s,puVar7" (pointer_expression "&local_58" & identifier) , (comma_expression "__s,puVar7" identifier , identifier)) ))) ;)) (ERROR "__position._M_current =\n             (this->super_Dynobj).needed_.\n             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "__position._M_current =\n             (this->super_Dynobj).needed_.\n             super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "__position._M_current =\n             (this->super_Dynobj).needed_.\n             super__Vector_base<std::__cxx11::basic_string<char" (assignment_expression "__position._M_current =\n             (this->super_Dynobj).needed_.\n             super__Vector_base<std" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "(this->super_Dynobj).needed_.\n             super__Vector_base<std" (field_expression "(this->super_Dynobj).needed_.\n             super__Vector_base" (field_expression "(this->super_Dynobj).needed_" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier)) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n             ._M_impl._M_finish;" (field_expression "allocator<char>_>_>_>\n             ._M_impl._M_finish" (field_expression "allocator<char>_>_>_>\n             ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            ._M_impl._M_end_of_storage) {\n          ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n            *(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_58._M_string_length;\n          ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                     ._M_impl._M_finish;\n          *ppbVar2 = *ppbVar2 + 1;\n          goto joined_r0x002b3b2b;\n        }" if (parenthesized_expression "(__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            ._M_impl._M_end_of_storage)" ( (ERROR "__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "__position._M_current !=\n            (this->super_Dynobj).needed_.\n            super__Vector_base<std" (field_expression "__position._M_current" identifier . field_identifier) != (binary_expression "(this->super_Dynobj).needed_.\n            super__Vector_base<std" (field_expression "(this->super_Dynobj).needed_.\n            super__Vector_base" (field_expression "(this->super_Dynobj).needed_" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier)) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (field_expression "allocator<char>_>_>_>\n            ._M_impl._M_end_of_storage" (field_expression "allocator<char>_>_>_>\n            ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n          ((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n            *(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_58._M_string_length;\n          ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                     ._M_impl._M_finish;\n          *ppbVar2 = *ppbVar2 + 1;\n          goto joined_r0x002b3b2b;\n        }" { (expression_statement "((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2;" (assignment_expression "((__position._M_current)->_M_dataplus)._M_p = (pointer)&(__position._M_current)->field_2" (field_expression "((__position._M_current)->_M_dataplus)._M_p" (parenthesized_expression "((__position._M_current)->_M_dataplus)" ( (field_expression "(__position._M_current)->_M_dataplus" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&(__position._M_current)->field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(__position._M_current)->field_2" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_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._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n            *(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n          }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._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               *)local_58._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               *)local_58._M_dataplus._M_p == paVar1" (binary_expression "allocator<char>_>_9\n               *)local_58._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n               *)local_58._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier))) == identifier) )) )) (compound_statement "{\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n            *(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;\n          }" { (expression_statement "((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;" (assignment_expression "((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity" (field_expression "((__position._M_current)->field_2)._M_allocated_capacity" (parenthesized_expression "((__position._M_current)->field_2)" ( (field_expression "(__position._M_current)->field_2" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) )) . field_identifier) = (field_expression "local_58.field_2._M_allocated_capacity" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier)) ;) (expression_statement "*(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_;" (assignment_expression "*(undefined8 *)((long)&(__position._M_current)->field_2 + 8) = local_58.field_2._8_8_" (pointer_expression "*(undefined8 *)((long)&(__position._M_current)->field_2 + 8)" * (cast_expression "(undefined8 *)((long)&(__position._M_current)->field_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&(__position._M_current)->field_2 + 8)" ( (binary_expression "(long)&(__position._M_current)->field_2 + 8" (cast_expression "(long)&(__position._M_current)->field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(__position._M_current)->field_2" & (field_expression "(__position._M_current)->field_2" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier))) + number_literal) )))) = (field_expression "local_58.field_2._8_8_" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n          }" else (compound_statement "{\n            ((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;\n          }" { (expression_statement "((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p;" (assignment_expression "((__position._M_current)->_M_dataplus)._M_p = local_58._M_dataplus._M_p" (field_expression "((__position._M_current)->_M_dataplus)._M_p" (parenthesized_expression "((__position._M_current)->_M_dataplus)" ( (field_expression "(__position._M_current)->_M_dataplus" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) )) . field_identifier) = (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (expression_statement "((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity;" (assignment_expression "((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_58.field_2._M_allocated_capacity" (field_expression "((__position._M_current)->field_2)._M_allocated_capacity" (parenthesized_expression "((__position._M_current)->field_2)" ( (field_expression "(__position._M_current)->field_2" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) )) . field_identifier) = (field_expression "local_58.field_2._M_allocated_capacity" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier)) ;) }))) (expression_statement "(__position._M_current)->_M_string_length = local_58._M_string_length;" (assignment_expression "(__position._M_current)->_M_string_length = local_58._M_string_length" (field_expression "(__position._M_current)->_M_string_length" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) = (field_expression "local_58._M_string_length" identifier . field_identifier)) ;) (ERROR "ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std::__cxx11::basic_string<char" (assignment_expression "ppbVar2 = &(this->super_Dynobj).needed_.\n                     super__Vector_base<std" identifier = (binary_expression "&(this->super_Dynobj).needed_.\n                     super__Vector_base<std" (pointer_expression "&(this->super_Dynobj).needed_.\n                     super__Vector_base" & (field_expression "(this->super_Dynobj).needed_.\n                     super__Vector_base" (field_expression "(this->super_Dynobj).needed_" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier)) < identifier)) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n                     ._M_impl._M_finish;" (field_expression "allocator<char>_>_>_>\n                     ._M_impl._M_finish" (field_expression "allocator<char>_>_>_>\n                     ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "*ppbVar2 = *ppbVar2 + 1;" (assignment_expression "*ppbVar2 = *ppbVar2 + 1" (pointer_expression "*ppbVar2" * identifier) = (binary_expression "*ppbVar2 + 1" (pointer_expression "*ppbVar2" * identifier) + number_literal)) ;) (goto_statement "goto joined_r0x002b3b2b;" goto statement_identifier ;) })) comment (ERROR "std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "std::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std" identifier (ERROR "::\n        vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>_>_>\n        ::\n        _M_realloc_insert<std" (binary_expression "allocator<char>_>_>_>\n        ::\n        _M_realloc_insert" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > (ERROR "::" : :) identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>\n                  (&(this->super_Dynobj).needed_,__position,&local_58);" (binary_expression "allocator<char>_>_>\n                  (&(this->super_Dynobj).needed_,__position,&local_58)" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (parenthesized_expression "(&(this->super_Dynobj).needed_,__position,&local_58)" ( (comma_expression "&(this->super_Dynobj).needed_,__position,&local_58" (pointer_expression "&(this->super_Dynobj).needed_" & (field_expression "(this->super_Dynobj).needed_" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier)) , (comma_expression "__position,&local_58" identifier , (pointer_expression "&local_58" & identifier))) ))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_58._M_dataplus._M_p == paVar1) goto joined_r0x002b3b2b;" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_58._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             *)local_58._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             *)local_58._M_dataplus._M_p == paVar1" (binary_expression "allocator<char>_>_9\n             *)local_58._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n             *)local_58._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier))) == identifier) )) )) (goto_statement "goto joined_r0x002b3b2b;" goto statement_identifier ;)) (expression_statement "operator_delete(local_58._M_dataplus._M_p);" (call_expression "operator_delete(local_58._M_dataplus._M_p)" identifier (argument_list "(local_58._M_dataplus._M_p)" ( (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) (expression_statement "puVar4 = puVar4 + 2;" (assignment_expression "puVar4 = puVar4 + 2" identifier = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 < puVar9)" ( (binary_expression "puVar4 < puVar9" identifier < identifier) )) ;) })) (labeled_statement "LAB_002b3a1e:\n    pcVar10 = (char *)gettext("missing DT_NULL in dynamic segment");" statement_identifier : (expression_statement "pcVar10 = (char *)gettext("missing DT_NULL in dynamic segment");" (assignment_expression "pcVar10 = (char *)gettext("missing DT_NULL in dynamic segment")" identifier = (cast_expression "(char *)gettext("missing DT_NULL in dynamic segment")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("missing DT_NULL in dynamic segment")" identifier (argument_list "("missing DT_NULL in dynamic segment")" ( (string_literal ""missing DT_NULL in dynamic segment"" " string_content ") ))))) ;)) (labeled_statement "Object::error((Object *)this,pcVar10);" statement_identifier : (ERROR ":" :) (expression_statement "error((Object *)this,pcVar10);" (call_expression "error((Object *)this,pcVar10)" identifier (argument_list "((Object *)this,pcVar10)" ( (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) (return_statement "return;" return ;) })) (if_statement "if (uVar6 < (this->super_Dynobj).super_Object.shnum_) {\n    if (*(int *)(pshdrs + (ulong)(uVar6 * 0x28) + 4) == 0x3000000) {\n      uVar3 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x14);\n      uVar6 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x10);\n      this_00 = (this->super_Dynobj).super_Object.input_file_;\n      strtab_size = (off_t)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      if (this_00 == (Input_file *)0x0) goto LAB_002b3b94;\n      local_60 = File_read::get_view(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                                     (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |\n                                             (uVar6 & 0xff00) << 8 | uVar6 << 0x18),strtab_size,\n                                     false,false);\n      goto LAB_002b39ab;\n    }\n    pcVar10 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar10 = "DYNAMIC section %u link out of range: %u";\n  }" if (parenthesized_expression "(uVar6 < (this->super_Dynobj).super_Object.shnum_)" ( (binary_expression "uVar6 < (this->super_Dynobj).super_Object.shnum_" identifier < (field_expression "(this->super_Dynobj).super_Object.shnum_" (field_expression "(this->super_Dynobj).super_Object" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier)) )) (compound_statement "{\n    if (*(int *)(pshdrs + (ulong)(uVar6 * 0x28) + 4) == 0x3000000) {\n      uVar3 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x14);\n      uVar6 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x10);\n      this_00 = (this->super_Dynobj).super_Object.input_file_;\n      strtab_size = (off_t)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      if (this_00 == (Input_file *)0x0) goto LAB_002b3b94;\n      local_60 = File_read::get_view(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                                     (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |\n                                             (uVar6 & 0xff00) << 8 | uVar6 << 0x18),strtab_size,\n                                     false,false);\n      goto LAB_002b39ab;\n    }\n    pcVar10 = "DYNAMIC section %u link %u is not a strtab";\n  }" { (if_statement "if (*(int *)(pshdrs + (ulong)(uVar6 * 0x28) + 4) == 0x3000000) {\n      uVar3 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x14);\n      uVar6 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x10);\n      this_00 = (this->super_Dynobj).super_Object.input_file_;\n      strtab_size = (off_t)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      if (this_00 == (Input_file *)0x0) goto LAB_002b3b94;\n      local_60 = File_read::get_view(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                                     (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |\n                                             (uVar6 & 0xff00) << 8 | uVar6 << 0x18),strtab_size,\n                                     false,false);\n      goto LAB_002b39ab;\n    }" if (parenthesized_expression "(*(int *)(pshdrs + (ulong)(uVar6 * 0x28) + 4) == 0x3000000)" ( (binary_expression "*(int *)(pshdrs + (ulong)(uVar6 * 0x28) + 4) == 0x3000000" (pointer_expression "*(int *)(pshdrs + (ulong)(uVar6 * 0x28) + 4)" * (cast_expression "(int *)(pshdrs + (ulong)(uVar6 * 0x28) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(uVar6 * 0x28) + 4)" ( (binary_expression "pshdrs + (ulong)(uVar6 * 0x28) + 4" (binary_expression "pshdrs + (ulong)(uVar6 * 0x28)" identifier + (call_expression "(ulong)(uVar6 * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 * 0x28)" ( (binary_expression "uVar6 * 0x28" identifier * number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n      uVar3 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x14);\n      uVar6 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x10);\n      this_00 = (this->super_Dynobj).super_Object.input_file_;\n      strtab_size = (off_t)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      if (this_00 == (Input_file *)0x0) goto LAB_002b3b94;\n      local_60 = File_read::get_view(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                                     (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |\n                                             (uVar6 & 0xff00) << 8 | uVar6 << 0x18),strtab_size,\n                                     false,false);\n      goto LAB_002b39ab;\n    }" { (expression_statement "uVar3 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x14);" (assignment_expression "uVar3 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x14)" identifier = (pointer_expression "*(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x14)" * (cast_expression "(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(uVar6 * 0x28) + 0x14)" ( (binary_expression "pshdrs + (ulong)(uVar6 * 0x28) + 0x14" (binary_expression "pshdrs + (ulong)(uVar6 * 0x28)" identifier + (call_expression "(ulong)(uVar6 * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 * 0x28)" ( (binary_expression "uVar6 * 0x28" identifier * number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x10);" (assignment_expression "uVar6 = *(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x10)" identifier = (pointer_expression "*(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x10)" * (cast_expression "(uint *)(pshdrs + (ulong)(uVar6 * 0x28) + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(uVar6 * 0x28) + 0x10)" ( (binary_expression "pshdrs + (ulong)(uVar6 * 0x28) + 0x10" (binary_expression "pshdrs + (ulong)(uVar6 * 0x28)" identifier + (call_expression "(ulong)(uVar6 * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 * 0x28)" ( (binary_expression "uVar6 * 0x28" identifier * number_literal) )))) + number_literal) ))))) ;) (expression_statement "this_00 = (this->super_Dynobj).super_Object.input_file_;" (assignment_expression "this_00 = (this->super_Dynobj).super_Object.input_file_" identifier = (field_expression "(this->super_Dynobj).super_Object.input_file_" (field_expression "(this->super_Dynobj).super_Object" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "strtab_size = (off_t)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);" (assignment_expression "strtab_size = (off_t)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18)" identifier = (call_expression "(off_t)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18)" (parenthesized_expression "(off_t)" ( identifier )) (argument_list "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (this_00 == (Input_file *)0x0) goto LAB_002b3b94;" if (parenthesized_expression "(this_00 == (Input_file *)0x0)" ( (binary_expression "this_00 == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002b3b94;" goto statement_identifier ;)) (ERROR "local_60 = File_read::" (assignment_expression "local_60 = File_read" identifier = identifier) : :) (expression_statement "get_view(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                                     (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |\n                                             (uVar6 & 0xff00) << 8 | uVar6 << 0x18),strtab_size,\n                                     false,false);" (call_expression "get_view(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                                     (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |\n                                             (uVar6 & 0xff00) << 8 | uVar6 << 0x18),strtab_size,\n                                     false,false)" identifier (argument_list "(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                                     (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |\n                                             (uVar6 & 0xff00) << 8 | uVar6 << 0x18),strtab_size,\n                                     false,false)" ( (pointer_expression "&this_00->file_" & (field_expression "this_00->file_" identifier -> field_identifier)) , (field_expression "(this->super_Dynobj).super_Object.offset_" (field_expression "(this->super_Dynobj).super_Object" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |\n                                             (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |\n                                             (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" ( (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |\n                                             (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 |\n                                             (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal)) ))) , identifier , false , false ))) ;) (goto_statement "goto LAB_002b39ab;" goto statement_identifier ;) })) (expression_statement "pcVar10 = "DYNAMIC section %u link %u is not a strtab";" (assignment_expression "pcVar10 = "DYNAMIC section %u link %u is not a strtab"" identifier = (string_literal ""DYNAMIC section %u link %u is not a strtab"" " string_content ")) ;) }) (else_clause "else {\n    pcVar10 = "DYNAMIC section %u link out of range: %u";\n  }" else (compound_statement "{\n    pcVar10 = "DYNAMIC section %u link out of range: %u";\n  }" { (expression_statement "pcVar10 = "DYNAMIC section %u link out of range: %u";" (assignment_expression "pcVar10 = "DYNAMIC section %u link out of range: %u"" identifier = (string_literal ""DYNAMIC section %u link out of range: %u"" " string_content ")) ;) }))) (expression_statement "pcVar10 = (char *)gettext(pcVar10);" (assignment_expression "pcVar10 = (char *)gettext(pcVar10)" identifier = (cast_expression "(char *)gettext(pcVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))))) ;) (labeled_statement "Object::error((Object *)this,pcVar10,(ulong)dynamic_shndx,uVar6);" statement_identifier : (ERROR ":" :) (expression_statement "error((Object *)this,pcVar10,(ulong)dynamic_shndx,uVar6);" (call_expression "error((Object *)this,pcVar10,(ulong)dynamic_shndx,uVar6)" identifier (argument_list "((Object *)this,pcVar10,(ulong)dynamic_shndx,uVar6)" ( (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(ulong)dynamic_shndx" ( (type_descriptor "ulong" type_identifier) ) identifier) , identifier ))) ;)) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_002b3880(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)\n\n{\n  uint uVar1;\n  long *plVar2;\n  uint *puVar3;\n  undefined8 uVar4;\n  size_t sVar5;\n  uint uVar6;\n  ulong uVar7;\n  uint *puVar8;\n  char *pcVar9;\n  long lVar10;\n  char *__s;\n  long local_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;\n  if (*(int *)(lVar10 + 4) != 0x6000000) {\n                    \n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }\n  uVar6 = *(uint *)(lVar10 + 0x14);\n  uVar1 = *(uint *)(lVar10 + 0x10);\n  uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);\n  if (*(long *)(param_1 + 0x28) == 0) {\nLAB_002b3b94:\n                    \n    FUN_002a89d0();\n  }\n  puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0);\n  uVar6 = *(uint *)(lVar10 + 0x18);\n  uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n  if (0xfeff < uVar6) {\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }\n  local_60 = param_5;\n  if (param_4 == uVar6) {\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }\n  if (uVar6 < *(uint *)(param_1 + 0x38)) {\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar4 = gettext(pcVar9);\n  FUN_001d19e0(param_1,uVar4,param_3,uVar6);\n  return;\n}\n\n" (function_definition "void FUN_002b3880(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)\n\n{\n  uint uVar1;\n  long *plVar2;\n  uint *puVar3;\n  undefined8 uVar4;\n  size_t sVar5;\n  uint uVar6;\n  ulong uVar7;\n  uint *puVar8;\n  char *pcVar9;\n  long lVar10;\n  char *__s;\n  long local_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;\n  if (*(int *)(lVar10 + 4) != 0x6000000) {\n                    \n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }\n  uVar6 = *(uint *)(lVar10 + 0x14);\n  uVar1 = *(uint *)(lVar10 + 0x10);\n  uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);\n  if (*(long *)(param_1 + 0x28) == 0) {\nLAB_002b3b94:\n                    \n    FUN_002a89d0();\n  }\n  puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0);\n  uVar6 = *(uint *)(lVar10 + 0x18);\n  uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n  if (0xfeff < uVar6) {\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }\n  local_60 = param_5;\n  if (param_4 == uVar6) {\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }\n  if (uVar6 < *(uint *)(param_1 + 0x38)) {\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar4 = gettext(pcVar9);\n  FUN_001d19e0(param_1,uVar4,param_3,uVar6);\n  return;\n}" primitive_type (function_declarator "FUN_002b3880(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)" identifier (parameter_list "(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "long param_5" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong param_6" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  long *plVar2;\n  uint *puVar3;\n  undefined8 uVar4;\n  size_t sVar5;\n  uint uVar6;\n  ulong uVar7;\n  uint *puVar8;\n  char *pcVar9;\n  long lVar10;\n  char *__s;\n  long local_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;\n  if (*(int *)(lVar10 + 4) != 0x6000000) {\n                    \n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }\n  uVar6 = *(uint *)(lVar10 + 0x14);\n  uVar1 = *(uint *)(lVar10 + 0x10);\n  uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);\n  if (*(long *)(param_1 + 0x28) == 0) {\nLAB_002b3b94:\n                    \n    FUN_002a89d0();\n  }\n  puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0);\n  uVar6 = *(uint *)(lVar10 + 0x18);\n  uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n  if (0xfeff < uVar6) {\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }\n  local_60 = param_5;\n  if (param_4 == uVar6) {\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }\n  if (uVar6 < *(uint *)(param_1 + 0x38)) {\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar4 = gettext(pcVar9);\n  FUN_001d19e0(param_1,uVar4,param_3,uVar6);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "long local_60;" (sized_type_specifier "long" long) identifier ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "long lStack_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;" (assignment_expression "lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2" identifier = (binary_expression "(ulong)(uint)(param_3 * 0x28) + param_2" (call_expression "(ulong)(uint)(param_3 * 0x28)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(param_3 * 0x28)" ( (binary_expression "param_3 * 0x28" identifier * number_literal) ))) + identifier)) ;) (if_statement "if (*(int *)(lVar10 + 4) != 0x6000000) {\n                    \n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }" if (parenthesized_expression "(*(int *)(lVar10 + 4) != 0x6000000)" ( (binary_expression "*(int *)(lVar10 + 4) != 0x6000000" (pointer_expression "*(int *)(lVar10 + 4)" * (cast_expression "(int *)(lVar10 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 4)" ( (binary_expression "lVar10 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }" { (expression_statement "FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");" (call_expression "FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic")" identifier (argument_list "("../../gold/dynobj.cc",0x100,"read_dynamic")" ( (string_literal ""../../gold/dynobj.cc"" " string_content ") , number_literal , (string_literal ""read_dynamic"" " string_content ") ))) ;) })) (expression_statement "uVar6 = *(uint *)(lVar10 + 0x14);" (assignment_expression "uVar6 = *(uint *)(lVar10 + 0x14)" identifier = (pointer_expression "*(uint *)(lVar10 + 0x14)" * (cast_expression "(uint *)(lVar10 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x14)" ( (binary_expression "lVar10 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(uint *)(lVar10 + 0x10);" (assignment_expression "uVar1 = *(uint *)(lVar10 + 0x10)" identifier = (pointer_expression "*(uint *)(lVar10 + 0x10)" * (cast_expression "(uint *)(lVar10 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);" (assignment_expression "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" identifier = (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" ( (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (*(long *)(param_1 + 0x28) == 0) {\nLAB_002b3b94:\n                    \n    FUN_002a89d0();\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x28) == 0)" ( (binary_expression "*(long *)(param_1 + 0x28) == 0" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_002b3b94:\n                    \n    FUN_002a89d0();\n  }" { (labeled_statement "LAB_002b3b94:\n                    \n    FUN_002a89d0();" statement_identifier : (expression_statement "FUN_002a89d0();" (call_expression "FUN_002a89d0()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0);" (assignment_expression "puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0)" identifier = (cast_expression "(uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0)" identifier (argument_list "(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0)" ( (binary_expression "*(long *)(param_1 + 0x28) + 0x28" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal)) , identifier , number_literal , number_literal ))))) ;) (expression_statement "uVar6 = *(uint *)(lVar10 + 0x18);" (assignment_expression "uVar6 = *(uint *)(lVar10 + 0x18)" identifier = (pointer_expression "*(uint *)(lVar10 + 0x18)" * (cast_expression "(uint *)(lVar10 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x18)" ( (binary_expression "lVar10 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;" (assignment_expression "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" identifier = (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal))) ;) (if_statement "if (0xfeff < uVar6) {\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }" if (parenthesized_expression "(0xfeff < uVar6)" ( (binary_expression "0xfeff < uVar6" number_literal < identifier) )) (compound_statement "{\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }" { (expression_statement "FUN_001da740(param_1 + 0x90);" (call_expression "FUN_001da740(param_1 + 0x90)" identifier (argument_list "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) ))) ;) (expression_statement "uVar6 = uVar6 + *(int *)(param_1 + 0xa8);" (assignment_expression "uVar6 = uVar6 + *(int *)(param_1 + 0xa8)" identifier = (binary_expression "uVar6 + *(int *)(param_1 + 0xa8)" identifier + (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) )))))) ;) })) (expression_statement "local_60 = param_5;" (assignment_expression "local_60 = param_5" identifier = identifier) ;) (if_statement "if (param_4 == uVar6) {\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }" if (parenthesized_expression "(param_4 == uVar6)" ( (binary_expression "param_4 == uVar6" identifier == identifier) )) (compound_statement "{\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }" { (labeled_statement "LAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);" statement_identifier : (expression_statement "puVar8 = (uint *)(uVar7 + (long)puVar3);" (assignment_expression "puVar8 = (uint *)(uVar7 + (long)puVar3)" identifier = (cast_expression "(uint *)(uVar7 + (long)puVar3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + (long)puVar3)" ( (binary_expression "uVar7 + (long)puVar3" identifier + (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;)) (if_statement "if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }" if (parenthesized_expression "(puVar3 < puVar8)" ( (binary_expression "puVar3 < puVar8" identifier < identifier) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }" { (do_statement "do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);" do (compound_statement "{\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      }" { (while_statement "while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }" { (expression_statement "uVar6 = *puVar3;" (assignment_expression "uVar6 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;" (assignment_expression "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" identifier = (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar6 == 1) break;" if (parenthesized_expression "(uVar6 == 1)" ( (binary_expression "uVar6 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar6 == 0) {\n            return;\n          }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (if_statement "if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }" if (parenthesized_expression "(uVar6 == 0xe)" ( (binary_expression "uVar6 == 0xe" identifier == number_literal) )) (compound_statement "{\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }" { (expression_statement "uVar6 = puVar3[1];" (assignment_expression "uVar6 = puVar3[1]" identifier = (subscript_expression "puVar3[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar9 = "DT_SONAME value out of range: %lld >= %lld";" (assignment_expression "pcVar9 = "DT_SONAME value out of range: %lld >= %lld"" identifier = (string_literal ""DT_SONAME value out of range: %lld >= %lld"" " string_content ")) ;) (expression_statement "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);" (assignment_expression "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18)" identifier = (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18)" ( (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;" if (parenthesized_expression "((long)param_6 <= (long)uVar7)" ( (binary_expression "(long)param_6 <= (long)uVar7" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) <= (cast_expression "(long)uVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (goto_statement "goto LAB_002b3a66;" goto statement_identifier ;)) (expression_statement "sVar5 = strlen((char *)(uVar7 + local_60));" (assignment_expression "sVar5 = strlen((char *)(uVar7 + local_60))" identifier = (call_expression "strlen((char *)(uVar7 + local_60))" identifier (argument_list "((char *)(uVar7 + local_60))" ( (cast_expression "(char *)(uVar7 + local_60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + local_60)" ( (binary_expression "uVar7 + local_60" identifier + identifier) ))) )))) ;) (expression_statement "FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);" (call_expression "FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5)" identifier (argument_list "(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x58)" * (cast_expression "(undefined8 *)(param_1 + 0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) , (cast_expression "(char *)(uVar7 + local_60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + local_60)" ( (binary_expression "uVar7 + local_60" identifier + identifier) ))) , identifier ))) ;) })) (labeled_statement "joined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;" statement_identifier : (expression_statement "puVar3 = puVar3 + 2;" (assignment_expression "puVar3 = puVar3 + 2" identifier = (binary_expression "puVar3 + 2" identifier + number_literal)) ;)) (if_statement "if (puVar8 <= puVar3) goto LAB_002b3a1e;" if (parenthesized_expression "(puVar8 <= puVar3)" ( (binary_expression "puVar8 <= puVar3" identifier <= identifier) )) (goto_statement "goto LAB_002b3a1e;" goto statement_identifier ;)) })) (expression_statement "uVar6 = puVar3[1];" (assignment_expression "uVar6 = puVar3[1]" identifier = (subscript_expression "puVar3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);" (assignment_expression "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" identifier = (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" ( (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }" if (parenthesized_expression "((long)param_6 <= (long)uVar7)" ( (binary_expression "(long)param_6 <= (long)uVar7" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) <= (cast_expression "(long)uVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }" { (expression_statement "pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";" (assignment_expression "pcVar9 = "DT_NEEDED value out of range: %lld >= %lld"" identifier = (string_literal ""DT_NEEDED value out of range: %lld >= %lld"" " string_content ")) ;) (labeled_statement "LAB_002b3a66:\n          uVar4 = gettext(pcVar9);" statement_identifier : (expression_statement "uVar4 = gettext(pcVar9);" (assignment_expression "uVar4 = gettext(pcVar9)" identifier = (call_expression "gettext(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier )))) ;)) (expression_statement "FUN_001d19e0(param_1,uVar4,uVar7,param_6);" (call_expression "FUN_001d19e0(param_1,uVar4,uVar7,param_6)" identifier (argument_list "(param_1,uVar4,uVar7,param_6)" ( identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto joined_r0x002b3b2b;" goto statement_identifier ;) })) (expression_statement "pcVar9 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar9 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__s = (char *)(uVar7 + local_60);" (assignment_expression "__s = (char *)(uVar7 + local_60)" identifier = (cast_expression "(char *)(uVar7 + local_60)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + local_60)" ( (binary_expression "uVar7 + local_60" identifier + identifier) )))) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (if_statement "if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }" { (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar9 = __s + sVar5;" (assignment_expression "pcVar9 = __s + sVar5" identifier = (binary_expression "__s + sVar5" identifier + identifier)) ;) })) (expression_statement "FUN_00174550(&local_58,__s,pcVar9);" (call_expression "FUN_00174550(&local_58,__s,pcVar9)" identifier (argument_list "(&local_58,__s,pcVar9)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (expression_statement "plVar2 = *(long **)(param_1 + 0x78);" (assignment_expression "plVar2 = *(long **)(param_1 + 0x78)" identifier = (pointer_expression "*(long **)(param_1 + 0x78)" * (cast_expression "(long **)(param_1 + 0x78)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) ;) (if_statement "if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }" if (parenthesized_expression "(plVar2 != *(long **)(param_1 + 0x80))" ( (binary_expression "plVar2 != *(long **)(param_1 + 0x80)" identifier != (pointer_expression "*(long **)(param_1 + 0x80)" * (cast_expression "(long **)(param_1 + 0x80)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) )) (compound_statement "{\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }" { (expression_statement "*plVar2 = (long)(plVar2 + 2);" (assignment_expression "*plVar2 = (long)(plVar2 + 2)" (pointer_expression "*plVar2" * identifier) = (cast_expression "(long)(plVar2 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar2 + 2)" ( (binary_expression "plVar2 + 2" identifier + number_literal) )))) ;) (if_statement "if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }" { (expression_statement "plVar2[2] = local_48;" (assignment_expression "plVar2[2] = local_48" (subscript_expression "plVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar2[3] = lStack_40;" (assignment_expression "plVar2[3] = lStack_40" (subscript_expression "plVar2[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }" else (compound_statement "{\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }" { (expression_statement "*plVar2 = (long)local_58;" (assignment_expression "*plVar2 = (long)local_58" (pointer_expression "*plVar2" * identifier) = (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "plVar2[2] = local_48;" (assignment_expression "plVar2[2] = local_48" (subscript_expression "plVar2[2]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "plVar2[1] = local_50;" (assignment_expression "plVar2[1] = local_50" (subscript_expression "plVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;" (assignment_expression "*(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20" (pointer_expression "*(long *)(param_1 + 0x78)" * (cast_expression "(long *)(param_1 + 0x78)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x78) + 0x20" (pointer_expression "*(long *)(param_1 + 0x78)" * (cast_expression "(long *)(param_1 + 0x78)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) + number_literal)) ;) (goto_statement "goto joined_r0x002b3b2b;" goto statement_identifier ;) })) (expression_statement "FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);" (call_expression "FUN_0018bb70(param_1 + 0x70,plVar2,&local_58)" identifier (argument_list "(param_1 + 0x70,plVar2,&local_58)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) , identifier , (pointer_expression "&local_58" & identifier) ))) ;) (if_statement "if (local_58 == &local_48) goto joined_r0x002b3b2b;" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (goto_statement "goto joined_r0x002b3b2b;" goto statement_identifier ;)) (expression_statement "FUN_002f1e60();" (call_expression "FUN_002f1e60()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar3 = puVar3 + 2;" (assignment_expression "puVar3 = puVar3 + 2" identifier = (binary_expression "puVar3 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 < puVar8)" ( (binary_expression "puVar3 < puVar8" identifier < identifier) )) ;) })) (labeled_statement "LAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");" statement_identifier : (expression_statement "uVar4 = gettext("missing DT_NULL in dynamic segment");" (assignment_expression "uVar4 = gettext("missing DT_NULL in dynamic segment")" identifier = (call_expression "gettext("missing DT_NULL in dynamic segment")" identifier (argument_list "("missing DT_NULL in dynamic segment")" ( (string_literal ""missing DT_NULL in dynamic segment"" " string_content ") )))) ;)) (expression_statement "FUN_001d19e0(param_1,uVar4);" (call_expression "FUN_001d19e0(param_1,uVar4)" identifier (argument_list "(param_1,uVar4)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar6 < *(uint *)(param_1 + 0x38)) {\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }" if (parenthesized_expression "(uVar6 < *(uint *)(param_1 + 0x38))" ( (binary_expression "uVar6 < *(uint *)(param_1 + 0x38)" identifier < (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) )) (compound_statement "{\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }" { (expression_statement "param_2 = (ulong)(uVar6 * 0x28) + param_2;" (assignment_expression "param_2 = (ulong)(uVar6 * 0x28) + param_2" identifier = (binary_expression "(ulong)(uVar6 * 0x28) + param_2" (call_expression "(ulong)(uVar6 * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 * 0x28)" ( (binary_expression "uVar6 * 0x28" identifier * number_literal) ))) + identifier)) ;) (if_statement "if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }" if (parenthesized_expression "(*(int *)(param_2 + 4) == 0x3000000)" ( (binary_expression "*(int *)(param_2 + 4) == 0x3000000" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }" { (expression_statement "uVar6 = *(uint *)(param_2 + 0x14);" (assignment_expression "uVar6 = *(uint *)(param_2 + 0x14)" identifier = (pointer_expression "*(uint *)(param_2 + 0x14)" * (cast_expression "(uint *)(param_2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(uint *)(param_2 + 0x10);" (assignment_expression "uVar1 = *(uint *)(param_2 + 0x10)" identifier = (pointer_expression "*(uint *)(param_2 + 0x10)" * (cast_expression "(uint *)(param_2 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);" (assignment_expression "param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" identifier = (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" ( (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;" if (parenthesized_expression "(*(long *)(param_1 + 0x28) == 0)" ( (binary_expression "*(long *)(param_1 + 0x28) == 0" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_002b3b94;" goto statement_identifier ;)) (expression_statement "local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);" (assignment_expression "local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0)" identifier = (call_expression "FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0)" identifier (argument_list "(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0)" ( (binary_expression "*(long *)(param_1 + 0x28) + 0x28" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal)) , identifier , number_literal , number_literal )))) ;) (goto_statement "goto LAB_002b39ab;" goto statement_identifier ;) })) (expression_statement "pcVar9 = "DYNAMIC section %u link %u is not a strtab";" (assignment_expression "pcVar9 = "DYNAMIC section %u link %u is not a strtab"" identifier = (string_literal ""DYNAMIC section %u link %u is not a strtab"" " string_content ")) ;) }) (else_clause "else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }" else (compound_statement "{\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }" { (expression_statement "pcVar9 = "DYNAMIC section %u link out of range: %u";" (assignment_expression "pcVar9 = "DYNAMIC section %u link out of range: %u"" identifier = (string_literal ""DYNAMIC section %u link out of range: %u"" " string_content ")) ;) }))) (expression_statement "uVar4 = gettext(pcVar9);" (assignment_expression "uVar4 = gettext(pcVar9)" identifier = (call_expression "gettext(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier )))) ;) (expression_statement "FUN_001d19e0(param_1,uVar4,param_3,uVar6);" (call_expression "FUN_001d19e0(param_1,uVar4,param_3,uVar6)" identifier (argument_list "(param_1,uVar4,param_3,uVar6)" ( identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT * LIT) ))) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) , IDENT , LIT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) <= (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) , IDENT ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) <= (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) , IDENT , LIT , LIT )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_002b3880(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)\n\n{\n  uint uVar1;\n  long *plVar2;\n  uint *puVar3;\n  undefined8 uVar4;\n  size_t sVar5;\n  uint uVar6;\n  ulong uVar7;\n  uint *puVar8;\n  char *pcVar9;\n  long lVar10;\n  char *__s;\n  long local_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;\n  if (*(int *)(lVar10 + 4) != 0x6000000) {\n                    \n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }\n  uVar6 = *(uint *)(lVar10 + 0x14);\n  uVar1 = *(uint *)(lVar10 + 0x10);\n  uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);\n  if (*(long *)(param_1 + 0x28) == 0) {\nLAB_002b3b94:\n                    \n    FUN_002a89d0();\n  }\n  puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0);\n  uVar6 = *(uint *)(lVar10 + 0x18);\n  uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n  if (0xfeff < uVar6) {\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }\n  local_60 = param_5;\n  if (param_4 == uVar6) {\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }\n  if (uVar6 < *(uint *)(param_1 + 0x38)) {\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar4 = gettext(pcVar9);\n  FUN_001d19e0(param_1,uVar4,param_3,uVar6);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002b3880(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)" (identifier "FUN_002b3880") (parameter_list "(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "long param_5" (sized_type_specifier "long" (long "long")) (identifier "param_5")) (, ",") (parameter_declaration "ulong param_6" (type_identifier "ulong") (identifier "param_6")) () ")"))) (compound_statement "{\n  uint uVar1;\n  long *plVar2;\n  uint *puVar3;\n  undefined8 uVar4;\n  size_t sVar5;\n  uint uVar6;\n  ulong uVar7;\n  uint *puVar8;\n  char *pcVar9;\n  long lVar10;\n  char *__s;\n  long local_60;\n  long *local_58;\n  long local_50;\n  long local_48;\n  long lStack_40;\n  \n  lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;\n  if (*(int *)(lVar10 + 4) != 0x6000000) {\n                    \n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }\n  uVar6 = *(uint *)(lVar10 + 0x14);\n  uVar1 = *(uint *)(lVar10 + 0x10);\n  uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);\n  if (*(long *)(param_1 + 0x28) == 0) {\nLAB_002b3b94:\n                    \n    FUN_002a89d0();\n  }\n  puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0);\n  uVar6 = *(uint *)(lVar10 + 0x18);\n  uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n  if (0xfeff < uVar6) {\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }\n  local_60 = param_5;\n  if (param_4 == uVar6) {\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }\n  if (uVar6 < *(uint *)(param_1 + 0x38)) {\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar4 = gettext(pcVar9);\n  FUN_001d19e0(param_1,uVar4,param_3,uVar6);\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "uint *puVar3;" (type_identifier "uint") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "uint *puVar8;" (type_identifier "uint") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "char *pcVar9;" (primitive_type "char") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "long local_60;" (sized_type_specifier "long" (long "long")) (identifier "local_60") (; ";")) (declaration "long *local_58;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "long local_50;" (sized_type_specifier "long" (long "long")) (identifier "local_50") (; ";")) (declaration "long local_48;" (sized_type_specifier "long" (long "long")) (identifier "local_48") (; ";")) (declaration "long lStack_40;" (sized_type_specifier "long" (long "long")) (identifier "lStack_40") (; ";")) (expression_statement "lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;" (assignment_expression "lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2" (identifier "lVar10") (= "=") (binary_expression "(ulong)(uint)(param_3 * 0x28) + param_2" (call_expression "(ulong)(uint)(param_3 * 0x28)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uint)" (( "(") (identifier "uint") () ")"))) (argument_list "(param_3 * 0x28)" (( "(") (binary_expression "param_3 * 0x28" (identifier "param_3") (* "*") (number_literal "0x28")) () ")"))) (+ "+") (identifier "param_2"))) (; ";")) (if_statement "if (*(int *)(lVar10 + 4) != 0x6000000) {\n                    \n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }" (if "if") (parenthesized_expression "(*(int *)(lVar10 + 4) != 0x6000000)" (( "(") (binary_expression "*(int *)(lVar10 + 4) != 0x6000000" (pointer_expression "*(int *)(lVar10 + 4)" (* "*") (cast_expression "(int *)(lVar10 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 4)" (( "(") (binary_expression "lVar10 + 4" (identifier "lVar10") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0x6000000")) () ")")) (compound_statement "{\n                    \n    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }" ({ "{") (expression_statement "FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");" (call_expression "FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic")" (identifier "FUN_0018ff20") (argument_list "("../../gold/dynobj.cc",0x100,"read_dynamic")" (( "(") (string_literal ""../../gold/dynobj.cc"" (" """) (string_content "../../gold/dynobj.cc") (" """)) (, ",") (number_literal "0x100") (, ",") (string_literal ""read_dynamic"" (" """) (string_content "read_dynamic") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar6 = *(uint *)(lVar10 + 0x14);" (assignment_expression "uVar6 = *(uint *)(lVar10 + 0x14)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(lVar10 + 0x14)" (* "*") (cast_expression "(uint *)(lVar10 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x14)" (( "(") (binary_expression "lVar10 + 0x14" (identifier "lVar10") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar1 = *(uint *)(lVar10 + 0x10);" (assignment_expression "uVar1 = *(uint *)(lVar10 + 0x10)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(lVar10 + 0x10)" (* "*") (cast_expression "(uint *)(lVar10 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x10)" (( "(") (binary_expression "lVar10 + 0x10" (identifier "lVar10") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);" (assignment_expression "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" (identifier "uVar7") (= "=") (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18)" (( "(") (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" (identifier "uVar6") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" (( "(") (binary_expression "uVar6 & 0xff0000" (identifier "uVar6") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" (( "(") (binary_expression "uVar6 & 0xff00" (identifier "uVar6") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar6 << 0x18" (identifier "uVar6") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (if_statement "if (*(long *)(param_1 + 0x28) == 0) {\nLAB_002b3b94:\n                    \n    FUN_002a89d0();\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x28) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x28) == 0" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_002b3b94:\n                    \n    FUN_002a89d0();\n  }" ({ "{") (labeled_statement "LAB_002b3b94:\n                    \n    FUN_002a89d0();" (statement_identifier "LAB_002b3b94") (: ":") (expression_statement "FUN_002a89d0();" (call_expression "FUN_002a89d0()" (identifier "FUN_002a89d0") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (expression_statement "puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0);" (assignment_expression "puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0)" (identifier "puVar3") (= "=") (cast_expression "(uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0)" (identifier "FUN_0018a760") (argument_list "(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18,uVar7,1,0)" (( "(") (binary_expression "*(long *)(param_1 + 0x28) + 0x28" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x28")) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                                uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" (identifier "uVar1") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" (( "(") (binary_expression "uVar1 & 0xff0000" (identifier "uVar1") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" (( "(") (binary_expression "uVar1 & 0xff00" (identifier "uVar1") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar1 << 0x18" (identifier "uVar1") (<< "<<") (number_literal "0x18"))) (, ",") (identifier "uVar7") (, ",") (number_literal "1") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "uVar6 = *(uint *)(lVar10 + 0x18);" (assignment_expression "uVar6 = *(uint *)(lVar10 + 0x18)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(lVar10 + 0x18)" (* "*") (cast_expression "(uint *)(lVar10 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x18)" (( "(") (binary_expression "lVar10 + 0x18" (identifier "lVar10") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;" (assignment_expression "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (identifier "uVar6") (= "=") (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" (identifier "uVar6") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" (( "(") (binary_expression "uVar6 & 0xff0000" (identifier "uVar6") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" (( "(") (binary_expression "uVar6 & 0xff00" (identifier "uVar6") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar6 << 0x18" (identifier "uVar6") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (0xfeff < uVar6) {\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }" (if "if") (parenthesized_expression "(0xfeff < uVar6)" (( "(") (binary_expression "0xfeff < uVar6" (number_literal "0xfeff") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n    FUN_001da740(param_1 + 0x90);\n    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);\n  }" ({ "{") (expression_statement "FUN_001da740(param_1 + 0x90);" (call_expression "FUN_001da740(param_1 + 0x90)" (identifier "FUN_001da740") (argument_list "(param_1 + 0x90)" (( "(") (binary_expression "param_1 + 0x90" (identifier "param_1") (+ "+") (number_literal "0x90")) () ")"))) (; ";")) (expression_statement "uVar6 = uVar6 + *(int *)(param_1 + 0xa8);" (assignment_expression "uVar6 = uVar6 + *(int *)(param_1 + 0xa8)" (identifier "uVar6") (= "=") (binary_expression "uVar6 + *(int *)(param_1 + 0xa8)" (identifier "uVar6") (+ "+") (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")) () ")")))))) (; ";")) (} "}"))) (expression_statement "local_60 = param_5;" (assignment_expression "local_60 = param_5" (identifier "local_60") (= "=") (identifier "param_5")) (; ";")) (if_statement "if (param_4 == uVar6) {\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }" (if "if") (parenthesized_expression "(param_4 == uVar6)" (( "(") (binary_expression "param_4 == uVar6" (identifier "param_4") (== "==") (identifier "uVar6")) () ")")) (compound_statement "{\nLAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);\n    if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }\nLAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");\n    FUN_001d19e0(param_1,uVar4);\n    return;\n  }" ({ "{") (labeled_statement "LAB_002b39ab:\n    puVar8 = (uint *)(uVar7 + (long)puVar3);" (statement_identifier "LAB_002b39ab") (: ":") (expression_statement "puVar8 = (uint *)(uVar7 + (long)puVar3);" (assignment_expression "puVar8 = (uint *)(uVar7 + (long)puVar3)" (identifier "puVar8") (= "=") (cast_expression "(uint *)(uVar7 + (long)puVar3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + (long)puVar3)" (( "(") (binary_expression "uVar7 + (long)puVar3" (identifier "uVar7") (+ "+") (cast_expression "(long)puVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar3"))) () ")")))) (; ";"))) (if_statement "if (puVar3 < puVar8) {\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }" (if "if") (parenthesized_expression "(puVar3 < puVar8)" (( "(") (binary_expression "puVar3 < puVar8" (identifier "puVar3") (< "<") (identifier "puVar8")) () ")")) (compound_statement "{\n      do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);\n    }" ({ "{") (do_statement "do {\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      } while (puVar3 < puVar8);" (do "do") (compound_statement "{\n        while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }\n        uVar6 = puVar3[1];\n        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n        if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }\n        pcVar9 = (char *)0xffffffffffffffff;\n        __s = (char *)(uVar7 + local_60);\n        local_58 = &local_48;\n        if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }\n        FUN_00174550(&local_58,__s,pcVar9);\n        plVar2 = *(long **)(param_1 + 0x78);\n        if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }\n                    \n        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);\n        if (local_58 == &local_48) goto joined_r0x002b3b2b;\n        FUN_002f1e60();\n        puVar3 = puVar3 + 2;\n      }" ({ "{") (while_statement "while( true ) {\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          uVar6 = *puVar3;\n          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n          if (uVar6 == 1) break;\n          if (uVar6 == 0) {\n            return;\n          }\n          if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }\njoined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;\n          if (puVar8 <= puVar3) goto LAB_002b3a1e;\n        }" ({ "{") (expression_statement "uVar6 = *puVar3;" (assignment_expression "uVar6 = *puVar3" (identifier "uVar6") (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;" (assignment_expression "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (identifier "uVar6") (= "=") (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" (identifier "uVar6") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" (( "(") (binary_expression "uVar6 & 0xff0000" (identifier "uVar6") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" (( "(") (binary_expression "uVar6 & 0xff00" (identifier "uVar6") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar6 << 0x18" (identifier "uVar6") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (uVar6 == 1) break;" (if "if") (parenthesized_expression "(uVar6 == 1)" (( "(") (binary_expression "uVar6 == 1" (identifier "uVar6") (== "==") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (uVar6 == 0) {\n            return;\n          }" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar6 == 0xe) {\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }" (if "if") (parenthesized_expression "(uVar6 == 0xe)" (( "(") (binary_expression "uVar6 == 0xe" (identifier "uVar6") (== "==") (number_literal "0xe")) () ")")) (compound_statement "{\n            uVar6 = puVar3[1];\n            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";\n            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);\n            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;\n            sVar5 = strlen((char *)(uVar7 + local_60));\n            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);\n          }" ({ "{") (expression_statement "uVar6 = puVar3[1];" (assignment_expression "uVar6 = puVar3[1]" (identifier "uVar6") (= "=") (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pcVar9 = "DT_SONAME value out of range: %lld >= %lld";" (assignment_expression "pcVar9 = "DT_SONAME value out of range: %lld >= %lld"" (identifier "pcVar9") (= "=") (string_literal ""DT_SONAME value out of range: %lld >= %lld"" (" """) (string_content "DT_SONAME value out of range: %lld >= %lld") (" """))) (; ";")) (expression_statement "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18);" (assignment_expression "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18)" (identifier "uVar7") (= "=") (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18)" (( "(") (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                           uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" (identifier "uVar6") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" (( "(") (binary_expression "uVar6 & 0xff0000" (identifier "uVar6") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" (( "(") (binary_expression "uVar6 & 0xff00" (identifier "uVar6") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar6 << 0x18" (identifier "uVar6") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (if_statement "if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;" (if "if") (parenthesized_expression "((long)param_6 <= (long)uVar7)" (( "(") (binary_expression "(long)param_6 <= (long)uVar7" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (<= "<=") (cast_expression "(long)uVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar7"))) () ")")) (goto_statement "goto LAB_002b3a66;" (goto "goto") (statement_identifier "LAB_002b3a66") (; ";"))) (expression_statement "sVar5 = strlen((char *)(uVar7 + local_60));" (assignment_expression "sVar5 = strlen((char *)(uVar7 + local_60))" (identifier "sVar5") (= "=") (call_expression "strlen((char *)(uVar7 + local_60))" (identifier "strlen") (argument_list "((char *)(uVar7 + local_60))" (( "(") (cast_expression "(char *)(uVar7 + local_60)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + local_60)" (( "(") (binary_expression "uVar7 + local_60" (identifier "uVar7") (+ "+") (identifier "local_60")) () ")"))) () ")")))) (; ";")) (expression_statement "FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5);" (call_expression "FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5)" (identifier "FUN_002f9790") (argument_list "(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)\n                         ,sVar5)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) (, ",") (number_literal "0") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x58)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x58)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (, ",") (cast_expression "(char *)(uVar7 + local_60)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + local_60)" (( "(") (binary_expression "uVar7 + local_60" (identifier "uVar7") (+ "+") (identifier "local_60")) () ")"))) (, ",") (identifier "sVar5") () ")"))) (; ";")) (} "}"))) (labeled_statement "joined_r0x002b3b2b:\n          puVar3 = puVar3 + 2;" (statement_identifier "joined_r0x002b3b2b") (: ":") (expression_statement "puVar3 = puVar3 + 2;" (assignment_expression "puVar3 = puVar3 + 2" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 2" (identifier "puVar3") (+ "+") (number_literal "2"))) (; ";"))) (if_statement "if (puVar8 <= puVar3) goto LAB_002b3a1e;" (if "if") (parenthesized_expression "(puVar8 <= puVar3)" (( "(") (binary_expression "puVar8 <= puVar3" (identifier "puVar8") (<= "<=") (identifier "puVar3")) () ")")) (goto_statement "goto LAB_002b3a1e;" (goto "goto") (statement_identifier "LAB_002b3a1e") (; ";"))) (} "}"))) (expression_statement "uVar6 = puVar3[1];" (assignment_expression "uVar6 = puVar3[1]" (identifier "uVar6") (= "=") (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);" (assignment_expression "uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" (identifier "uVar7") (= "=") (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" (( "(") (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" (identifier "uVar6") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" (( "(") (binary_expression "uVar6 & 0xff0000" (identifier "uVar6") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" (( "(") (binary_expression "uVar6 & 0xff00" (identifier "uVar6") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar6 << 0x18" (identifier "uVar6") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (if_statement "if ((long)param_6 <= (long)uVar7) {\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }" (if "if") (parenthesized_expression "((long)param_6 <= (long)uVar7)" (( "(") (binary_expression "(long)param_6 <= (long)uVar7" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (<= "<=") (cast_expression "(long)uVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar7"))) () ")")) (compound_statement "{\n          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_002b3a66:\n          uVar4 = gettext(pcVar9);\n          FUN_001d19e0(param_1,uVar4,uVar7,param_6);\n          goto joined_r0x002b3b2b;\n        }" ({ "{") (expression_statement "pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";" (assignment_expression "pcVar9 = "DT_NEEDED value out of range: %lld >= %lld"" (identifier "pcVar9") (= "=") (string_literal ""DT_NEEDED value out of range: %lld >= %lld"" (" """) (string_content "DT_NEEDED value out of range: %lld >= %lld") (" """))) (; ";")) (labeled_statement "LAB_002b3a66:\n          uVar4 = gettext(pcVar9);" (statement_identifier "LAB_002b3a66") (: ":") (expression_statement "uVar4 = gettext(pcVar9);" (assignment_expression "uVar4 = gettext(pcVar9)" (identifier "uVar4") (= "=") (call_expression "gettext(pcVar9)" (identifier "gettext") (argument_list "(pcVar9)" (( "(") (identifier "pcVar9") () ")")))) (; ";"))) (expression_statement "FUN_001d19e0(param_1,uVar4,uVar7,param_6);" (call_expression "FUN_001d19e0(param_1,uVar4,uVar7,param_6)" (identifier "FUN_001d19e0") (argument_list "(param_1,uVar4,uVar7,param_6)" (( "(") (identifier "param_1") (, ",") (identifier "uVar4") (, ",") (identifier "uVar7") (, ",") (identifier "param_6") () ")"))) (; ";")) (goto_statement "goto joined_r0x002b3b2b;" (goto "goto") (statement_identifier "joined_r0x002b3b2b") (; ";")) (} "}"))) (expression_statement "pcVar9 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar9 = (char *)0xffffffffffffffff" (identifier "pcVar9") (= "=") (cast_expression "(char *)0xffffffffffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffffffffffff"))) (; ";")) (expression_statement "__s = (char *)(uVar7 + local_60);" (assignment_expression "__s = (char *)(uVar7 + local_60)" (identifier "__s") (= "=") (cast_expression "(char *)(uVar7 + local_60)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + local_60)" (( "(") (binary_expression "uVar7 + local_60" (identifier "uVar7") (+ "+") (identifier "local_60")) () ")")))) (; ";")) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" (identifier "local_58") (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (; ";")) (if_statement "if (__s != (char *)0x0) {\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }" (if "if") (parenthesized_expression "(__s != (char *)0x0)" (( "(") (binary_expression "__s != (char *)0x0" (identifier "__s") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          sVar5 = strlen(__s);\n          pcVar9 = __s + sVar5;\n        }" ({ "{") (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" (identifier "sVar5") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "pcVar9 = __s + sVar5;" (assignment_expression "pcVar9 = __s + sVar5" (identifier "pcVar9") (= "=") (binary_expression "__s + sVar5" (identifier "__s") (+ "+") (identifier "sVar5"))) (; ";")) (} "}"))) (expression_statement "FUN_00174550(&local_58,__s,pcVar9);" (call_expression "FUN_00174550(&local_58,__s,pcVar9)" (identifier "FUN_00174550") (argument_list "(&local_58,__s,pcVar9)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "__s") (, ",") (identifier "pcVar9") () ")"))) (; ";")) (expression_statement "plVar2 = *(long **)(param_1 + 0x78);" (assignment_expression "plVar2 = *(long **)(param_1 + 0x78)" (identifier "plVar2") (= "=") (pointer_expression "*(long **)(param_1 + 0x78)" (* "*") (cast_expression "(long **)(param_1 + 0x78)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")"))))) (; ";")) (if_statement "if (plVar2 != *(long **)(param_1 + 0x80)) {\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }" (if "if") (parenthesized_expression "(plVar2 != *(long **)(param_1 + 0x80))" (( "(") (binary_expression "plVar2 != *(long **)(param_1 + 0x80)" (identifier "plVar2") (!= "!=") (pointer_expression "*(long **)(param_1 + 0x80)" (* "*") (cast_expression "(long **)(param_1 + 0x80)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")"))))) () ")")) (compound_statement "{\n          *plVar2 = (long)(plVar2 + 2);\n          if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }\n          plVar2[1] = local_50;\n          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;\n          goto joined_r0x002b3b2b;\n        }" ({ "{") (expression_statement "*plVar2 = (long)(plVar2 + 2);" (assignment_expression "*plVar2 = (long)(plVar2 + 2)" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (= "=") (cast_expression "(long)(plVar2 + 2)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(plVar2 + 2)" (( "(") (binary_expression "plVar2 + 2" (identifier "plVar2") (+ "+") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (local_58 == &local_48) {\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }\n          else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }" (if "if") (parenthesized_expression "(local_58 == &local_48)" (( "(") (binary_expression "local_58 == &local_48" (identifier "local_58") (== "==") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) () ")")) (compound_statement "{\n            plVar2[2] = local_48;\n            plVar2[3] = lStack_40;\n          }" ({ "{") (expression_statement "plVar2[2] = local_48;" (assignment_expression "plVar2[2] = local_48" (subscript_expression "plVar2[2]" (identifier "plVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_48")) (; ";")) (expression_statement "plVar2[3] = lStack_40;" (assignment_expression "plVar2[3] = lStack_40" (subscript_expression "plVar2[3]" (identifier "plVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "lStack_40")) (; ";")) (} "}")) (else_clause "else {\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }" (else "else") (compound_statement "{\n            *plVar2 = (long)local_58;\n            plVar2[2] = local_48;\n          }" ({ "{") (expression_statement "*plVar2 = (long)local_58;" (assignment_expression "*plVar2 = (long)local_58" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (= "=") (cast_expression "(long)local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_58"))) (; ";")) (expression_statement "plVar2[2] = local_48;" (assignment_expression "plVar2[2] = local_48" (subscript_expression "plVar2[2]" (identifier "plVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_48")) (; ";")) (} "}")))) (expression_statement "plVar2[1] = local_50;" (assignment_expression "plVar2[1] = local_50" (subscript_expression "plVar2[1]" (identifier "plVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "*(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;" (assignment_expression "*(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20" (pointer_expression "*(long *)(param_1 + 0x78)" (* "*") (cast_expression "(long *)(param_1 + 0x78)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x78) + 0x20" (pointer_expression "*(long *)(param_1 + 0x78)" (* "*") (cast_expression "(long *)(param_1 + 0x78)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")")))) (+ "+") (number_literal "0x20"))) (; ";")) (goto_statement "goto joined_r0x002b3b2b;" (goto "goto") (statement_identifier "joined_r0x002b3b2b") (; ";")) (} "}"))) (expression_statement "FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);" (call_expression "FUN_0018bb70(param_1 + 0x70,plVar2,&local_58)" (identifier "FUN_0018bb70") (argument_list "(param_1 + 0x70,plVar2,&local_58)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) (, ",") (identifier "plVar2") (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (if_statement "if (local_58 == &local_48) goto joined_r0x002b3b2b;" (if "if") (parenthesized_expression "(local_58 == &local_48)" (( "(") (binary_expression "local_58 == &local_48" (identifier "local_58") (== "==") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) () ")")) (goto_statement "goto joined_r0x002b3b2b;" (goto "goto") (statement_identifier "joined_r0x002b3b2b") (; ";"))) (expression_statement "FUN_002f1e60();" (call_expression "FUN_002f1e60()" (identifier "FUN_002f1e60") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar3 = puVar3 + 2;" (assignment_expression "puVar3 = puVar3 + 2" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 2" (identifier "puVar3") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar3 < puVar8)" (( "(") (binary_expression "puVar3 < puVar8" (identifier "puVar3") (< "<") (identifier "puVar8")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_002b3a1e:\n    uVar4 = gettext("missing DT_NULL in dynamic segment");" (statement_identifier "LAB_002b3a1e") (: ":") (expression_statement "uVar4 = gettext("missing DT_NULL in dynamic segment");" (assignment_expression "uVar4 = gettext("missing DT_NULL in dynamic segment")" (identifier "uVar4") (= "=") (call_expression "gettext("missing DT_NULL in dynamic segment")" (identifier "gettext") (argument_list "("missing DT_NULL in dynamic segment")" (( "(") (string_literal ""missing DT_NULL in dynamic segment"" (" """) (string_content "missing DT_NULL in dynamic segment") (" """)) () ")")))) (; ";"))) (expression_statement "FUN_001d19e0(param_1,uVar4);" (call_expression "FUN_001d19e0(param_1,uVar4)" (identifier "FUN_001d19e0") (argument_list "(param_1,uVar4)" (( "(") (identifier "param_1") (, ",") (identifier "uVar4") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar6 < *(uint *)(param_1 + 0x38)) {\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }" (if "if") (parenthesized_expression "(uVar6 < *(uint *)(param_1 + 0x38))" (( "(") (binary_expression "uVar6 < *(uint *)(param_1 + 0x38)" (identifier "uVar6") (< "<") (pointer_expression "*(uint *)(param_1 + 0x38)" (* "*") (cast_expression "(uint *)(param_1 + 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (compound_statement "{\n    param_2 = (ulong)(uVar6 * 0x28) + param_2;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }\n    pcVar9 = "DYNAMIC section %u link %u is not a strtab";\n  }" ({ "{") (expression_statement "param_2 = (ulong)(uVar6 * 0x28) + param_2;" (assignment_expression "param_2 = (ulong)(uVar6 * 0x28) + param_2" (identifier "param_2") (= "=") (binary_expression "(ulong)(uVar6 * 0x28) + param_2" (call_expression "(ulong)(uVar6 * 0x28)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar6 * 0x28)" (( "(") (binary_expression "uVar6 * 0x28" (identifier "uVar6") (* "*") (number_literal "0x28")) () ")"))) (+ "+") (identifier "param_2"))) (; ";")) (if_statement "if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 4) == 0x3000000)" (( "(") (binary_expression "*(int *)(param_2 + 4) == 0x3000000" (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0x3000000")) () ")")) (compound_statement "{\n      uVar6 = *(uint *)(param_2 + 0x14);\n      uVar1 = *(uint *)(param_2 + 0x10);\n      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);\n      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;\n      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);\n      goto LAB_002b39ab;\n    }" ({ "{") (expression_statement "uVar6 = *(uint *)(param_2 + 0x14);" (assignment_expression "uVar6 = *(uint *)(param_2 + 0x14)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(param_2 + 0x14)" (* "*") (cast_expression "(uint *)(param_2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar1 = *(uint *)(param_2 + 0x10);" (assignment_expression "uVar1 = *(uint *)(param_2 + 0x10)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(param_2 + 0x10)" (* "*") (cast_expression "(uint *)(param_2 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18);" (assignment_expression "param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" (identifier "param_6") (= "=") (call_expression "(ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18)" (( "(") (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n                       uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" (identifier "uVar6") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" (( "(") (binary_expression "uVar6 & 0xff0000" (identifier "uVar6") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" (( "(") (binary_expression "uVar6 & 0xff00" (identifier "uVar6") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar6 << 0x18" (identifier "uVar6") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (if_statement "if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x28) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x28) == 0" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002b3b94;" (goto "goto") (statement_identifier "LAB_002b3b94") (; ";"))) (expression_statement "local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0);" (assignment_expression "local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0)" (identifier "local_60") (= "=") (call_expression "FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0)" (identifier "FUN_0018a760") (argument_list "(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18,param_6,0,0)" (( "(") (binary_expression "*(long *)(param_1 + 0x28) + 0x28" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x28")) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n                              uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" (identifier "uVar1") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" (( "(") (binary_expression "uVar1 & 0xff0000" (identifier "uVar1") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" (( "(") (binary_expression "uVar1 & 0xff00" (identifier "uVar1") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar1 << 0x18" (identifier "uVar1") (<< "<<") (number_literal "0x18"))) (, ",") (identifier "param_6") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (goto_statement "goto LAB_002b39ab;" (goto "goto") (statement_identifier "LAB_002b39ab") (; ";")) (} "}"))) (expression_statement "pcVar9 = "DYNAMIC section %u link %u is not a strtab";" (assignment_expression "pcVar9 = "DYNAMIC section %u link %u is not a strtab"" (identifier "pcVar9") (= "=") (string_literal ""DYNAMIC section %u link %u is not a strtab"" (" """) (string_content "DYNAMIC section %u link %u is not a strtab") (" """))) (; ";")) (} "}")) (else_clause "else {\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }" (else "else") (compound_statement "{\n    pcVar9 = "DYNAMIC section %u link out of range: %u";\n  }" ({ "{") (expression_statement "pcVar9 = "DYNAMIC section %u link out of range: %u";" (assignment_expression "pcVar9 = "DYNAMIC section %u link out of range: %u"" (identifier "pcVar9") (= "=") (string_literal ""DYNAMIC section %u link out of range: %u"" (" """) (string_content "DYNAMIC section %u link out of range: %u") (" """))) (; ";")) (} "}")))) (expression_statement "uVar4 = gettext(pcVar9);" (assignment_expression "uVar4 = gettext(pcVar9)" (identifier "uVar4") (= "=") (call_expression "gettext(pcVar9)" (identifier "gettext") (argument_list "(pcVar9)" (( "(") (identifier "pcVar9") () ")")))) (; ";")) (expression_statement "FUN_001d19e0(param_1,uVar4,param_3,uVar6);" (call_expression "FUN_001d19e0(param_1,uVar4,param_3,uVar6)" (identifier "FUN_001d19e0") (argument_list "(param_1,uVar4,param_3,uVar6)" (( "(") (identifier "param_1") (, ",") (identifier "uVar4") (, ",") (identifier "param_3") (, ",") (identifier "uVar6") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void read_dynamic(Sized_dynobj<32,_true> * this, uchar * pshdrs, uint
   dynamic_shndx, uint strtab_shndx, uchar * strtabu, off_t strtab_size) */

void __thiscall
gold::Sized_dynobj<32,_true>::read_dynamic
          (Sized_dynobj<32,_true> *this,type_4 *var_5,type_2 var_6,type_2 var_14,
          type_4 *strtabu,off_t var_18)

{
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>var_28
  *var_29;
  type_1 *ppbVar2;
  type_2 var_12;
  type_3 __position;
  type_2 *var_16;
  size_t var_25;
  type_2 var_8;
  type_4 *puVar7;
  type_5 var_15;
  type_2 *var_17;
  char *pcVar10;
  type_6 *var_9;
  type_4 *var_24;
  type_4 *var_20;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> var_4;
  
  if (*(int *)(var_5 + (type_5)(var_6 * 0x28) + 4) != 0x6000000) {
                    /* WARNING: Subroutine does not return */
    var_7("../../gold/dynobj.cc",0x100,"read_dynamic");
  }
  var_8 = *(type_2 *)(var_5 + (type_5)(var_6 * 0x28) + 0x14);
  var_12 = *(type_2 *)(var_5 + (type_5)(var_6 * 0x28) + 0x10);
  var_9 = (this->super_Dynobj).super_Object.input_file_;
  var_15 = (type_5)(var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 | var_8 << 0x18);
  if (var_9 == (type_6 *)0x0) {
LAB_002b3b94:
                    /* WARNING: Subroutine does not return */
    Object::var_10((type_7 *)var_9);
  }
  var_16 = (type_2 *)File_read::var_11(&var_9->file_,(this->super_Dynobj).super_Object.offset_,
                                       (type_5)(var_12 >> 0x18 | (var_12 & 0xff0000) >> 8 |
                                               (var_12 & 0xff00) << 8 | var_12 << 0x18),var_15,true,
                                       false);
  var_8 = *(type_2 *)(var_5 + (type_5)(var_6 * 0x28) + 0x18);
  var_8 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 | var_8 << 0x18;
  if (0xfeff < var_8) {
    elfcpp::Elf_file<32,_true,_gold::type_7>::var_13(&this->elf_file_);
    var_8 = var_8 + (this->elf_file_).large_shndx_offset_;
  }
  var_20 = strtabu;
  if (var_14 == var_8) {
LAB_002b39ab:
    var_17 = (type_2 *)(var_15 + (long)var_16);
    if (var_16 < var_17) {
      var_29 = &var_4.field_2;
      do {
        while( true ) {
          var_8 = *var_16;
          var_8 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 | var_8 << 0x18;
          if (var_8 == 1) break;
          if (var_8 == 0) {
            return;
          }
          if (var_8 == 0xe) {
            var_8 = var_16[1];
            pcVar10 = "DT_SONAME value out of range: %lld >= %lld";
            var_15 = (type_5)(var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 |
                           var_8 << 0x18);
            if (var_18 <= (long)var_15) goto LAB_002b3a66;
            var_25 = var_19((char *)(var_20 + var_15));
            std::string::var_21
                      ((type_8 *)&(this->super_Dynobj).soname_,0,
                       (this->super_Dynobj).soname_._M_string_length,(char *)(var_20 + var_15),
                       var_25);
          }
joined_r0x002b3b2b:
          var_16 = var_16 + 2;
          if (var_17 <= var_16) goto LAB_002b3a1e;
        }
        var_8 = var_16[1];
        var_15 = (type_5)(var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 |
                       var_8 << 0x18);
        if (var_18 <= (long)var_15) {
          pcVar10 = "DT_NEEDED value out of range: %lld >= %lld";
LAB_002b3a66:
          pcVar10 = (char *)var_22(pcVar10);
          Object::var_23((type_7 *)this,pcVar10,var_15,var_18);
          goto joined_r0x002b3b2b;
        }
        puVar7 = (type_4 *)0xffffffffffffffff;
        var_24 = var_20 + var_15;
        var_4._M_dataplus._M_p = (type_1)var_29;
        if (var_24 != (type_4 *)0x0) {
          var_25 = var_19((char *)var_24);
          puVar7 = var_24 + var_25;
        }
        std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
        var_26<var_27*>(&var_4,var_24,puVar7);
        __position._M_current =
             (this->super_Dynobj).needed_.
             super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
             ._M_impl._M_finish;
        if (__position._M_current !=
            (this->super_Dynobj).needed_.
            super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
            ._M_impl._M_end_of_storage) {
          ((__position._M_current)->_M_dataplus)._M_p = (type_1)&(__position._M_current)->field_2;
          if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_28
               *)var_4._M_dataplus._M_p == var_29) {
            ((__position._M_current)->field_2)._M_allocated_capacity =
                 var_4.field_2._M_allocated_capacity;
            *(type_9 *)((long)&(__position._M_current)->field_2 + 8) = var_4.field_2._8_8_;
          }
          else {
            ((__position._M_current)->_M_dataplus)._M_p = var_4._M_dataplus._M_p;
            ((__position._M_current)->field_2)._M_allocated_capacity =
                 var_4.field_2._M_allocated_capacity;
          }
          (__position._M_current)->_M_string_length = var_4._M_string_length;
          ppbVar2 = &(this->super_Dynobj).needed_.
                     super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
                     ._M_impl._M_finish;
          *ppbVar2 = *ppbVar2 + 1;
          goto joined_r0x002b3b2b;
        }
                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */
        std::
        vector<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
        ::
        _M_realloc_insert<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>
                  (&(this->super_Dynobj).needed_,__position,&var_4);
        if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_28
             *)var_4._M_dataplus._M_p == var_29) goto joined_r0x002b3b2b;
        var_30(var_4._M_dataplus._M_p);
        var_16 = var_16 + 2;
      } while (var_16 < var_17);
    }
LAB_002b3a1e:
    pcVar10 = (char *)var_22("missing DT_NULL in dynamic segment");
    Object::var_23((type_7 *)this,pcVar10);
    return;
  }
  if (var_8 < (this->super_Dynobj).super_Object.shnum_) {
    if (*(int *)(var_5 + (type_5)(var_8 * 0x28) + 4) == 0x3000000) {
      var_12 = *(type_2 *)(var_5 + (type_5)(var_8 * 0x28) + 0x14);
      var_8 = *(type_2 *)(var_5 + (type_5)(var_8 * 0x28) + 0x10);
      var_9 = (this->super_Dynobj).super_Object.input_file_;
      var_18 = (off_t)(var_12 >> 0x18 | (var_12 & 0xff0000) >> 8 | (var_12 & 0xff00) << 8 |
                           var_12 << 0x18);
      if (var_9 == (type_6 *)0x0) goto LAB_002b3b94;
      var_20 = File_read::var_11(&var_9->file_,(this->super_Dynobj).super_Object.offset_,
                                     (type_5)(var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 |
                                             (var_8 & 0xff00) << 8 | var_8 << 0x18),var_18,
                                     false,false);
      goto LAB_002b39ab;
    }
    pcVar10 = "DYNAMIC section %u link %u is not a strtab";
  }
  else {
    pcVar10 = "DYNAMIC section %u link out of range: %u";
  }
  pcVar10 = (char *)var_22(pcVar10);
  Object::var_23((type_7 *)this,pcVar10,(type_5)var_6,var_8);
  return;
}


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

void MASKED(long param_1,long param_2,int param_3,uint param_4,long param_5,ulong param_6)

{
  uint uVar1;
  long *plVar2;
  uint *puVar3;
  undefined8 uVar4;
  size_t sVar5;
  uint uVar6;
  ulong uVar7;
  uint *puVar8;
  char *pcVar9;
  long lVar10;
  char *__s;
  long local_60;
  long *local_58;
  long local_50;
  long local_48;
  long lStack_40;
  
  lVar10 = (ulong)(uint)(param_3 * 0x28) + param_2;
  if (*(int *)(lVar10 + 4) != 0x6000000) {
                    /* WARNING: Subroutine does not return */
    FUN_0018ff20("../../gold/dynobj.cc",0x100,"read_dynamic");
  }
  uVar6 = *(uint *)(lVar10 + 0x14);
  uVar1 = *(uint *)(lVar10 + 0x10);
  uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18);
  if (*(long *)(param_1 + 0x28) == 0) {
LAB_002b3b94:
                    /* WARNING: Subroutine does not return */
    FUN_002a89d0();
  }
  puVar3 = (uint *)FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),
                                uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |
                                uVar1 << 0x18,uVar7,1,0);
  uVar6 = *(uint *)(lVar10 + 0x18);
  uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;
  if (0xfeff < uVar6) {
    FUN_001da740(param_1 + 0x90);
    uVar6 = uVar6 + *(int *)(param_1 + 0xa8);
  }
  local_60 = param_5;
  if (param_4 == uVar6) {
LAB_002b39ab:
    puVar8 = (uint *)(uVar7 + (long)puVar3);
    if (puVar3 < puVar8) {
      do {
        while( true ) {
          uVar6 = *puVar3;
          uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;
          if (uVar6 == 1) break;
          if (uVar6 == 0) {
            return;
          }
          if (uVar6 == 0xe) {
            uVar6 = puVar3[1];
            pcVar9 = "DT_SONAME value out of range: %lld >= %lld";
            uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |
                           uVar6 << 0x18);
            if ((long)param_6 <= (long)uVar7) goto LAB_002b3a66;
            sVar5 = strlen((char *)(uVar7 + local_60));
            FUN_002f9790(param_1 + 0x50,0,*(undefined8 *)(param_1 + 0x58),(char *)(uVar7 + local_60)
                         ,sVar5);
          }
joined_r0x002b3b2b:
          puVar3 = puVar3 + 2;
          if (puVar8 <= puVar3) goto LAB_002b3a1e;
        }
        uVar6 = puVar3[1];
        uVar7 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |
                       uVar6 << 0x18);
        if ((long)param_6 <= (long)uVar7) {
          pcVar9 = "DT_NEEDED value out of range: %lld >= %lld";
LAB_002b3a66:
          uVar4 = gettext(pcVar9);
          FUN_001d19e0(param_1,uVar4,uVar7,param_6);
          goto joined_r0x002b3b2b;
        }
        pcVar9 = (char *)0xffffffffffffffff;
        __s = (char *)(uVar7 + local_60);
        local_58 = &local_48;
        if (__s != (char *)0x0) {
          sVar5 = strlen(__s);
          pcVar9 = __s + sVar5;
        }
        FUN_00174550(&local_58,__s,pcVar9);
        plVar2 = *(long **)(param_1 + 0x78);
        if (plVar2 != *(long **)(param_1 + 0x80)) {
          *plVar2 = (long)(plVar2 + 2);
          if (local_58 == &local_48) {
            plVar2[2] = local_48;
            plVar2[3] = lStack_40;
          }
          else {
            *plVar2 = (long)local_58;
            plVar2[2] = local_48;
          }
          plVar2[1] = local_50;
          *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 0x20;
          goto joined_r0x002b3b2b;
        }
                    /* try { // try from 002b3b68 to 002b3b6c has its CatchHandler @ 002b3bb1 */
        FUN_0018bb70(param_1 + 0x70,plVar2,&local_58);
        if (local_58 == &local_48) goto joined_r0x002b3b2b;
        FUN_002f1e60();
        puVar3 = puVar3 + 2;
      } while (puVar3 < puVar8);
    }
LAB_002b3a1e:
    uVar4 = gettext("missing DT_NULL in dynamic segment");
    FUN_001d19e0(param_1,uVar4);
    return;
  }
  if (uVar6 < *(uint *)(param_1 + 0x38)) {
    param_2 = (ulong)(uVar6 * 0x28) + param_2;
    if (*(int *)(param_2 + 4) == 0x3000000) {
      uVar6 = *(uint *)(param_2 + 0x14);
      uVar1 = *(uint *)(param_2 + 0x10);
      param_6 = (ulong)(uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |
                       uVar6 << 0x18);
      if (*(long *)(param_1 + 0x28) == 0) goto LAB_002b3b94;
      local_60 = FUN_0018a760(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),
                              uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |
                              uVar1 << 0x18,param_6,0,0);
      goto LAB_002b39ab;
    }
    pcVar9 = "DYNAMIC section %u link %u is not a strtab";
  }
  else {
    pcVar9 = "DYNAMIC section %u link out of range: %u";
  }
  uVar4 = gettext(pcVar9);
  FUN_001d19e0(param_1,uVar4,param_3,uVar6);
  return;
}

