
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* 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;
  Input_file *pIVar3;
  iterator __position;
  uint *puVar4;
  char *pcVar5;
  size_t sVar6;
  uchar *puVar7;
  uint uVar8;
  uint uVar9;
  uchar *__s;
  uint uVar10;
  uint *puVar11;
  Object *in_stack_ffffffa4;
  uint local_54;
  uint local_4c;
  int local_48;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_34;
  
  if (*(int *)(pshdrs + dynamic_shndx * 0x28 + 4) != 0x6000000) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/dynobj.cc",0x100,"read_dynamic");
  }
  uVar10 = *(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x14);
  uVar9 = *(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x10);
  pIVar3 = (this->super_Dynobj).super_Object.input_file_;
  uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;
  if (pIVar3 == (Input_file *)0x0) {
LAB_000cf8fd:
                    /* WARNING: Subroutine does not return */
    Object::input_file(in_stack_ffffffa4);
  }
  puVar4 = (uint *)File_read::get_view(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,
                                       (ulonglong)
                                       (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 |
                                        (uVar9 & 0xff00) << 8 | uVar9 << 0x18),uVar10,true,false);
  uVar9 = *(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x18);
  uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
  if (0xfeff < uVar9) {
    elfcpp::Elf_file<32,_true,_gold::Object>::initialize_shnum(&this->elf_file_);
    uVar9 = uVar9 + (this->elf_file_).large_shndx_offset_;
  }
  if (strtab_shndx == uVar9) {
LAB_000cf6c6:
    local_48 = (int)((ulonglong)strtab_size >> 0x20);
    local_4c = (uint)strtab_size;
    puVar11 = (uint *)(uVar10 + (int)puVar4);
    if (puVar4 < puVar11) {
      paVar1 = &local_34.field_2;
      do {
        while( true ) {
          uVar10 = *puVar4;
          uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |
                   uVar10 << 0x18;
          if (uVar10 == 1) break;
          if (uVar10 == 0) {
            return;
          }
          if (uVar10 == 0xe) {
            uVar10 = puVar4[1];
            local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |
                       uVar10 << 0x18;
            if ((int)(uint)(local_54 < local_4c) <= -local_48) {
              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";
              goto LAB_000cf70b;
            }
            sVar6 = strlen((char *)(strtabu + local_54));
            std::string::_M_replace
                      ((string *)&(this->super_Dynobj).soname_,0,
                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),
                       sVar6);
          }
joined_r0x000cf86a:
          puVar4 = puVar4 + 2;
          if (puVar11 <= puVar4) goto LAB_000cf739;
        }
        uVar10 = puVar4[1];
        local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |
                   uVar10 << 0x18;
        if ((int)(uint)(local_54 < local_4c) <= -local_48) {
          pcVar5 = "DT_NEEDED value out of range: %lld >= %lld";
LAB_000cf70b:
          pcVar5 = (char *)gettext(pcVar5);
          Object::error((Object *)this,pcVar5,local_54,0,local_4c,local_48);
          goto joined_r0x000cf86a;
        }
        __s = strtabu + local_54;
        puVar7 = (uchar *)0xffffffff;
        local_34._M_dataplus._M_p = (pointer)paVar1;
        if (__s != (uchar *)0x0) {
          sVar6 = strlen((char *)__s);
          puVar7 = __s + sVar6;
        }
        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
        _M_construct<char_const*>(&local_34,__s,puVar7,0);
        __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_34._M_dataplus._M_p == paVar1) {
            ((__position._M_current)->field_2)._M_allocated_capacity =
                 local_34.field_2._M_allocated_capacity;
            *(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;
            *(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;
            *(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;
          }
          else {
            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;
            ((__position._M_current)->field_2)._M_allocated_capacity =
                 local_34.field_2._M_allocated_capacity;
          }
          (__position._M_current)->_M_string_length = local_34._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_r0x000cf86a;
        }
                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */
        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_34);
        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
             *)local_34._M_dataplus._M_p == paVar1) goto joined_r0x000cf86a;
        puVar4 = puVar4 + 2;
        operator_delete(local_34._M_dataplus._M_p);
      } while (puVar4 < puVar11);
    }
LAB_000cf739:
    pcVar5 = (char *)gettext("missing DT_NULL in dynamic segment");
    Object::error((Object *)this,pcVar5);
    return;
  }
  if (uVar9 < (this->super_Dynobj).super_Object.shnum_) {
    if (*(int *)(pshdrs + uVar9 * 0x28 + 4) == 0x3000000) {
      uVar8 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x14);
      uVar9 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x10);
      pIVar3 = (this->super_Dynobj).super_Object.input_file_;
      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
      strtab_size = (off_t)uVar8;
      if (pIVar3 == (Input_file *)0x0) goto LAB_000cf8fd;
      strtabu = File_read::get_view(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,
                                    (ulonglong)
                                    (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8
                                    | uVar9 << 0x18),uVar8,false,false);
      goto LAB_000cf6c6;
    }
    pcVar5 = "DYNAMIC section %u link %u is not a strtab";
  }
  else {
    pcVar5 = "DYNAMIC section %u link out of range: %u";
  }
  pcVar5 = (char *)gettext(pcVar5);
  Object::error((Object *)this,pcVar5,dynamic_shndx,uVar9);
  return;
}



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

void FUN_000cf590(int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,
                 int param_7)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  uint *puVar4;
  undefined4 uVar5;
  size_t sVar6;
  char *pcVar7;
  undefined4 in_ECX;
  uint uVar8;
  char *__s;
  uint uVar9;
  uint *puVar10;
  uint local_54;
  uint local_4c;
  int local_48;
  int *local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  
  local_48 = param_7;
  local_4c = param_6;
  iVar1 = param_2 + param_3 * 0x28;
  if (*(int *)(iVar1 + 4) != 0x6000000) {
                    /* WARNING: Subroutine does not return */
    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);
  }
  uVar9 = *(uint *)(iVar1 + 0x14);
  uVar8 = *(uint *)(iVar1 + 0x10);
  uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
  if (*(int *)(param_1 + 0x1c) == 0) {
LAB_000cf8fd:
                    /* WARNING: Subroutine does not return */
    FUN_000c48d0();
  }
  puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),
                                *(undefined4 *)(param_1 + 0x24),
                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |
                                uVar8 << 0x18,0,uVar9,1,0);
  uVar8 = *(uint *)(iVar1 + 0x18);
  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
  if (0xfeff < uVar8) {
    FUN_000b30c0(param_1 + 0x60);
    uVar8 = uVar8 + *(int *)(param_1 + 0x74);
  }
  if (param_4 == uVar8) {
LAB_000cf6c6:
    puVar10 = (uint *)(uVar9 + (int)puVar4);
    if (puVar4 < puVar10) {
      do {
        while( true ) {
          uVar9 = *puVar4;
          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
          if (uVar9 == 1) break;
          if (uVar9 == 0) {
            return;
          }
          if (uVar9 == 0xe) {
            uVar9 = puVar4[1];
            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |
                       uVar9 << 0x18;
            if ((int)(uint)(local_54 < local_4c) <= -local_48) {
              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";
              goto LAB_000cf70b;
            }
            sVar6 = strlen((char *)(local_54 + param_5));
            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),
                         (char *)(local_54 + param_5),sVar6);
          }
joined_r0x000cf86a:
          puVar4 = puVar4 + 2;
          if (puVar10 <= puVar4) goto LAB_000cf739;
        }
        uVar9 = puVar4[1];
        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
        if ((int)(uint)(local_54 < local_4c) <= -local_48) {
          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";
LAB_000cf70b:
          uVar5 = gettext(pcVar7);
          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);
          goto joined_r0x000cf86a;
        }
        __s = (char *)(local_54 + param_5);
        pcVar7 = (char *)0xffffffff;
        local_34 = &local_2c;
        if (__s != (char *)0x0) {
          sVar6 = strlen(__s);
          pcVar7 = __s + sVar6;
        }
        FUN_000a8880(&local_34,__s,pcVar7,0);
        piVar3 = *(int **)(param_1 + 0x54);
        if (piVar3 != *(int **)(param_1 + 0x58)) {
          *piVar3 = (int)(piVar3 + 2);
          if (local_34 == &local_2c) {
            piVar3[2] = local_2c;
            piVar3[3] = local_28;
            piVar3[4] = local_24;
            piVar3[5] = local_20;
          }
          else {
            *piVar3 = (int)local_34;
            piVar3[2] = local_2c;
          }
          piVar3[1] = local_30;
          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;
          goto joined_r0x000cf86a;
        }
                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */
        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);
        if (local_34 == &local_2c) goto joined_r0x000cf86a;
        puVar4 = puVar4 + 2;
        FUN_00248220(local_34);
      } while (puVar4 < puVar10);
    }
LAB_000cf739:
    uVar5 = gettext("missing DT_NULL in dynamic segment");
    FUN_00121be0(param_1,uVar5);
    return;
  }
  if (uVar8 < *(uint *)(param_1 + 0x28)) {
    param_2 = param_2 + uVar8 * 0x28;
    if (*(int *)(param_2 + 4) == 0x3000000) {
      uVar8 = *(uint *)(param_2 + 0x14);
      local_48 = 0;
      uVar2 = *(uint *)(param_2 + 0x10);
      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;
      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),
                             *(undefined4 *)(param_1 + 0x24),
                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |
                             uVar2 << 0x18,0,local_4c,0,0);
      goto LAB_000cf6c6;
    }
    pcVar7 = "DYNAMIC section %u link %u is not a strtab";
  }
  else {
    pcVar7 = "DYNAMIC section %u link out of range: %u";
  }
  uVar5 = gettext(pcVar7);
  FUN_00121be0(param_1,uVar5,param_3,uVar8);
  return;
}


CALL 0x000b4846
ADD EAX,0x344a6b
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x4c
MOV EDX,dword ptr [EBP + 0x20]
MOV EDI,dword ptr [EBP + 0xc]
MOV dword ptr [EBP + -0x3c],EAX
MOV EAX,dword ptr [EBP + 0x1c]
MOV dword ptr [EBP + -0x44],EDX
MOV dword ptr [EBP + -0x48],EAX
MOV EAX,dword ptr [EBP + 0x10]
LEA EAX,[EAX + EAX*0x4]
LEA EDX,[EDI + EAX*0x8]
CMP dword ptr [EDX + 0x4],0x6000000
JNZ 0x000cf902
MOV EAX,dword ptr [EBP + 0x8]
MOV EDI,dword ptr [EDX + 0x14]
XOR EBX,EBX
MOV ECX,dword ptr [EDX + 0x10]
MOV EAX,dword ptr [EAX + 0x1c]
BSWAP EDI
BSWAP ECX
TEST EAX,EAX
JZ 0x000cf8fd
PUSH 0x0
ADD EAX,0x1c
PUSH 0x1
PUSH EDI
PUSH EBX
MOV EBX,dword ptr [EBP + -0x3c]
PUSH ECX
MOV ECX,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x40],EDX
PUSH dword ptr [ECX + 0x24]
PUSH dword ptr [ECX + 0x20]
PUSH EAX
CALL 0x000d4670
MOV EDX,dword ptr [EBP + -0x40]
ADD ESP,0x20
MOV ESI,EAX
MOV EDX,dword ptr [EDX + 0x18]
BSWAP EDX
CMP EDX,0xfeff
JA 0x000cf7d0
CMP dword ptr [EBP + 0x14],EDX
JZ 0x000cf6c6
MOV EAX,dword ptr [EBP + 0x8]
CMP dword ptr [EAX + 0x28],EDX
JBE 0x000cf8c0
MOV EBX,dword ptr [EBP + 0xc]
LEA EAX,[EDX + EDX*0x4]
MOV dword ptr [EBP + -0x48],EDX
LEA EAX,[EBX + EAX*0x8]
CMP dword ptr [EAX + 0x4],0x3000000
JZ 0x000cf680
MOV ESI,dword ptr [EBP + -0x3c]
SUB ESP,0xc
LEA EAX,[ESI + 0xffee540c]
MOV EBX,ESI
PUSH EAX
CALL 0x0002c440
MOV EDX,dword ptr [EBP + -0x48]
ADD ESP,0x10
PUSH EDX
PUSH dword ptr [EBP + 0x10]
PUSH EAX
PUSH dword ptr [EBP + 0x8]
CALL 0x00121be0
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EBX,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [EAX + 0x14]
MOV dword ptr [EBP + -0x44],0x0
XOR EDX,EDX
MOV EAX,dword ptr [EAX + 0x10]
MOV EBX,dword ptr [EBX + 0x1c]
BSWAP ECX
MOV dword ptr [EBP + -0x48],ECX
BSWAP EAX
TEST EBX,EBX
JZ 0x000cf8fd
PUSH 0x0
ADD EBX,0x1c
PUSH 0x0
PUSH ECX
PUSH EDX
PUSH EAX
MOV EAX,dword ptr [EBP + 0x8]
PUSH dword ptr [EAX + 0x24]
PUSH dword ptr [EAX + 0x20]
PUSH EBX
MOV EBX,dword ptr [EBP + -0x3c]
CALL 0x000d4670
ADD ESP,0x20
MOV dword ptr [EBP + 0x18],EAX
ADD EDI,ESI
CMP ESI,EDI
JNC 0x000cf739
LEA EAX,[EBP + -0x28]
MOV dword ptr [EBP + -0x40],EAX
MOV EAX,dword ptr [ESI]
BSWAP EAX
CMP EAX,0x1
JZ 0x000cf7a8
TEST EAX,EAX
JZ 0x000cf671
CMP EAX,0xe
JNZ 0x000cf732
MOV EAX,dword ptr [ESI + 0x4]
XOR ECX,ECX
MOV EBX,ECX
MOV dword ptr [EBP + -0x4c],ECX
BSWAP EAX
CMP EAX,dword ptr [EBP + -0x48]
SBB EBX,dword ptr [EBP + -0x44]
MOV dword ptr [EBP + -0x50],EAX
JL 0x000cf768
MOV ECX,dword ptr [EBP + -0x3c]
SUB ESP,0xc
LEA EAX,[ECX + 0xffee5438]
PUSH EAX
MOV EBX,ECX
CALL 0x0002c440
POP EBX
MOV ECX,dword ptr [EBP + -0x4c]
POP EDX
MOV EDX,dword ptr [EBP + -0x50]
PUSH dword ptr [EBP + -0x44]
MOV EBX,dword ptr [EBP + -0x3c]
PUSH dword ptr [EBP + -0x48]
PUSH ECX
PUSH EDX
PUSH EAX
PUSH dword ptr [EBP + 0x8]
CALL 0x00121be0
ADD ESP,0x20
ADD ESI,0x8
CMP ESI,EDI
JC 0x000cf6d2
MOV ESI,dword ptr [EBP + -0x3c]
SUB ESP,0xc
LEA EAX,[ESI + 0xffee5490]
MOV EBX,ESI
PUSH EAX
CALL 0x0002c440
POP EDX
POP ECX
PUSH EAX
PUSH dword ptr [EBP + 0x8]
CALL 0x00121be0
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
ADD EAX,dword ptr [EBP + 0x18]
MOV EBX,dword ptr [EBP + -0x3c]
ADD ESI,0x8
PUSH EAX
MOV dword ptr [EBP + -0x50],EAX
CALL 0x0002c330
MOV EDX,dword ptr [EBP + -0x50]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [EBP + 0x8]
PUSH EDX
ADD EAX,0x38
PUSH dword ptr [EAX + 0x4]
PUSH 0x0
PUSH EAX
CALL 0x00250e60
ADD ESP,0x20
CMP ESI,EDI
JC 0x000cf6d2
JMP 0x000cf739
MOV EBX,dword ptr [ESI + 0x4]
XOR ECX,ECX
MOV EAX,ECX
MOV dword ptr [EBP + -0x4c],ECX
BSWAP EBX
CMP EBX,dword ptr [EBP + -0x48]
SBB EAX,dword ptr [EBP + -0x44]
MOV dword ptr [EBP + -0x50],EBX
JL 0x000cf7f8
MOV ECX,dword ptr [EBP + -0x3c]
SUB ESP,0xc
LEA EAX,[ECX + 0xffee5464]
JMP 0x000cf70b
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV dword ptr [EBP + -0x40],EDX
ADD EAX,0x60
PUSH EAX
CALL 0x000b30c0
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + -0x40]
ADD ESP,0x10
ADD EDX,dword ptr [EAX + 0x74]
JMP 0x000cf61d
MOV EAX,dword ptr [EBP + -0x40]
ADD EBX,dword ptr [EBP + 0x18]
MOV EDX,EBX
MOV dword ptr [EBP + -0x30],EAX
MOV EAX,0xffffffff
JZ 0x000cf821
SUB ESP,0xc
MOV dword ptr [EBP + -0x50],EBX
PUSH EBX
MOV EBX,dword ptr [EBP + -0x3c]
CALL 0x0002c330
MOV EDX,dword ptr [EBP + -0x50]
ADD ESP,0x10
ADD EAX,EDX
LEA EBX,[EBP + -0x30]
PUSH 0x0
PUSH EAX
PUSH EDX
PUSH EBX
CALL 0x000a8880
MOV EAX,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + 0x54]
CMP EAX,dword ptr [ECX + 0x58]
JZ 0x000cf878
LEA EDX,[EAX + 0x8]
MOV dword ptr [EAX],EDX
MOV EDX,dword ptr [EBP + -0x30]
CMP EDX,dword ptr [EBP + -0x40]
JZ 0x000cf8e0
MOV dword ptr [EAX],EDX
MOV EDX,dword ptr [EBP + -0x28]
MOV dword ptr [EAX + 0x8],EDX
MOV EDX,dword ptr [EBP + -0x2c]
ADD ESI,0x8
MOV dword ptr [EAX + 0x4],EDX
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x54],0x18
CMP ESI,EDI
JC 0x000cf6d2
JMP 0x000cf739
SUB ESP,0x4
PUSH EBX
PUSH EAX
MOV EAX,dword ptr [EBP + 0x8]
ADD EAX,0x50
PUSH EAX
CALL 0x000ca560
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x30]
CMP EAX,dword ptr [EBP + -0x40]
JZ 0x000cf732
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x3c]
ADD ESI,0x8
PUSH EAX
CALL 0x00248220
ADD ESP,0x10
CMP ESI,EDI
JC 0x000cf6d2
JMP 0x000cf739
MOV EDI,dword ptr [EBP + -0x3c]
SUB ESP,0xc
MOV dword ptr [EBP + -0x48],EDX
LEA EAX,[EDI + 0xffee53e0]
MOV EBX,EDI
PUSH EAX
JMP 0x000cf656
MOV EDX,dword ptr [EBP + -0x28]
MOV dword ptr [EAX + 0x8],EDX
MOV EDX,dword ptr [EBP + -0x24]
MOV dword ptr [EAX + 0xc],EDX
MOV EDX,dword ptr [EBP + -0x20]
MOV dword ptr [EAX + 0x10],EDX
MOV EDX,dword ptr [EBP + -0x1c]
MOV dword ptr [EAX + 0x14],EDX
JMP 0x000cf858
CALL 0x000c48d0
MOV EBX,dword ptr [EBP + -0x3c]
PUSH ECX
LEA EAX,[EBX + 0xffee57bc]
PUSH EAX
LEA EAX,[EBX + 0xffee5170]
PUSH 0x100
PUSH EAX
CALL 0x000da200
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_000cf590(int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,\n                 int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  uint *puVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  char *pcVar7;\n  undefined4 in_ECX;\n  uint uVar8;\n  char *__s;\n  uint uVar9;\n  uint *puVar10;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  local_48 = param_7;\n  local_4c = param_6;\n  iVar1 = param_2 + param_3 * 0x28;\n  if (*(int *)(iVar1 + 4) != 0x6000000) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }\n  uVar9 = *(uint *)(iVar1 + 0x14);\n  uVar8 = *(uint *)(iVar1 + 0x10);\n  uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n  if (*(int *)(param_1 + 0x1c) == 0) {\nLAB_000cf8fd:\n                    /* WARNING: Subroutine does not return */\n    FUN_000c48d0();\n  }\n  puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0);\n  uVar8 = *(uint *)(iVar1 + 0x18);\n  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (0xfeff < uVar8) {\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }\n  if (param_4 == uVar8) {\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }\n  if (uVar8 < *(uint *)(param_1 + 0x28)) {\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar5 = gettext(pcVar7);\n  FUN_00121be0(param_1,uVar5,param_3,uVar8);\n  return;\n}\n\n" comment (function_definition "void FUN_000cf590(int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,\n                 int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  uint *puVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  char *pcVar7;\n  undefined4 in_ECX;\n  uint uVar8;\n  char *__s;\n  uint uVar9;\n  uint *puVar10;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  local_48 = param_7;\n  local_4c = param_6;\n  iVar1 = param_2 + param_3 * 0x28;\n  if (*(int *)(iVar1 + 4) != 0x6000000) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }\n  uVar9 = *(uint *)(iVar1 + 0x14);\n  uVar8 = *(uint *)(iVar1 + 0x10);\n  uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n  if (*(int *)(param_1 + 0x1c) == 0) {\nLAB_000cf8fd:\n                    /* WARNING: Subroutine does not return */\n    FUN_000c48d0();\n  }\n  puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0);\n  uVar8 = *(uint *)(iVar1 + 0x18);\n  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (0xfeff < uVar8) {\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }\n  if (param_4 == uVar8) {\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }\n  if (uVar8 < *(uint *)(param_1 + 0x28)) {\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar5 = gettext(pcVar7);\n  FUN_00121be0(param_1,uVar5,param_3,uVar8);\n  return;\n}" primitive_type (function_declarator "FUN_000cf590(int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,\n                 int param_7)" identifier (parameter_list "(int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,\n                 int param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  uint *puVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  char *pcVar7;\n  undefined4 in_ECX;\n  uint uVar8;\n  char *__s;\n  uint uVar9;\n  uint *puVar10;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  local_48 = param_7;\n  local_4c = param_6;\n  iVar1 = param_2 + param_3 * 0x28;\n  if (*(int *)(iVar1 + 4) != 0x6000000) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }\n  uVar9 = *(uint *)(iVar1 + 0x14);\n  uVar8 = *(uint *)(iVar1 + 0x10);\n  uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n  if (*(int *)(param_1 + 0x1c) == 0) {\nLAB_000cf8fd:\n                    /* WARNING: Subroutine does not return */\n    FUN_000c48d0();\n  }\n  puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0);\n  uVar8 = *(uint *)(iVar1 + 0x18);\n  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (0xfeff < uVar8) {\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }\n  if (param_4 == uVar8) {\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }\n  if (uVar8 < *(uint *)(param_1 + 0x28)) {\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar5 = gettext(pcVar7);\n  FUN_00121be0(param_1,uVar5,param_3,uVar8);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined4 in_ECX;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_48 = param_7;" (assignment_expression "local_48 = param_7" identifier = identifier) ;) (expression_statement "local_4c = param_6;" (assignment_expression "local_4c = param_6" identifier = identifier) ;) (expression_statement "iVar1 = param_2 + param_3 * 0x28;" (assignment_expression "iVar1 = param_2 + param_3 * 0x28" identifier = (binary_expression "param_2 + param_3 * 0x28" identifier + (binary_expression "param_3 * 0x28" identifier * number_literal))) ;) (if_statement "if (*(int *)(iVar1 + 4) != 0x6000000) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }" if (parenthesized_expression "(*(int *)(iVar1 + 4) != 0x6000000)" ( (binary_expression "*(int *)(iVar1 + 4) != 0x6000000" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }" { comment (expression_statement "FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);" (call_expression "FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX)" identifier (argument_list "("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX)" ( (string_literal ""../../gold/dynobj.cc"" " string_content ") , number_literal , (string_literal ""read_dynamic"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar9 = *(uint *)(iVar1 + 0x14);" (assignment_expression "uVar9 = *(uint *)(iVar1 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x14)" * (cast_expression "(uint *)(iVar1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(uint *)(iVar1 + 0x10);" (assignment_expression "uVar8 = *(uint *)(iVar1 + 0x10)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x10)" * (cast_expression "(uint *)(iVar1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if (*(int *)(param_1 + 0x1c) == 0) {\nLAB_000cf8fd:\n                    /* WARNING: Subroutine does not return */\n    FUN_000c48d0();\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x1c) == 0)" ( (binary_expression "*(int *)(param_1 + 0x1c) == 0" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_000cf8fd:\n                    /* WARNING: Subroutine does not return */\n    FUN_000c48d0();\n  }" { (labeled_statement "LAB_000cf8fd:\n                    /* WARNING: Subroutine does not return */\n    FUN_000c48d0();" statement_identifier : comment (expression_statement "FUN_000c48d0();" (call_expression "FUN_000c48d0()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0);" (assignment_expression "puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0)" identifier = (cast_expression "(uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0)" identifier (argument_list "(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0)" ( (binary_expression "*(int *)(param_1 + 0x1c) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x20)" * (cast_expression "(undefined4 *)(param_1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) , (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal)) , number_literal , identifier , number_literal , number_literal ))))) ;) (expression_statement "uVar8 = *(uint *)(iVar1 + 0x18);" (assignment_expression "uVar8 = *(uint *)(iVar1 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x18)" * (cast_expression "(uint *)(iVar1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (0xfeff < uVar8) {\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }" if (parenthesized_expression "(0xfeff < uVar8)" ( (binary_expression "0xfeff < uVar8" number_literal < identifier) )) (compound_statement "{\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }" { (expression_statement "FUN_000b30c0(param_1 + 0x60);" (call_expression "FUN_000b30c0(param_1 + 0x60)" identifier (argument_list "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))) ;) (expression_statement "uVar8 = uVar8 + *(int *)(param_1 + 0x74);" (assignment_expression "uVar8 = uVar8 + *(int *)(param_1 + 0x74)" identifier = (binary_expression "uVar8 + *(int *)(param_1 + 0x74)" identifier + (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))))) ;) })) (if_statement "if (param_4 == uVar8) {\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }" if (parenthesized_expression "(param_4 == uVar8)" ( (binary_expression "param_4 == uVar8" identifier == identifier) )) (compound_statement "{\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }" { (labeled_statement "LAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);" statement_identifier : (expression_statement "puVar10 = (uint *)(uVar9 + (int)puVar4);" (assignment_expression "puVar10 = (uint *)(uVar9 + (int)puVar4)" identifier = (cast_expression "(uint *)(uVar9 + (int)puVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + (int)puVar4)" ( (binary_expression "uVar9 + (int)puVar4" identifier + (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (if_statement "if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }" if (parenthesized_expression "(puVar4 < puVar10)" ( (binary_expression "puVar4 < puVar10" identifier < identifier) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }" { (do_statement "do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);" do (compound_statement "{\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      }" { (while_statement "while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }" { (expression_statement "uVar9 = *puVar4;" (assignment_expression "uVar9 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar9 == 1) break;" if (parenthesized_expression "(uVar9 == 1)" ( (binary_expression "uVar9 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar9 == 0) {\n            return;\n          }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (if_statement "if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }" if (parenthesized_expression "(uVar9 == 0xe)" ( (binary_expression "uVar9 == 0xe" identifier == number_literal) )) (compound_statement "{\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }" { (expression_statement "uVar9 = puVar4[1];" (assignment_expression "uVar9 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;" (assignment_expression "local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }" if (parenthesized_expression "((int)(uint)(local_54 < local_4c) <= -local_48)" ( (binary_expression "(int)(uint)(local_54 < local_4c) <= -local_48" (cast_expression "(int)(uint)(local_54 < local_4c)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_54 < local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_54 < local_4c)" ( (binary_expression "local_54 < local_4c" identifier < identifier) )))) <= (unary_expression "-local_48" - identifier)) )) (compound_statement "{\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }" { (expression_statement "pcVar7 = "DT_SONAME value out of range: %lld >= %lld";" (assignment_expression "pcVar7 = "DT_SONAME value out of range: %lld >= %lld"" identifier = (string_literal ""DT_SONAME value out of range: %lld >= %lld"" " string_content ")) ;) (goto_statement "goto LAB_000cf70b;" goto statement_identifier ;) })) (expression_statement "sVar6 = strlen((char *)(local_54 + param_5));" (assignment_expression "sVar6 = strlen((char *)(local_54 + param_5))" identifier = (call_expression "strlen((char *)(local_54 + param_5))" identifier (argument_list "((char *)(local_54 + param_5))" ( (cast_expression "(char *)(local_54 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_54 + param_5)" ( (binary_expression "local_54 + param_5" identifier + identifier) ))) )))) ;) (expression_statement "FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);" (call_expression "FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6)" identifier (argument_list "(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) , (cast_expression "(char *)(local_54 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_54 + param_5)" ( (binary_expression "local_54 + param_5" identifier + identifier) ))) , identifier ))) ;) })) (labeled_statement "joined_r0x000cf86a:\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 (puVar10 <= puVar4) goto LAB_000cf739;" if (parenthesized_expression "(puVar10 <= puVar4)" ( (binary_expression "puVar10 <= puVar4" identifier <= identifier) )) (goto_statement "goto LAB_000cf739;" goto statement_identifier ;)) })) (expression_statement "uVar9 = puVar4[1];" (assignment_expression "uVar9 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }" if (parenthesized_expression "((int)(uint)(local_54 < local_4c) <= -local_48)" ( (binary_expression "(int)(uint)(local_54 < local_4c) <= -local_48" (cast_expression "(int)(uint)(local_54 < local_4c)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_54 < local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_54 < local_4c)" ( (binary_expression "local_54 < local_4c" identifier < identifier) )))) <= (unary_expression "-local_48" - identifier)) )) (compound_statement "{\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }" { (expression_statement "pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";" (assignment_expression "pcVar7 = "DT_NEEDED value out of range: %lld >= %lld"" identifier = (string_literal ""DT_NEEDED value out of range: %lld >= %lld"" " string_content ")) ;) (labeled_statement "LAB_000cf70b:\n          uVar5 = gettext(pcVar7);" statement_identifier : (expression_statement "uVar5 = gettext(pcVar7);" (assignment_expression "uVar5 = gettext(pcVar7)" identifier = (call_expression "gettext(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier )))) ;)) (expression_statement "FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);" (call_expression "FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48)" identifier (argument_list "(param_1,uVar5,local_54,0,local_4c,local_48)" ( identifier , identifier , identifier , number_literal , identifier , identifier ))) ;) (goto_statement "goto joined_r0x000cf86a;" goto statement_identifier ;) })) (expression_statement "__s = (char *)(local_54 + param_5);" (assignment_expression "__s = (char *)(local_54 + param_5)" identifier = (cast_expression "(char *)(local_54 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_54 + param_5)" ( (binary_expression "local_54 + param_5" identifier + identifier) )))) ;) (expression_statement "pcVar7 = (char *)0xffffffff;" (assignment_expression "pcVar7 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = &local_2c;" (assignment_expression "local_34 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (if_statement "if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\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          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }" { (expression_statement "sVar6 = strlen(__s);" (assignment_expression "sVar6 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar7 = __s + sVar6;" (assignment_expression "pcVar7 = __s + sVar6" identifier = (binary_expression "__s + sVar6" identifier + identifier)) ;) })) (expression_statement "FUN_000a8880(&local_34,__s,pcVar7,0);" (call_expression "FUN_000a8880(&local_34,__s,pcVar7,0)" identifier (argument_list "(&local_34,__s,pcVar7,0)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "piVar3 = *(int **)(param_1 + 0x54);" (assignment_expression "piVar3 = *(int **)(param_1 + 0x54)" identifier = (pointer_expression "*(int **)(param_1 + 0x54)" * (cast_expression "(int **)(param_1 + 0x54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) ))))) ;) (if_statement "if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }" if (parenthesized_expression "(piVar3 != *(int **)(param_1 + 0x58))" ( (binary_expression "piVar3 != *(int **)(param_1 + 0x58)" identifier != (pointer_expression "*(int **)(param_1 + 0x58)" * (cast_expression "(int **)(param_1 + 0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) )) (compound_statement "{\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }" { (expression_statement "*piVar3 = (int)(piVar3 + 2);" (assignment_expression "*piVar3 = (int)(piVar3 + 2)" (pointer_expression "*piVar3" * identifier) = (cast_expression "(int)(piVar3 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) ;) (if_statement "if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }" if (parenthesized_expression "(local_34 == &local_2c)" ( (binary_expression "local_34 == &local_2c" identifier == (pointer_expression "&local_2c" & identifier)) )) (compound_statement "{\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }" { (expression_statement "piVar3[2] = local_2c;" (assignment_expression "piVar3[2] = local_2c" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[3] = local_28;" (assignment_expression "piVar3[3] = local_28" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[4] = local_24;" (assignment_expression "piVar3[4] = local_24" (subscript_expression "piVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[5] = local_20;" (assignment_expression "piVar3[5] = local_20" (subscript_expression "piVar3[5]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }" else (compound_statement "{\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }" { (expression_statement "*piVar3 = (int)local_34;" (assignment_expression "*piVar3 = (int)local_34" (pointer_expression "*piVar3" * identifier) = (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[2] = local_2c;" (assignment_expression "piVar3[2] = local_2c" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "piVar3[1] = local_30;" (assignment_expression "piVar3[1] = local_30" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;" (assignment_expression "*(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18" (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x54) + 0x18" (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) + number_literal)) ;) (goto_statement "goto joined_r0x000cf86a;" goto statement_identifier ;) })) comment (expression_statement "FUN_000ca560(param_1 + 0x50,piVar3,&local_34);" (call_expression "FUN_000ca560(param_1 + 0x50,piVar3,&local_34)" identifier (argument_list "(param_1 + 0x50,piVar3,&local_34)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) , identifier , (pointer_expression "&local_34" & identifier) ))) ;) (if_statement "if (local_34 == &local_2c) goto joined_r0x000cf86a;" if (parenthesized_expression "(local_34 == &local_2c)" ( (binary_expression "local_34 == &local_2c" identifier == (pointer_expression "&local_2c" & identifier)) )) (goto_statement "goto joined_r0x000cf86a;" goto statement_identifier ;)) (expression_statement "puVar4 = puVar4 + 2;" (assignment_expression "puVar4 = puVar4 + 2" identifier = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (expression_statement "FUN_00248220(local_34);" (call_expression "FUN_00248220(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) }) while (parenthesized_expression "(puVar4 < puVar10)" ( (binary_expression "puVar4 < puVar10" identifier < identifier) )) ;) })) (labeled_statement "LAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");" statement_identifier : (expression_statement "uVar5 = gettext("missing DT_NULL in dynamic segment");" (assignment_expression "uVar5 = 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_00121be0(param_1,uVar5);" (call_expression "FUN_00121be0(param_1,uVar5)" identifier (argument_list "(param_1,uVar5)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar8 < *(uint *)(param_1 + 0x28)) {\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }" if (parenthesized_expression "(uVar8 < *(uint *)(param_1 + 0x28))" ( (binary_expression "uVar8 < *(uint *)(param_1 + 0x28)" identifier < (pointer_expression "*(uint *)(param_1 + 0x28)" * (cast_expression "(uint *)(param_1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }" { (expression_statement "param_2 = param_2 + uVar8 * 0x28;" (assignment_expression "param_2 = param_2 + uVar8 * 0x28" identifier = (binary_expression "param_2 + uVar8 * 0x28" identifier + (binary_expression "uVar8 * 0x28" identifier * number_literal))) ;) (if_statement "if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\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      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }" { (expression_statement "uVar8 = *(uint *)(param_2 + 0x14);" (assignment_expression "uVar8 = *(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 "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = *(uint *)(param_2 + 0x10);" (assignment_expression "uVar2 = *(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 "local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;" if (parenthesized_expression "(*(int *)(param_1 + 0x1c) == 0)" ( (binary_expression "*(int *)(param_1 + 0x1c) == 0" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000cf8fd;" goto statement_identifier ;)) (expression_statement "param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);" (assignment_expression "param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0)" identifier = (call_expression "FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0)" identifier (argument_list "(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0)" ( (binary_expression "*(int *)(param_1 + 0x1c) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x20)" * (cast_expression "(undefined4 *)(param_1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) , (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal)) , number_literal , identifier , number_literal , number_literal )))) ;) (goto_statement "goto LAB_000cf6c6;" goto statement_identifier ;) })) (expression_statement "pcVar7 = "DYNAMIC section %u link %u is not a strtab";" (assignment_expression "pcVar7 = "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    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }" else (compound_statement "{\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }" { (expression_statement "pcVar7 = "DYNAMIC section %u link out of range: %u";" (assignment_expression "pcVar7 = "DYNAMIC section %u link out of range: %u"" identifier = (string_literal ""DYNAMIC section %u link out of range: %u"" " string_content ")) ;) }))) (expression_statement "uVar5 = gettext(pcVar7);" (assignment_expression "uVar5 = gettext(pcVar7)" identifier = (call_expression "gettext(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier )))) ;) (expression_statement "FUN_00121be0(param_1,uVar5,param_3,uVar8);" (call_expression "FUN_00121be0(param_1,uVar5,param_3,uVar8)" identifier (argument_list "(param_1,uVar5,param_3,uVar8)" ( identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* DWARF original prototype: void 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  Input_file *pIVar3;\n  iterator __position;\n  uint *puVar4;\n  char *pcVar5;\n  size_t sVar6;\n  uchar *puVar7;\n  uint uVar8;\n  uint uVar9;\n  uchar *__s;\n  uint uVar10;\n  uint *puVar11;\n  Object *in_stack_ffffffa4;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_34;\n  \n  if (*(int *)(pshdrs + dynamic_shndx * 0x28 + 4) != 0x6000000) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dynobj.cc",0x100,"read_dynamic");\n  }\n  uVar10 = *(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x14);\n  uVar9 = *(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x10);\n  pIVar3 = (this->super_Dynobj).super_Object.input_file_;\n  uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n  if (pIVar3 == (Input_file *)0x0) {\nLAB_000cf8fd:\n                    /* WARNING: Subroutine does not return */\n    Object::input_file(in_stack_ffffffa4);\n  }\n  puVar4 = (uint *)File_read::get_view(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,\n                                       (ulonglong)\n                                       (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 |\n                                        (uVar9 & 0xff00) << 8 | uVar9 << 0x18),uVar10,true,false);\n  uVar9 = *(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x18);\n  uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n  if (0xfeff < uVar9) {\n    elfcpp::Elf_file<32,_true,_gold::Object>::initialize_shnum(&this->elf_file_);\n    uVar9 = uVar9 + (this->elf_file_).large_shndx_offset_;\n  }\n  if (strtab_shndx == uVar9) {\nLAB_000cf6c6:\n    local_48 = (int)((ulonglong)strtab_size >> 0x20);\n    local_4c = (uint)strtab_size;\n    puVar11 = (uint *)(uVar10 + (int)puVar4);\n    if (puVar4 < puVar11) {\n      paVar1 = &local_34.field_2;\n      do {\n        while( true ) {\n          uVar10 = *puVar4;\n          uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n          if (uVar10 == 1) break;\n          if (uVar10 == 0) {\n            return;\n          }\n          if (uVar10 == 0xe) {\n            uVar10 = puVar4[1];\n            local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(strtabu + local_54));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar11 <= puVar4) goto LAB_000cf739;\n        }\n        uVar10 = puVar4[1];\n        local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar5 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          pcVar5 = (char *)gettext(pcVar5);\n          Object::error((Object *)this,pcVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = strtabu + local_54;\n        puVar7 = (uchar *)0xffffffff;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar6 = strlen((char *)__s);\n          puVar7 = __s + sVar6;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,__s,puVar7,0);\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_34._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_34._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_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\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_34);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_34._M_dataplus._M_p == paVar1) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        operator_delete(local_34._M_dataplus._M_p);\n      } while (puVar4 < puVar11);\n    }\nLAB_000cf739:\n    pcVar5 = (char *)gettext("missing DT_NULL in dynamic segment");\n    Object::error((Object *)this,pcVar5);\n    return;\n  }\n  if (uVar9 < (this->super_Dynobj).super_Object.shnum_) {\n    if (*(int *)(pshdrs + uVar9 * 0x28 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x14);\n      uVar9 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x10);\n      pIVar3 = (this->super_Dynobj).super_Object.input_file_;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      strtab_size = (off_t)uVar8;\n      if (pIVar3 == (Input_file *)0x0) goto LAB_000cf8fd;\n      strtabu = File_read::get_view(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,\n                                    (ulonglong)\n                                    (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8\n                                    | uVar9 << 0x18),uVar8,false,false);\n      goto LAB_000cf6c6;\n    }\n    pcVar5 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar5 = "DYNAMIC section %u link out of range: %u";\n  }\n  pcVar5 = (char *)gettext(pcVar5);\n  Object::error((Object *)this,pcVar5,dynamic_shndx,uVar9);\n  return;\n}\n\n" comment 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 "Input_file *pIVar3;" type_identifier (pointer_declarator "*pIVar3" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "uchar *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uchar *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "Object *in_stack_ffffffa4;" type_identifier (pointer_declarator "*in_stack_ffffffa4" * identifier) ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (ERROR "basic_string<char," (binary_expression "basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_> local_34;" 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_34;" (binary_expression "allocator<char>_> local_34" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) ;)) (if_statement "if (*(int *)(pshdrs + 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 + dynamic_shndx * 0x28 + 4) != 0x6000000)" ( (binary_expression "*(int *)(pshdrs + dynamic_shndx * 0x28 + 4) != 0x6000000" (pointer_expression "*(int *)(pshdrs + dynamic_shndx * 0x28 + 4)" * (cast_expression "(int *)(pshdrs + dynamic_shndx * 0x28 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + dynamic_shndx * 0x28 + 4)" ( (binary_expression "pshdrs + dynamic_shndx * 0x28 + 4" (binary_expression "pshdrs + dynamic_shndx * 0x28" identifier + (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 "uVar10 = *(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x14);" (assignment_expression "uVar10 = *(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x14)" identifier = (pointer_expression "*(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x14)" * (cast_expression "(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + dynamic_shndx * 0x28 + 0x14)" ( (binary_expression "pshdrs + dynamic_shndx * 0x28 + 0x14" (binary_expression "pshdrs + dynamic_shndx * 0x28" identifier + (binary_expression "dynamic_shndx * 0x28" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "uVar9 = *(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x10);" (assignment_expression "uVar9 = *(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x10)" identifier = (pointer_expression "*(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x10)" * (cast_expression "(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + dynamic_shndx * 0x28 + 0x10)" ( (binary_expression "pshdrs + dynamic_shndx * 0x28 + 0x10" (binary_expression "pshdrs + dynamic_shndx * 0x28" identifier + (binary_expression "dynamic_shndx * 0x28" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "pIVar3 = (this->super_Dynobj).super_Object.input_file_;" (assignment_expression "pIVar3 = (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 "uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;" (assignment_expression "uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18" identifier = (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8" (binary_expression "uVar10 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar10 & 0xff0000) >> 8" (parenthesized_expression "(uVar10 & 0xff0000)" ( (binary_expression "uVar10 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff00) << 8" (parenthesized_expression "(uVar10 & 0xff00)" ( (binary_expression "uVar10 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar10 << 0x18" identifier << number_literal))) ;) (if_statement "if (pIVar3 == (Input_file *)0x0) {\nLAB_000cf8fd:\n                    /* WARNING: Subroutine does not return */\n    Object::input_file(in_stack_ffffffa4);\n  }" if (parenthesized_expression "(pIVar3 == (Input_file *)0x0)" ( (binary_expression "pIVar3 == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000cf8fd:\n                    /* WARNING: Subroutine does not return */\n    Object::input_file(in_stack_ffffffa4);\n  }" { (labeled_statement "LAB_000cf8fd:\n                    /* WARNING: Subroutine does not return */\n    Object::input_file(in_stack_ffffffa4);" statement_identifier : comment (labeled_statement "Object::input_file(in_stack_ffffffa4);" statement_identifier : (ERROR ":" :) (expression_statement "input_file(in_stack_ffffffa4);" (call_expression "input_file(in_stack_ffffffa4)" identifier (argument_list "(in_stack_ffffffa4)" ( 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(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,\n                                       (ulonglong)\n                                       (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 |\n                                        (uVar9 & 0xff00) << 8 | uVar9 << 0x18),uVar10,true,false);" (call_expression "get_view(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,\n                                       (ulonglong)\n                                       (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 |\n                                        (uVar9 & 0xff00) << 8 | uVar9 << 0x18),uVar10,true,false)" identifier (argument_list "(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,\n                                       (ulonglong)\n                                       (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 |\n                                        (uVar9 & 0xff00) << 8 | uVar9 << 0x18),uVar10,true,false)" ( (pointer_expression "&pIVar3->file_" & (field_expression "pIVar3->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 "(ulonglong)\n                                       (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 |\n                                        (uVar9 & 0xff00) << 8 | uVar9 << 0x18)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 |\n                                        (uVar9 & 0xff00) << 8 | uVar9 << 0x18)" ( (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 |\n                                        (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 |\n                                        (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal)) ))) , identifier , true , false ))) ;) (expression_statement "uVar9 = *(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x18);" (assignment_expression "uVar9 = *(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x18)" identifier = (pointer_expression "*(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x18)" * (cast_expression "(uint *)(pshdrs + dynamic_shndx * 0x28 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + dynamic_shndx * 0x28 + 0x18)" ( (binary_expression "pshdrs + dynamic_shndx * 0x28 + 0x18" (binary_expression "pshdrs + dynamic_shndx * 0x28" identifier + (binary_expression "dynamic_shndx * 0x28" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if (0xfeff < uVar9) {\n    elfcpp::Elf_file<32,_true,_gold::Object>::initialize_shnum(&this->elf_file_);\n    uVar9 = uVar9 + (this->elf_file_).large_shndx_offset_;\n  }" if (parenthesized_expression "(0xfeff < uVar9)" ( (binary_expression "0xfeff < uVar9" number_literal < identifier) )) (compound_statement "{\n    elfcpp::Elf_file<32,_true,_gold::Object>::initialize_shnum(&this->elf_file_);\n    uVar9 = uVar9 + (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 "uVar9 = uVar9 + (this->elf_file_).large_shndx_offset_;" (assignment_expression "uVar9 = uVar9 + (this->elf_file_).large_shndx_offset_" identifier = (binary_expression "uVar9 + (this->elf_file_).large_shndx_offset_" identifier + (field_expression "(this->elf_file_).large_shndx_offset_" (parenthesized_expression "(this->elf_file_)" ( (field_expression "this->elf_file_" identifier -> field_identifier) )) . field_identifier))) ;) })) (if_statement "if (strtab_shndx == uVar9) {\nLAB_000cf6c6:\n    local_48 = (int)((ulonglong)strtab_size >> 0x20);\n    local_4c = (uint)strtab_size;\n    puVar11 = (uint *)(uVar10 + (int)puVar4);\n    if (puVar4 < puVar11) {\n      paVar1 = &local_34.field_2;\n      do {\n        while( true ) {\n          uVar10 = *puVar4;\n          uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n          if (uVar10 == 1) break;\n          if (uVar10 == 0) {\n            return;\n          }\n          if (uVar10 == 0xe) {\n            uVar10 = puVar4[1];\n            local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(strtabu + local_54));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar11 <= puVar4) goto LAB_000cf739;\n        }\n        uVar10 = puVar4[1];\n        local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar5 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          pcVar5 = (char *)gettext(pcVar5);\n          Object::error((Object *)this,pcVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = strtabu + local_54;\n        puVar7 = (uchar *)0xffffffff;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar6 = strlen((char *)__s);\n          puVar7 = __s + sVar6;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,__s,puVar7,0);\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_34._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_34._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_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\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_34);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_34._M_dataplus._M_p == paVar1) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        operator_delete(local_34._M_dataplus._M_p);\n      } while (puVar4 < puVar11);\n    }\nLAB_000cf739:\n    pcVar5 = (char *)gettext("missing DT_NULL in dynamic segment");\n    Object::error((Object *)this,pcVar5);\n    return;\n  }" if (parenthesized_expression "(strtab_shndx == uVar9)" ( (binary_expression "strtab_shndx == uVar9" identifier == identifier) )) (compound_statement "{\nLAB_000cf6c6:\n    local_48 = (int)((ulonglong)strtab_size >> 0x20);\n    local_4c = (uint)strtab_size;\n    puVar11 = (uint *)(uVar10 + (int)puVar4);\n    if (puVar4 < puVar11) {\n      paVar1 = &local_34.field_2;\n      do {\n        while( true ) {\n          uVar10 = *puVar4;\n          uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n          if (uVar10 == 1) break;\n          if (uVar10 == 0) {\n            return;\n          }\n          if (uVar10 == 0xe) {\n            uVar10 = puVar4[1];\n            local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(strtabu + local_54));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar11 <= puVar4) goto LAB_000cf739;\n        }\n        uVar10 = puVar4[1];\n        local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar5 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          pcVar5 = (char *)gettext(pcVar5);\n          Object::error((Object *)this,pcVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = strtabu + local_54;\n        puVar7 = (uchar *)0xffffffff;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar6 = strlen((char *)__s);\n          puVar7 = __s + sVar6;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,__s,puVar7,0);\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_34._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_34._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_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\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_34);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_34._M_dataplus._M_p == paVar1) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        operator_delete(local_34._M_dataplus._M_p);\n      } while (puVar4 < puVar11);\n    }\nLAB_000cf739:\n    pcVar5 = (char *)gettext("missing DT_NULL in dynamic segment");\n    Object::error((Object *)this,pcVar5);\n    return;\n  }" { (labeled_statement "LAB_000cf6c6:\n    local_48 = (int)((ulonglong)strtab_size >> 0x20);" statement_identifier : (expression_statement "local_48 = (int)((ulonglong)strtab_size >> 0x20);" (assignment_expression "local_48 = (int)((ulonglong)strtab_size >> 0x20)" identifier = (cast_expression "(int)((ulonglong)strtab_size >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)strtab_size >> 0x20)" ( (binary_expression "(ulonglong)strtab_size >> 0x20" (cast_expression "(ulonglong)strtab_size" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "local_4c = (uint)strtab_size;" (assignment_expression "local_4c = (uint)strtab_size" identifier = (cast_expression "(uint)strtab_size" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar11 = (uint *)(uVar10 + (int)puVar4);" (assignment_expression "puVar11 = (uint *)(uVar10 + (int)puVar4)" identifier = (cast_expression "(uint *)(uVar10 + (int)puVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 + (int)puVar4)" ( (binary_expression "uVar10 + (int)puVar4" identifier + (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (puVar4 < puVar11) {\n      paVar1 = &local_34.field_2;\n      do {\n        while( true ) {\n          uVar10 = *puVar4;\n          uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n          if (uVar10 == 1) break;\n          if (uVar10 == 0) {\n            return;\n          }\n          if (uVar10 == 0xe) {\n            uVar10 = puVar4[1];\n            local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(strtabu + local_54));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar11 <= puVar4) goto LAB_000cf739;\n        }\n        uVar10 = puVar4[1];\n        local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar5 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          pcVar5 = (char *)gettext(pcVar5);\n          Object::error((Object *)this,pcVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = strtabu + local_54;\n        puVar7 = (uchar *)0xffffffff;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar6 = strlen((char *)__s);\n          puVar7 = __s + sVar6;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,__s,puVar7,0);\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_34._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_34._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_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\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_34);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_34._M_dataplus._M_p == paVar1) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        operator_delete(local_34._M_dataplus._M_p);\n      } while (puVar4 < puVar11);\n    }" if (parenthesized_expression "(puVar4 < puVar11)" ( (binary_expression "puVar4 < puVar11" identifier < identifier) )) (compound_statement "{\n      paVar1 = &local_34.field_2;\n      do {\n        while( true ) {\n          uVar10 = *puVar4;\n          uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n          if (uVar10 == 1) break;\n          if (uVar10 == 0) {\n            return;\n          }\n          if (uVar10 == 0xe) {\n            uVar10 = puVar4[1];\n            local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(strtabu + local_54));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar11 <= puVar4) goto LAB_000cf739;\n        }\n        uVar10 = puVar4[1];\n        local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar5 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          pcVar5 = (char *)gettext(pcVar5);\n          Object::error((Object *)this,pcVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = strtabu + local_54;\n        puVar7 = (uchar *)0xffffffff;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar6 = strlen((char *)__s);\n          puVar7 = __s + sVar6;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,__s,puVar7,0);\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_34._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_34._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_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\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_34);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_34._M_dataplus._M_p == paVar1) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        operator_delete(local_34._M_dataplus._M_p);\n      } while (puVar4 < puVar11);\n    }" { (expression_statement "paVar1 = &local_34.field_2;" (assignment_expression "paVar1 = &local_34.field_2" identifier = (pointer_expression "&local_34.field_2" & (field_expression "local_34.field_2" identifier . field_identifier))) ;) (do_statement "do {\n        while( true ) {\n          uVar10 = *puVar4;\n          uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n          if (uVar10 == 1) break;\n          if (uVar10 == 0) {\n            return;\n          }\n          if (uVar10 == 0xe) {\n            uVar10 = puVar4[1];\n            local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(strtabu + local_54));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar11 <= puVar4) goto LAB_000cf739;\n        }\n        uVar10 = puVar4[1];\n        local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar5 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          pcVar5 = (char *)gettext(pcVar5);\n          Object::error((Object *)this,pcVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = strtabu + local_54;\n        puVar7 = (uchar *)0xffffffff;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar6 = strlen((char *)__s);\n          puVar7 = __s + sVar6;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,__s,puVar7,0);\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_34._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_34._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_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\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_34);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_34._M_dataplus._M_p == paVar1) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        operator_delete(local_34._M_dataplus._M_p);\n      } while (puVar4 < puVar11);" do (compound_statement "{\n        while( true ) {\n          uVar10 = *puVar4;\n          uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n          if (uVar10 == 1) break;\n          if (uVar10 == 0) {\n            return;\n          }\n          if (uVar10 == 0xe) {\n            uVar10 = puVar4[1];\n            local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(strtabu + local_54));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar11 <= puVar4) goto LAB_000cf739;\n        }\n        uVar10 = puVar4[1];\n        local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar5 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          pcVar5 = (char *)gettext(pcVar5);\n          Object::error((Object *)this,pcVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = strtabu + local_54;\n        puVar7 = (uchar *)0xffffffff;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        if (__s != (uchar *)0x0) {\n          sVar6 = strlen((char *)__s);\n          puVar7 = __s + sVar6;\n        }\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,__s,puVar7,0);\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_34._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_34._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_r0x000cf86a;\n        }\n                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */\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_34);\n        if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_34._M_dataplus._M_p == paVar1) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        operator_delete(local_34._M_dataplus._M_p);\n      }" { (while_statement "while( true ) {\n          uVar10 = *puVar4;\n          uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n          if (uVar10 == 1) break;\n          if (uVar10 == 0) {\n            return;\n          }\n          if (uVar10 == 0xe) {\n            uVar10 = puVar4[1];\n            local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(strtabu + local_54));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar11 <= puVar4) goto LAB_000cf739;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar10 = *puVar4;\n          uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;\n          if (uVar10 == 1) break;\n          if (uVar10 == 0) {\n            return;\n          }\n          if (uVar10 == 0xe) {\n            uVar10 = puVar4[1];\n            local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(strtabu + local_54));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar11 <= puVar4) goto LAB_000cf739;\n        }" { (expression_statement "uVar10 = *puVar4;" (assignment_expression "uVar10 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;" (assignment_expression "uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18" identifier = (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8" (binary_expression "uVar10 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar10 & 0xff0000) >> 8" (parenthesized_expression "(uVar10 & 0xff0000)" ( (binary_expression "uVar10 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff00) << 8" (parenthesized_expression "(uVar10 & 0xff00)" ( (binary_expression "uVar10 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar10 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar10 == 1) break;" if (parenthesized_expression "(uVar10 == 1)" ( (binary_expression "uVar10 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar10 == 0) {\n            return;\n          }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (if_statement "if (uVar10 == 0xe) {\n            uVar10 = puVar4[1];\n            local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(strtabu + local_54));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);\n          }" if (parenthesized_expression "(uVar10 == 0xe)" ( (binary_expression "uVar10 == 0xe" identifier == number_literal) )) (compound_statement "{\n            uVar10 = puVar4[1];\n            local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(strtabu + local_54));\n            std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);\n          }" { (expression_statement "uVar10 = puVar4[1];" (assignment_expression "uVar10 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18;" (assignment_expression "local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18" identifier = (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                       uVar10 << 0x18" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8" (binary_expression "uVar10 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar10 & 0xff0000) >> 8" (parenthesized_expression "(uVar10 & 0xff0000)" ( (binary_expression "uVar10 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff00) << 8" (parenthesized_expression "(uVar10 & 0xff00)" ( (binary_expression "uVar10 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar10 << 0x18" identifier << number_literal))) ;) (if_statement "if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }" if (parenthesized_expression "((int)(uint)(local_54 < local_4c) <= -local_48)" ( (binary_expression "(int)(uint)(local_54 < local_4c) <= -local_48" (cast_expression "(int)(uint)(local_54 < local_4c)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_54 < local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_54 < local_4c)" ( (binary_expression "local_54 < local_4c" identifier < identifier) )))) <= (unary_expression "-local_48" - identifier)) )) (compound_statement "{\n              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }" { (expression_statement "pcVar5 = "DT_SONAME value out of range: %lld >= %lld";" (assignment_expression "pcVar5 = "DT_SONAME value out of range: %lld >= %lld"" identifier = (string_literal ""DT_SONAME value out of range: %lld >= %lld"" " string_content ")) ;) (goto_statement "goto LAB_000cf70b;" goto statement_identifier ;) })) (expression_statement "sVar6 = strlen((char *)(strtabu + local_54));" (assignment_expression "sVar6 = strlen((char *)(strtabu + local_54))" identifier = (call_expression "strlen((char *)(strtabu + local_54))" identifier (argument_list "((char *)(strtabu + local_54))" ( (cast_expression "(char *)(strtabu + local_54)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(strtabu + local_54)" ( (binary_expression "strtabu + local_54" identifier + identifier) ))) )))) ;) (labeled_statement "std::string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6);" (call_expression "_M_replace\n                      ((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6)" identifier (argument_list "((string *)&(this->super_Dynobj).soname_,0,\n                       (this->super_Dynobj).soname_._M_string_length,(char *)(strtabu + local_54),\n                       sVar6)" ( (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 *)(strtabu + local_54)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(strtabu + local_54)" ( (binary_expression "strtabu + local_54" identifier + identifier) ))) , identifier ))) ;))) })) (labeled_statement "joined_r0x000cf86a:\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 (puVar11 <= puVar4) goto LAB_000cf739;" if (parenthesized_expression "(puVar11 <= puVar4)" ( (binary_expression "puVar11 <= puVar4" identifier <= identifier) )) (goto_statement "goto LAB_000cf739;" goto statement_identifier ;)) })) (expression_statement "uVar10 = puVar4[1];" (assignment_expression "uVar10 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18;" (assignment_expression "local_54 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18" identifier = (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 |\n                   uVar10 << 0x18" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8" (binary_expression "uVar10 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar10 & 0xff0000) >> 8" (parenthesized_expression "(uVar10 & 0xff0000)" ( (binary_expression "uVar10 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff00) << 8" (parenthesized_expression "(uVar10 & 0xff00)" ( (binary_expression "uVar10 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar10 << 0x18" identifier << number_literal))) ;) (if_statement "if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar5 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          pcVar5 = (char *)gettext(pcVar5);\n          Object::error((Object *)this,pcVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }" if (parenthesized_expression "((int)(uint)(local_54 < local_4c) <= -local_48)" ( (binary_expression "(int)(uint)(local_54 < local_4c) <= -local_48" (cast_expression "(int)(uint)(local_54 < local_4c)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_54 < local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_54 < local_4c)" ( (binary_expression "local_54 < local_4c" identifier < identifier) )))) <= (unary_expression "-local_48" - identifier)) )) (compound_statement "{\n          pcVar5 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          pcVar5 = (char *)gettext(pcVar5);\n          Object::error((Object *)this,pcVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }" { (expression_statement "pcVar5 = "DT_NEEDED value out of range: %lld >= %lld";" (assignment_expression "pcVar5 = "DT_NEEDED value out of range: %lld >= %lld"" identifier = (string_literal ""DT_NEEDED value out of range: %lld >= %lld"" " string_content ")) ;) (labeled_statement "LAB_000cf70b:\n          pcVar5 = (char *)gettext(pcVar5);" statement_identifier : (expression_statement "pcVar5 = (char *)gettext(pcVar5);" (assignment_expression "pcVar5 = (char *)gettext(pcVar5)" identifier = (cast_expression "(char *)gettext(pcVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))))) ;)) (labeled_statement "Object::error((Object *)this,pcVar5,local_54,0,local_4c,local_48);" statement_identifier : (ERROR ":" :) (expression_statement "error((Object *)this,pcVar5,local_54,0,local_4c,local_48);" (call_expression "error((Object *)this,pcVar5,local_54,0,local_4c,local_48)" identifier (argument_list "((Object *)this,pcVar5,local_54,0,local_4c,local_48)" ( (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , number_literal , identifier , identifier ))) ;)) (goto_statement "goto joined_r0x000cf86a;" goto statement_identifier ;) })) (expression_statement "__s = strtabu + local_54;" (assignment_expression "__s = strtabu + local_54" identifier = (binary_expression "strtabu + local_54" identifier + identifier)) ;) (expression_statement "puVar7 = (uchar *)0xffffffff;" (assignment_expression "puVar7 = (uchar *)0xffffffff" identifier = (cast_expression "(uchar *)0xffffffff" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "local_34._M_dataplus._M_p = (pointer)paVar1" (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (if_statement "if (__s != (uchar *)0x0) {\n          sVar6 = strlen((char *)__s);\n          puVar7 = __s + sVar6;\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          sVar6 = strlen((char *)__s);\n          puVar7 = __s + sVar6;\n        }" { (expression_statement "sVar6 = strlen((char *)__s);" (assignment_expression "sVar6 = 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 + sVar6;" (assignment_expression "puVar7 = __s + sVar6" identifier = (binary_expression "__s + sVar6" identifier + identifier)) ;) })) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,__s,puVar7,0);" 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_34,__s,puVar7,0);" (binary_expression "_M_construct<char_const*>(&local_34,__s,puVar7,0)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_34,__s,puVar7,0)" ( (comma_expression "&local_34,__s,puVar7,0" (pointer_expression "&local_34" & identifier) , (comma_expression "__s,puVar7,0" identifier , (comma_expression "puVar7,0" identifier , number_literal))) ))) ;)) (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_34._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_34._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_r0x000cf86a;\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_34._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n          }\n          (__position._M_current)->_M_string_length = local_34._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_r0x000cf86a;\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_34._M_dataplus._M_p == paVar1) {\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;\n          }\n          else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.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_34._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_34._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_34._M_dataplus._M_p == paVar1" (binary_expression "allocator<char>_>_9\n               *)local_34._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n               *)local_34._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier))) == identifier) )) )) (compound_statement "{\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;\n            *(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;\n          }" { (expression_statement "((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;" (assignment_expression "((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.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_34.field_2._M_allocated_capacity" (field_expression "local_34.field_2" identifier . field_identifier) . field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_;" (assignment_expression "*(undefined4 *)((int)&(__position._M_current)->field_2 + 4) = local_34.field_2._4_4_" (pointer_expression "*(undefined4 *)((int)&(__position._M_current)->field_2 + 4)" * (cast_expression "(undefined4 *)((int)&(__position._M_current)->field_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__position._M_current)->field_2 + 4)" ( (binary_expression "(int)&(__position._M_current)->field_2 + 4" (cast_expression "(int)&(__position._M_current)->field_2" ( (type_descriptor "int" primitive_type) ) (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_34.field_2._4_4_" (field_expression "local_34.field_2" identifier . field_identifier) . field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_;" (assignment_expression "*(undefined4 *)((int)&(__position._M_current)->field_2 + 8) = local_34.field_2._8_4_" (pointer_expression "*(undefined4 *)((int)&(__position._M_current)->field_2 + 8)" * (cast_expression "(undefined4 *)((int)&(__position._M_current)->field_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__position._M_current)->field_2 + 8)" ( (binary_expression "(int)&(__position._M_current)->field_2 + 8" (cast_expression "(int)&(__position._M_current)->field_2" ( (type_descriptor "int" primitive_type) ) (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_34.field_2._8_4_" (field_expression "local_34.field_2" identifier . field_identifier) . field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_;" (assignment_expression "*(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc) = local_34.field_2._12_4_" (pointer_expression "*(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc)" * (cast_expression "(undefined4 *)((int)&(__position._M_current)->field_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__position._M_current)->field_2 + 0xc)" ( (binary_expression "(int)&(__position._M_current)->field_2 + 0xc" (cast_expression "(int)&(__position._M_current)->field_2" ( (type_descriptor "int" primitive_type) ) (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_34.field_2._12_4_" (field_expression "local_34.field_2" identifier . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n          }" else (compound_statement "{\n            ((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;\n            ((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;\n          }" { (expression_statement "((__position._M_current)->_M_dataplus)._M_p = local_34._M_dataplus._M_p;" (assignment_expression "((__position._M_current)->_M_dataplus)._M_p = local_34._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_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (expression_statement "((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.field_2._M_allocated_capacity;" (assignment_expression "((__position._M_current)->field_2)._M_allocated_capacity =\n                 local_34.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_34.field_2._M_allocated_capacity" (field_expression "local_34.field_2" identifier . field_identifier) . field_identifier)) ;) }))) (expression_statement "(__position._M_current)->_M_string_length = local_34._M_string_length;" (assignment_expression "(__position._M_current)->_M_string_length = local_34._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_34._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_r0x000cf86a;" 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_34);" (binary_expression "allocator<char>_>_>\n                  (&(this->super_Dynobj).needed_,__position,&local_34)" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > (parenthesized_expression "(&(this->super_Dynobj).needed_,__position,&local_34)" ( (comma_expression "&(this->super_Dynobj).needed_,__position,&local_34" (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_34" identifier , (pointer_expression "&local_34" & identifier))) ))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_34._M_dataplus._M_p == paVar1) goto joined_r0x000cf86a;" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n             *)local_34._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_34._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_34._M_dataplus._M_p == paVar1" (binary_expression "allocator<char>_>_9\n             *)local_34._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n             *)local_34._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier))) == identifier) )) )) (goto_statement "goto joined_r0x000cf86a;" goto statement_identifier ;)) (expression_statement "puVar4 = puVar4 + 2;" (assignment_expression "puVar4 = puVar4 + 2" identifier = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (expression_statement "operator_delete(local_34._M_dataplus._M_p);" (call_expression "operator_delete(local_34._M_dataplus._M_p)" identifier (argument_list "(local_34._M_dataplus._M_p)" ( (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) }) while (parenthesized_expression "(puVar4 < puVar11)" ( (binary_expression "puVar4 < puVar11" identifier < identifier) )) ;) })) (labeled_statement "LAB_000cf739:\n    pcVar5 = (char *)gettext("missing DT_NULL in dynamic segment");" statement_identifier : (expression_statement "pcVar5 = (char *)gettext("missing DT_NULL in dynamic segment");" (assignment_expression "pcVar5 = (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,pcVar5);" statement_identifier : (ERROR ":" :) (expression_statement "error((Object *)this,pcVar5);" (call_expression "error((Object *)this,pcVar5)" identifier (argument_list "((Object *)this,pcVar5)" ( (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) (return_statement "return;" return ;) })) (if_statement "if (uVar9 < (this->super_Dynobj).super_Object.shnum_) {\n    if (*(int *)(pshdrs + uVar9 * 0x28 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x14);\n      uVar9 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x10);\n      pIVar3 = (this->super_Dynobj).super_Object.input_file_;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      strtab_size = (off_t)uVar8;\n      if (pIVar3 == (Input_file *)0x0) goto LAB_000cf8fd;\n      strtabu = File_read::get_view(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,\n                                    (ulonglong)\n                                    (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8\n                                    | uVar9 << 0x18),uVar8,false,false);\n      goto LAB_000cf6c6;\n    }\n    pcVar5 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar5 = "DYNAMIC section %u link out of range: %u";\n  }" if (parenthesized_expression "(uVar9 < (this->super_Dynobj).super_Object.shnum_)" ( (binary_expression "uVar9 < (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 + uVar9 * 0x28 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x14);\n      uVar9 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x10);\n      pIVar3 = (this->super_Dynobj).super_Object.input_file_;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      strtab_size = (off_t)uVar8;\n      if (pIVar3 == (Input_file *)0x0) goto LAB_000cf8fd;\n      strtabu = File_read::get_view(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,\n                                    (ulonglong)\n                                    (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8\n                                    | uVar9 << 0x18),uVar8,false,false);\n      goto LAB_000cf6c6;\n    }\n    pcVar5 = "DYNAMIC section %u link %u is not a strtab";\n  }" { (if_statement "if (*(int *)(pshdrs + uVar9 * 0x28 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x14);\n      uVar9 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x10);\n      pIVar3 = (this->super_Dynobj).super_Object.input_file_;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      strtab_size = (off_t)uVar8;\n      if (pIVar3 == (Input_file *)0x0) goto LAB_000cf8fd;\n      strtabu = File_read::get_view(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,\n                                    (ulonglong)\n                                    (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8\n                                    | uVar9 << 0x18),uVar8,false,false);\n      goto LAB_000cf6c6;\n    }" if (parenthesized_expression "(*(int *)(pshdrs + uVar9 * 0x28 + 4) == 0x3000000)" ( (binary_expression "*(int *)(pshdrs + uVar9 * 0x28 + 4) == 0x3000000" (pointer_expression "*(int *)(pshdrs + uVar9 * 0x28 + 4)" * (cast_expression "(int *)(pshdrs + uVar9 * 0x28 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar9 * 0x28 + 4)" ( (binary_expression "pshdrs + uVar9 * 0x28 + 4" (binary_expression "pshdrs + uVar9 * 0x28" identifier + (binary_expression "uVar9 * 0x28" identifier * number_literal)) + number_literal) )))) == number_literal) )) (compound_statement "{\n      uVar8 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x14);\n      uVar9 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x10);\n      pIVar3 = (this->super_Dynobj).super_Object.input_file_;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      strtab_size = (off_t)uVar8;\n      if (pIVar3 == (Input_file *)0x0) goto LAB_000cf8fd;\n      strtabu = File_read::get_view(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,\n                                    (ulonglong)\n                                    (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8\n                                    | uVar9 << 0x18),uVar8,false,false);\n      goto LAB_000cf6c6;\n    }" { (expression_statement "uVar8 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x14);" (assignment_expression "uVar8 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x14)" identifier = (pointer_expression "*(uint *)(pshdrs + uVar9 * 0x28 + 0x14)" * (cast_expression "(uint *)(pshdrs + uVar9 * 0x28 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar9 * 0x28 + 0x14)" ( (binary_expression "pshdrs + uVar9 * 0x28 + 0x14" (binary_expression "pshdrs + uVar9 * 0x28" identifier + (binary_expression "uVar9 * 0x28" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "uVar9 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x10);" (assignment_expression "uVar9 = *(uint *)(pshdrs + uVar9 * 0x28 + 0x10)" identifier = (pointer_expression "*(uint *)(pshdrs + uVar9 * 0x28 + 0x10)" * (cast_expression "(uint *)(pshdrs + uVar9 * 0x28 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + uVar9 * 0x28 + 0x10)" ( (binary_expression "pshdrs + uVar9 * 0x28 + 0x10" (binary_expression "pshdrs + uVar9 * 0x28" identifier + (binary_expression "uVar9 * 0x28" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "pIVar3 = (this->super_Dynobj).super_Object.input_file_;" (assignment_expression "pIVar3 = (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 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (expression_statement "strtab_size = (off_t)uVar8;" (assignment_expression "strtab_size = (off_t)uVar8" identifier = (cast_expression "(off_t)uVar8" ( (type_descriptor "off_t" type_identifier) ) identifier)) ;) (if_statement "if (pIVar3 == (Input_file *)0x0) goto LAB_000cf8fd;" if (parenthesized_expression "(pIVar3 == (Input_file *)0x0)" ( (binary_expression "pIVar3 == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cf8fd;" goto statement_identifier ;)) (ERROR "strtabu = File_read::" (assignment_expression "strtabu = File_read" identifier = identifier) : :) (expression_statement "get_view(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,\n                                    (ulonglong)\n                                    (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8\n                                    | uVar9 << 0x18),uVar8,false,false);" (call_expression "get_view(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,\n                                    (ulonglong)\n                                    (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8\n                                    | uVar9 << 0x18),uVar8,false,false)" identifier (argument_list "(&pIVar3->file_,(this->super_Dynobj).super_Object.offset_,\n                                    (ulonglong)\n                                    (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8\n                                    | uVar9 << 0x18),uVar8,false,false)" ( (pointer_expression "&pIVar3->file_" & (field_expression "pIVar3->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 "(ulonglong)\n                                    (uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8\n                                    | uVar9 << 0x18)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8\n                                    | uVar9 << 0x18)" ( (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8\n                                    | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal)) ))) , identifier , false , false ))) ;) (goto_statement "goto LAB_000cf6c6;" goto statement_identifier ;) })) (expression_statement "pcVar5 = "DYNAMIC section %u link %u is not a strtab";" (assignment_expression "pcVar5 = "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    pcVar5 = "DYNAMIC section %u link out of range: %u";\n  }" else (compound_statement "{\n    pcVar5 = "DYNAMIC section %u link out of range: %u";\n  }" { (expression_statement "pcVar5 = "DYNAMIC section %u link out of range: %u";" (assignment_expression "pcVar5 = "DYNAMIC section %u link out of range: %u"" identifier = (string_literal ""DYNAMIC section %u link out of range: %u"" " string_content ")) ;) }))) (expression_statement "pcVar5 = (char *)gettext(pcVar5);" (assignment_expression "pcVar5 = (char *)gettext(pcVar5)" identifier = (cast_expression "(char *)gettext(pcVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))))) ;) (labeled_statement "Object::error((Object *)this,pcVar5,dynamic_shndx,uVar9);" statement_identifier : (ERROR ":" :) (expression_statement "error((Object *)this,pcVar5,dynamic_shndx,uVar9);" (call_expression "error((Object *)this,pcVar5,dynamic_shndx,uVar9)" identifier (argument_list "((Object *)this,pcVar5,dynamic_shndx,uVar9)" ( (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , identifier ))) ;)) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_000cf590(int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,\n                 int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  uint *puVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  char *pcVar7;\n  undefined4 in_ECX;\n  uint uVar8;\n  char *__s;\n  uint uVar9;\n  uint *puVar10;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  local_48 = param_7;\n  local_4c = param_6;\n  iVar1 = param_2 + param_3 * 0x28;\n  if (*(int *)(iVar1 + 4) != 0x6000000) {\n                    \n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }\n  uVar9 = *(uint *)(iVar1 + 0x14);\n  uVar8 = *(uint *)(iVar1 + 0x10);\n  uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n  if (*(int *)(param_1 + 0x1c) == 0) {\nLAB_000cf8fd:\n                    \n    FUN_000c48d0();\n  }\n  puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0);\n  uVar8 = *(uint *)(iVar1 + 0x18);\n  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (0xfeff < uVar8) {\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }\n  if (param_4 == uVar8) {\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }\n  if (uVar8 < *(uint *)(param_1 + 0x28)) {\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar5 = gettext(pcVar7);\n  FUN_00121be0(param_1,uVar5,param_3,uVar8);\n  return;\n}\n\n" (function_definition "void FUN_000cf590(int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,\n                 int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  uint *puVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  char *pcVar7;\n  undefined4 in_ECX;\n  uint uVar8;\n  char *__s;\n  uint uVar9;\n  uint *puVar10;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  local_48 = param_7;\n  local_4c = param_6;\n  iVar1 = param_2 + param_3 * 0x28;\n  if (*(int *)(iVar1 + 4) != 0x6000000) {\n                    \n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }\n  uVar9 = *(uint *)(iVar1 + 0x14);\n  uVar8 = *(uint *)(iVar1 + 0x10);\n  uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n  if (*(int *)(param_1 + 0x1c) == 0) {\nLAB_000cf8fd:\n                    \n    FUN_000c48d0();\n  }\n  puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0);\n  uVar8 = *(uint *)(iVar1 + 0x18);\n  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (0xfeff < uVar8) {\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }\n  if (param_4 == uVar8) {\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }\n  if (uVar8 < *(uint *)(param_1 + 0x28)) {\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar5 = gettext(pcVar7);\n  FUN_00121be0(param_1,uVar5,param_3,uVar8);\n  return;\n}" primitive_type (function_declarator "FUN_000cf590(int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,\n                 int param_7)" identifier (parameter_list "(int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,\n                 int param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  uint *puVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  char *pcVar7;\n  undefined4 in_ECX;\n  uint uVar8;\n  char *__s;\n  uint uVar9;\n  uint *puVar10;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  local_48 = param_7;\n  local_4c = param_6;\n  iVar1 = param_2 + param_3 * 0x28;\n  if (*(int *)(iVar1 + 4) != 0x6000000) {\n                    \n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }\n  uVar9 = *(uint *)(iVar1 + 0x14);\n  uVar8 = *(uint *)(iVar1 + 0x10);\n  uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n  if (*(int *)(param_1 + 0x1c) == 0) {\nLAB_000cf8fd:\n                    \n    FUN_000c48d0();\n  }\n  puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0);\n  uVar8 = *(uint *)(iVar1 + 0x18);\n  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (0xfeff < uVar8) {\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }\n  if (param_4 == uVar8) {\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }\n  if (uVar8 < *(uint *)(param_1 + 0x28)) {\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar5 = gettext(pcVar7);\n  FUN_00121be0(param_1,uVar5,param_3,uVar8);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined4 in_ECX;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_48 = param_7;" (assignment_expression "local_48 = param_7" identifier = identifier) ;) (expression_statement "local_4c = param_6;" (assignment_expression "local_4c = param_6" identifier = identifier) ;) (expression_statement "iVar1 = param_2 + param_3 * 0x28;" (assignment_expression "iVar1 = param_2 + param_3 * 0x28" identifier = (binary_expression "param_2 + param_3 * 0x28" identifier + (binary_expression "param_3 * 0x28" identifier * number_literal))) ;) (if_statement "if (*(int *)(iVar1 + 4) != 0x6000000) {\n                    \n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }" if (parenthesized_expression "(*(int *)(iVar1 + 4) != 0x6000000)" ( (binary_expression "*(int *)(iVar1 + 4) != 0x6000000" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }" { (expression_statement "FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);" (call_expression "FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX)" identifier (argument_list "("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX)" ( (string_literal ""../../gold/dynobj.cc"" " string_content ") , number_literal , (string_literal ""read_dynamic"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar9 = *(uint *)(iVar1 + 0x14);" (assignment_expression "uVar9 = *(uint *)(iVar1 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x14)" * (cast_expression "(uint *)(iVar1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(uint *)(iVar1 + 0x10);" (assignment_expression "uVar8 = *(uint *)(iVar1 + 0x10)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x10)" * (cast_expression "(uint *)(iVar1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if (*(int *)(param_1 + 0x1c) == 0) {\nLAB_000cf8fd:\n                    \n    FUN_000c48d0();\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x1c) == 0)" ( (binary_expression "*(int *)(param_1 + 0x1c) == 0" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_000cf8fd:\n                    \n    FUN_000c48d0();\n  }" { (labeled_statement "LAB_000cf8fd:\n                    \n    FUN_000c48d0();" statement_identifier : (expression_statement "FUN_000c48d0();" (call_expression "FUN_000c48d0()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0);" (assignment_expression "puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0)" identifier = (cast_expression "(uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0)" identifier (argument_list "(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0)" ( (binary_expression "*(int *)(param_1 + 0x1c) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x20)" * (cast_expression "(undefined4 *)(param_1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) , (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal)) , number_literal , identifier , number_literal , number_literal ))))) ;) (expression_statement "uVar8 = *(uint *)(iVar1 + 0x18);" (assignment_expression "uVar8 = *(uint *)(iVar1 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x18)" * (cast_expression "(uint *)(iVar1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (0xfeff < uVar8) {\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }" if (parenthesized_expression "(0xfeff < uVar8)" ( (binary_expression "0xfeff < uVar8" number_literal < identifier) )) (compound_statement "{\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }" { (expression_statement "FUN_000b30c0(param_1 + 0x60);" (call_expression "FUN_000b30c0(param_1 + 0x60)" identifier (argument_list "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))) ;) (expression_statement "uVar8 = uVar8 + *(int *)(param_1 + 0x74);" (assignment_expression "uVar8 = uVar8 + *(int *)(param_1 + 0x74)" identifier = (binary_expression "uVar8 + *(int *)(param_1 + 0x74)" identifier + (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))))) ;) })) (if_statement "if (param_4 == uVar8) {\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }" if (parenthesized_expression "(param_4 == uVar8)" ( (binary_expression "param_4 == uVar8" identifier == identifier) )) (compound_statement "{\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }" { (labeled_statement "LAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);" statement_identifier : (expression_statement "puVar10 = (uint *)(uVar9 + (int)puVar4);" (assignment_expression "puVar10 = (uint *)(uVar9 + (int)puVar4)" identifier = (cast_expression "(uint *)(uVar9 + (int)puVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + (int)puVar4)" ( (binary_expression "uVar9 + (int)puVar4" identifier + (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (if_statement "if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }" if (parenthesized_expression "(puVar4 < puVar10)" ( (binary_expression "puVar4 < puVar10" identifier < identifier) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }" { (do_statement "do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);" do (compound_statement "{\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      }" { (while_statement "while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }" { (expression_statement "uVar9 = *puVar4;" (assignment_expression "uVar9 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar9 == 1) break;" if (parenthesized_expression "(uVar9 == 1)" ( (binary_expression "uVar9 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar9 == 0) {\n            return;\n          }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (if_statement "if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }" if (parenthesized_expression "(uVar9 == 0xe)" ( (binary_expression "uVar9 == 0xe" identifier == number_literal) )) (compound_statement "{\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }" { (expression_statement "uVar9 = puVar4[1];" (assignment_expression "uVar9 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;" (assignment_expression "local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }" if (parenthesized_expression "((int)(uint)(local_54 < local_4c) <= -local_48)" ( (binary_expression "(int)(uint)(local_54 < local_4c) <= -local_48" (cast_expression "(int)(uint)(local_54 < local_4c)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_54 < local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_54 < local_4c)" ( (binary_expression "local_54 < local_4c" identifier < identifier) )))) <= (unary_expression "-local_48" - identifier)) )) (compound_statement "{\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }" { (expression_statement "pcVar7 = "DT_SONAME value out of range: %lld >= %lld";" (assignment_expression "pcVar7 = "DT_SONAME value out of range: %lld >= %lld"" identifier = (string_literal ""DT_SONAME value out of range: %lld >= %lld"" " string_content ")) ;) (goto_statement "goto LAB_000cf70b;" goto statement_identifier ;) })) (expression_statement "sVar6 = strlen((char *)(local_54 + param_5));" (assignment_expression "sVar6 = strlen((char *)(local_54 + param_5))" identifier = (call_expression "strlen((char *)(local_54 + param_5))" identifier (argument_list "((char *)(local_54 + param_5))" ( (cast_expression "(char *)(local_54 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_54 + param_5)" ( (binary_expression "local_54 + param_5" identifier + identifier) ))) )))) ;) (expression_statement "FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);" (call_expression "FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6)" identifier (argument_list "(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) , (cast_expression "(char *)(local_54 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_54 + param_5)" ( (binary_expression "local_54 + param_5" identifier + identifier) ))) , identifier ))) ;) })) (labeled_statement "joined_r0x000cf86a:\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 (puVar10 <= puVar4) goto LAB_000cf739;" if (parenthesized_expression "(puVar10 <= puVar4)" ( (binary_expression "puVar10 <= puVar4" identifier <= identifier) )) (goto_statement "goto LAB_000cf739;" goto statement_identifier ;)) })) (expression_statement "uVar9 = puVar4[1];" (assignment_expression "uVar9 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }" if (parenthesized_expression "((int)(uint)(local_54 < local_4c) <= -local_48)" ( (binary_expression "(int)(uint)(local_54 < local_4c) <= -local_48" (cast_expression "(int)(uint)(local_54 < local_4c)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_54 < local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_54 < local_4c)" ( (binary_expression "local_54 < local_4c" identifier < identifier) )))) <= (unary_expression "-local_48" - identifier)) )) (compound_statement "{\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }" { (expression_statement "pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";" (assignment_expression "pcVar7 = "DT_NEEDED value out of range: %lld >= %lld"" identifier = (string_literal ""DT_NEEDED value out of range: %lld >= %lld"" " string_content ")) ;) (labeled_statement "LAB_000cf70b:\n          uVar5 = gettext(pcVar7);" statement_identifier : (expression_statement "uVar5 = gettext(pcVar7);" (assignment_expression "uVar5 = gettext(pcVar7)" identifier = (call_expression "gettext(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier )))) ;)) (expression_statement "FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);" (call_expression "FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48)" identifier (argument_list "(param_1,uVar5,local_54,0,local_4c,local_48)" ( identifier , identifier , identifier , number_literal , identifier , identifier ))) ;) (goto_statement "goto joined_r0x000cf86a;" goto statement_identifier ;) })) (expression_statement "__s = (char *)(local_54 + param_5);" (assignment_expression "__s = (char *)(local_54 + param_5)" identifier = (cast_expression "(char *)(local_54 + param_5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_54 + param_5)" ( (binary_expression "local_54 + param_5" identifier + identifier) )))) ;) (expression_statement "pcVar7 = (char *)0xffffffff;" (assignment_expression "pcVar7 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = &local_2c;" (assignment_expression "local_34 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (if_statement "if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\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          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }" { (expression_statement "sVar6 = strlen(__s);" (assignment_expression "sVar6 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar7 = __s + sVar6;" (assignment_expression "pcVar7 = __s + sVar6" identifier = (binary_expression "__s + sVar6" identifier + identifier)) ;) })) (expression_statement "FUN_000a8880(&local_34,__s,pcVar7,0);" (call_expression "FUN_000a8880(&local_34,__s,pcVar7,0)" identifier (argument_list "(&local_34,__s,pcVar7,0)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "piVar3 = *(int **)(param_1 + 0x54);" (assignment_expression "piVar3 = *(int **)(param_1 + 0x54)" identifier = (pointer_expression "*(int **)(param_1 + 0x54)" * (cast_expression "(int **)(param_1 + 0x54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) ))))) ;) (if_statement "if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }" if (parenthesized_expression "(piVar3 != *(int **)(param_1 + 0x58))" ( (binary_expression "piVar3 != *(int **)(param_1 + 0x58)" identifier != (pointer_expression "*(int **)(param_1 + 0x58)" * (cast_expression "(int **)(param_1 + 0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) )) (compound_statement "{\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }" { (expression_statement "*piVar3 = (int)(piVar3 + 2);" (assignment_expression "*piVar3 = (int)(piVar3 + 2)" (pointer_expression "*piVar3" * identifier) = (cast_expression "(int)(piVar3 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) ;) (if_statement "if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }" if (parenthesized_expression "(local_34 == &local_2c)" ( (binary_expression "local_34 == &local_2c" identifier == (pointer_expression "&local_2c" & identifier)) )) (compound_statement "{\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }" { (expression_statement "piVar3[2] = local_2c;" (assignment_expression "piVar3[2] = local_2c" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[3] = local_28;" (assignment_expression "piVar3[3] = local_28" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[4] = local_24;" (assignment_expression "piVar3[4] = local_24" (subscript_expression "piVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[5] = local_20;" (assignment_expression "piVar3[5] = local_20" (subscript_expression "piVar3[5]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }" else (compound_statement "{\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }" { (expression_statement "*piVar3 = (int)local_34;" (assignment_expression "*piVar3 = (int)local_34" (pointer_expression "*piVar3" * identifier) = (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[2] = local_2c;" (assignment_expression "piVar3[2] = local_2c" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "piVar3[1] = local_30;" (assignment_expression "piVar3[1] = local_30" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;" (assignment_expression "*(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18" (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x54) + 0x18" (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) + number_literal)) ;) (goto_statement "goto joined_r0x000cf86a;" goto statement_identifier ;) })) (expression_statement "FUN_000ca560(param_1 + 0x50,piVar3,&local_34);" (call_expression "FUN_000ca560(param_1 + 0x50,piVar3,&local_34)" identifier (argument_list "(param_1 + 0x50,piVar3,&local_34)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) , identifier , (pointer_expression "&local_34" & identifier) ))) ;) (if_statement "if (local_34 == &local_2c) goto joined_r0x000cf86a;" if (parenthesized_expression "(local_34 == &local_2c)" ( (binary_expression "local_34 == &local_2c" identifier == (pointer_expression "&local_2c" & identifier)) )) (goto_statement "goto joined_r0x000cf86a;" goto statement_identifier ;)) (expression_statement "puVar4 = puVar4 + 2;" (assignment_expression "puVar4 = puVar4 + 2" identifier = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (expression_statement "FUN_00248220(local_34);" (call_expression "FUN_00248220(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) }) while (parenthesized_expression "(puVar4 < puVar10)" ( (binary_expression "puVar4 < puVar10" identifier < identifier) )) ;) })) (labeled_statement "LAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");" statement_identifier : (expression_statement "uVar5 = gettext("missing DT_NULL in dynamic segment");" (assignment_expression "uVar5 = 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_00121be0(param_1,uVar5);" (call_expression "FUN_00121be0(param_1,uVar5)" identifier (argument_list "(param_1,uVar5)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar8 < *(uint *)(param_1 + 0x28)) {\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }" if (parenthesized_expression "(uVar8 < *(uint *)(param_1 + 0x28))" ( (binary_expression "uVar8 < *(uint *)(param_1 + 0x28)" identifier < (pointer_expression "*(uint *)(param_1 + 0x28)" * (cast_expression "(uint *)(param_1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }" { (expression_statement "param_2 = param_2 + uVar8 * 0x28;" (assignment_expression "param_2 = param_2 + uVar8 * 0x28" identifier = (binary_expression "param_2 + uVar8 * 0x28" identifier + (binary_expression "uVar8 * 0x28" identifier * number_literal))) ;) (if_statement "if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\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      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }" { (expression_statement "uVar8 = *(uint *)(param_2 + 0x14);" (assignment_expression "uVar8 = *(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 "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = *(uint *)(param_2 + 0x10);" (assignment_expression "uVar2 = *(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 "local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;" if (parenthesized_expression "(*(int *)(param_1 + 0x1c) == 0)" ( (binary_expression "*(int *)(param_1 + 0x1c) == 0" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_000cf8fd;" goto statement_identifier ;)) (expression_statement "param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);" (assignment_expression "param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0)" identifier = (call_expression "FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0)" identifier (argument_list "(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0)" ( (binary_expression "*(int *)(param_1 + 0x1c) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x20)" * (cast_expression "(undefined4 *)(param_1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) , (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal)) , number_literal , identifier , number_literal , number_literal )))) ;) (goto_statement "goto LAB_000cf6c6;" goto statement_identifier ;) })) (expression_statement "pcVar7 = "DYNAMIC section %u link %u is not a strtab";" (assignment_expression "pcVar7 = "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    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }" else (compound_statement "{\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }" { (expression_statement "pcVar7 = "DYNAMIC section %u link out of range: %u";" (assignment_expression "pcVar7 = "DYNAMIC section %u link out of range: %u"" identifier = (string_literal ""DYNAMIC section %u link out of range: %u"" " string_content ")) ;) }))) (expression_statement "uVar5 = gettext(pcVar7);" (assignment_expression "uVar5 = gettext(pcVar7)" identifier = (call_expression "gettext(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier )))) ;) (expression_statement "FUN_00121be0(param_1,uVar5,param_3,uVar8);" (call_expression "FUN_00121be0(param_1,uVar5,param_3,uVar8)" identifier (argument_list "(param_1,uVar5,param_3,uVar8)" ( identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (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 TYPE (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 TYPE (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) )))) , (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)) , 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) )))))) ;) })) (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 TYPE) ) 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 = (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 TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) <= (unary_expression - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (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 = (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 TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) <= (unary_expression - 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 , LIT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (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 , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 TYPE (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 TYPE) ) (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) ;) (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 TYPE) ) 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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (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 (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) 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 IDENT + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (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 TYPE (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 TYPE (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) )))) , (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)) , 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_000cf590(int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,\n                 int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  uint *puVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  char *pcVar7;\n  undefined4 in_ECX;\n  uint uVar8;\n  char *__s;\n  uint uVar9;\n  uint *puVar10;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  local_48 = param_7;\n  local_4c = param_6;\n  iVar1 = param_2 + param_3 * 0x28;\n  if (*(int *)(iVar1 + 4) != 0x6000000) {\n                    \n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }\n  uVar9 = *(uint *)(iVar1 + 0x14);\n  uVar8 = *(uint *)(iVar1 + 0x10);\n  uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n  if (*(int *)(param_1 + 0x1c) == 0) {\nLAB_000cf8fd:\n                    \n    FUN_000c48d0();\n  }\n  puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0);\n  uVar8 = *(uint *)(iVar1 + 0x18);\n  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (0xfeff < uVar8) {\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }\n  if (param_4 == uVar8) {\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }\n  if (uVar8 < *(uint *)(param_1 + 0x28)) {\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar5 = gettext(pcVar7);\n  FUN_00121be0(param_1,uVar5,param_3,uVar8);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000cf590(int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,\n                 int param_7)" (identifier "FUN_000cf590") (parameter_list "(int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,\n                 int param_7)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (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 "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  uint *puVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  char *pcVar7;\n  undefined4 in_ECX;\n  uint uVar8;\n  char *__s;\n  uint uVar9;\n  uint *puVar10;\n  uint local_54;\n  uint local_4c;\n  int local_48;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  local_48 = param_7;\n  local_4c = param_6;\n  iVar1 = param_2 + param_3 * 0x28;\n  if (*(int *)(iVar1 + 4) != 0x6000000) {\n                    \n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }\n  uVar9 = *(uint *)(iVar1 + 0x14);\n  uVar8 = *(uint *)(iVar1 + 0x10);\n  uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n  if (*(int *)(param_1 + 0x1c) == 0) {\nLAB_000cf8fd:\n                    \n    FUN_000c48d0();\n  }\n  puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0);\n  uVar8 = *(uint *)(iVar1 + 0x18);\n  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (0xfeff < uVar8) {\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }\n  if (param_4 == uVar8) {\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }\n  if (uVar8 < *(uint *)(param_1 + 0x28)) {\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }\n  uVar5 = gettext(pcVar7);\n  FUN_00121be0(param_1,uVar5,param_3,uVar8);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "undefined4 in_ECX;" (type_identifier "undefined4") (identifier "in_ECX") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint local_54;" (type_identifier "uint") (identifier "local_54") (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "int *local_34;" (primitive_type "int") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "local_48 = param_7;" (assignment_expression "local_48 = param_7" (identifier "local_48") (= "=") (identifier "param_7")) (; ";")) (expression_statement "local_4c = param_6;" (assignment_expression "local_4c = param_6" (identifier "local_4c") (= "=") (identifier "param_6")) (; ";")) (expression_statement "iVar1 = param_2 + param_3 * 0x28;" (assignment_expression "iVar1 = param_2 + param_3 * 0x28" (identifier "iVar1") (= "=") (binary_expression "param_2 + param_3 * 0x28" (identifier "param_2") (+ "+") (binary_expression "param_3 * 0x28" (identifier "param_3") (* "*") (number_literal "0x28")))) (; ";")) (if_statement "if (*(int *)(iVar1 + 4) != 0x6000000) {\n                    \n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 4) != 0x6000000)" (( "(") (binary_expression "*(int *)(iVar1 + 4) != 0x6000000" (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0x6000000")) () ")")) (compound_statement "{\n                    \n    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);\n  }" ({ "{") (expression_statement "FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);" (call_expression "FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX)" (identifier "FUN_000da200") (argument_list "("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX)" (( "(") (string_literal ""../../gold/dynobj.cc"" (" """) (string_content "../../gold/dynobj.cc") (" """)) (, ",") (number_literal "0x100") (, ",") (string_literal ""read_dynamic"" (" """) (string_content "read_dynamic") (" """)) (, ",") (identifier "in_ECX") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar9 = *(uint *)(iVar1 + 0x14);" (assignment_expression "uVar9 = *(uint *)(iVar1 + 0x14)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x14)" (* "*") (cast_expression "(uint *)(iVar1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar8 = *(uint *)(iVar1 + 0x10);" (assignment_expression "uVar8 = *(uint *)(iVar1 + 0x10)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x10)" (* "*") (cast_expression "(uint *)(iVar1 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (identifier "uVar9") (= "=") (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x1c) == 0) {\nLAB_000cf8fd:\n                    \n    FUN_000c48d0();\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x1c) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1c) == 0" (pointer_expression "*(int *)(param_1 + 0x1c)" (* "*") (cast_expression "(int *)(param_1 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000cf8fd:\n                    \n    FUN_000c48d0();\n  }" ({ "{") (labeled_statement "LAB_000cf8fd:\n                    \n    FUN_000c48d0();" (statement_identifier "LAB_000cf8fd") (: ":") (expression_statement "FUN_000c48d0();" (call_expression "FUN_000c48d0()" (identifier "FUN_000c48d0") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (expression_statement "puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0);" (assignment_expression "puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0)" (identifier "FUN_000d4670") (argument_list "(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                                *(undefined4 *)(param_1 + 0x24),\n                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18,0,uVar9,1,0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1c) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x1c)" (* "*") (cast_expression "(int *)(param_1 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (number_literal "0x1c")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (, ",") (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |\n                                uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" (( "(") (binary_expression "uVar8 & 0xff0000" (identifier "uVar8") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" (( "(") (binary_expression "uVar8 & 0xff00" (identifier "uVar8") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar8 << 0x18" (identifier "uVar8") (<< "<<") (number_literal "0x18"))) (, ",") (number_literal "0") (, ",") (identifier "uVar9") (, ",") (number_literal "1") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "uVar8 = *(uint *)(iVar1 + 0x18);" (assignment_expression "uVar8 = *(uint *)(iVar1 + 0x18)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x18)" (* "*") (cast_expression "(uint *)(iVar1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (identifier "uVar8") (= "=") (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" (( "(") (binary_expression "uVar8 & 0xff0000" (identifier "uVar8") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" (( "(") (binary_expression "uVar8 & 0xff00" (identifier "uVar8") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar8 << 0x18" (identifier "uVar8") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (0xfeff < uVar8) {\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }" (if "if") (parenthesized_expression "(0xfeff < uVar8)" (( "(") (binary_expression "0xfeff < uVar8" (number_literal "0xfeff") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n    FUN_000b30c0(param_1 + 0x60);\n    uVar8 = uVar8 + *(int *)(param_1 + 0x74);\n  }" ({ "{") (expression_statement "FUN_000b30c0(param_1 + 0x60);" (call_expression "FUN_000b30c0(param_1 + 0x60)" (identifier "FUN_000b30c0") (argument_list "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))) (; ";")) (expression_statement "uVar8 = uVar8 + *(int *)(param_1 + 0x74);" (assignment_expression "uVar8 = uVar8 + *(int *)(param_1 + 0x74)" (identifier "uVar8") (= "=") (binary_expression "uVar8 + *(int *)(param_1 + 0x74)" (identifier "uVar8") (+ "+") (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))))) (; ";")) (} "}"))) (if_statement "if (param_4 == uVar8) {\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }" (if "if") (parenthesized_expression "(param_4 == uVar8)" (( "(") (binary_expression "param_4 == uVar8" (identifier "param_4") (== "==") (identifier "uVar8")) () ")")) (compound_statement "{\nLAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);\n    if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }\nLAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");\n    FUN_00121be0(param_1,uVar5);\n    return;\n  }" ({ "{") (labeled_statement "LAB_000cf6c6:\n    puVar10 = (uint *)(uVar9 + (int)puVar4);" (statement_identifier "LAB_000cf6c6") (: ":") (expression_statement "puVar10 = (uint *)(uVar9 + (int)puVar4);" (assignment_expression "puVar10 = (uint *)(uVar9 + (int)puVar4)" (identifier "puVar10") (= "=") (cast_expression "(uint *)(uVar9 + (int)puVar4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar9 + (int)puVar4)" (( "(") (binary_expression "uVar9 + (int)puVar4" (identifier "uVar9") (+ "+") (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4"))) () ")")))) (; ";"))) (if_statement "if (puVar4 < puVar10) {\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }" (if "if") (parenthesized_expression "(puVar4 < puVar10)" (( "(") (binary_expression "puVar4 < puVar10" (identifier "puVar4") (< "<") (identifier "puVar10")) () ")")) (compound_statement "{\n      do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);\n    }" ({ "{") (do_statement "do {\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      } while (puVar4 < puVar10);" (do "do") (compound_statement "{\n        while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }\n        uVar9 = puVar4[1];\n        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }\n        __s = (char *)(local_54 + param_5);\n        pcVar7 = (char *)0xffffffff;\n        local_34 = &local_2c;\n        if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }\n        FUN_000a8880(&local_34,__s,pcVar7,0);\n        piVar3 = *(int **)(param_1 + 0x54);\n        if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }\n                    \n        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);\n        if (local_34 == &local_2c) goto joined_r0x000cf86a;\n        puVar4 = puVar4 + 2;\n        FUN_00248220(local_34);\n      }" ({ "{") (while_statement "while( true ) {\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          uVar9 = *puVar4;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar9 == 1) break;\n          if (uVar9 == 0) {\n            return;\n          }\n          if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }\njoined_r0x000cf86a:\n          puVar4 = puVar4 + 2;\n          if (puVar10 <= puVar4) goto LAB_000cf739;\n        }" ({ "{") (expression_statement "uVar9 = *puVar4;" (assignment_expression "uVar9 = *puVar4" (identifier "uVar9") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (identifier "uVar9") (= "=") (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (uVar9 == 1) break;" (if "if") (parenthesized_expression "(uVar9 == 1)" (( "(") (binary_expression "uVar9 == 1" (identifier "uVar9") (== "==") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (uVar9 == 0) {\n            return;\n          }" (if "if") (parenthesized_expression "(uVar9 == 0)" (( "(") (binary_expression "uVar9 == 0" (identifier "uVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar9 == 0xe) {\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }" (if "if") (parenthesized_expression "(uVar9 == 0xe)" (( "(") (binary_expression "uVar9 == 0xe" (identifier "uVar9") (== "==") (number_literal "0xe")) () ")")) (compound_statement "{\n            uVar9 = puVar4[1];\n            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;\n            if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }\n            sVar6 = strlen((char *)(local_54 + param_5));\n            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);\n          }" ({ "{") (expression_statement "uVar9 = puVar4[1];" (assignment_expression "uVar9 = puVar4[1]" (identifier "uVar9") (= "=") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18;" (assignment_expression "local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18" (identifier "local_54") (= "=") (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |\n                       uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }" (if "if") (parenthesized_expression "((int)(uint)(local_54 < local_4c) <= -local_48)" (( "(") (binary_expression "(int)(uint)(local_54 < local_4c) <= -local_48" (cast_expression "(int)(uint)(local_54 < local_4c)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(local_54 < local_4c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_54 < local_4c)" (( "(") (binary_expression "local_54 < local_4c" (identifier "local_54") (< "<") (identifier "local_4c")) () ")")))) (<= "<=") (unary_expression "-local_48" (- "-") (identifier "local_48"))) () ")")) (compound_statement "{\n              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";\n              goto LAB_000cf70b;\n            }" ({ "{") (expression_statement "pcVar7 = "DT_SONAME value out of range: %lld >= %lld";" (assignment_expression "pcVar7 = "DT_SONAME value out of range: %lld >= %lld"" (identifier "pcVar7") (= "=") (string_literal ""DT_SONAME value out of range: %lld >= %lld"" (" """) (string_content "DT_SONAME value out of range: %lld >= %lld") (" """))) (; ";")) (goto_statement "goto LAB_000cf70b;" (goto "goto") (statement_identifier "LAB_000cf70b") (; ";")) (} "}"))) (expression_statement "sVar6 = strlen((char *)(local_54 + param_5));" (assignment_expression "sVar6 = strlen((char *)(local_54 + param_5))" (identifier "sVar6") (= "=") (call_expression "strlen((char *)(local_54 + param_5))" (identifier "strlen") (argument_list "((char *)(local_54 + param_5))" (( "(") (cast_expression "(char *)(local_54 + param_5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_54 + param_5)" (( "(") (binary_expression "local_54 + param_5" (identifier "local_54") (+ "+") (identifier "param_5")) () ")"))) () ")")))) (; ";")) (expression_statement "FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6);" (call_expression "FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6)" (identifier "FUN_00250e60") (argument_list "(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),\n                         (char *)(local_54 + param_5),sVar6)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) (, ",") (number_literal "0") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (, ",") (cast_expression "(char *)(local_54 + param_5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_54 + param_5)" (( "(") (binary_expression "local_54 + param_5" (identifier "local_54") (+ "+") (identifier "param_5")) () ")"))) (, ",") (identifier "sVar6") () ")"))) (; ";")) (} "}"))) (labeled_statement "joined_r0x000cf86a:\n          puVar4 = puVar4 + 2;" (statement_identifier "joined_r0x000cf86a") (: ":") (expression_statement "puVar4 = puVar4 + 2;" (assignment_expression "puVar4 = puVar4 + 2" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2"))) (; ";"))) (if_statement "if (puVar10 <= puVar4) goto LAB_000cf739;" (if "if") (parenthesized_expression "(puVar10 <= puVar4)" (( "(") (binary_expression "puVar10 <= puVar4" (identifier "puVar10") (<= "<=") (identifier "puVar4")) () ")")) (goto_statement "goto LAB_000cf739;" (goto "goto") (statement_identifier "LAB_000cf739") (; ";"))) (} "}"))) (expression_statement "uVar9 = puVar4[1];" (assignment_expression "uVar9 = puVar4[1]" (identifier "uVar9") (= "=") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (identifier "local_54") (= "=") (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if ((int)(uint)(local_54 < local_4c) <= -local_48) {\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }" (if "if") (parenthesized_expression "((int)(uint)(local_54 < local_4c) <= -local_48)" (( "(") (binary_expression "(int)(uint)(local_54 < local_4c) <= -local_48" (cast_expression "(int)(uint)(local_54 < local_4c)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(local_54 < local_4c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_54 < local_4c)" (( "(") (binary_expression "local_54 < local_4c" (identifier "local_54") (< "<") (identifier "local_4c")) () ")")))) (<= "<=") (unary_expression "-local_48" (- "-") (identifier "local_48"))) () ")")) (compound_statement "{\n          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";\nLAB_000cf70b:\n          uVar5 = gettext(pcVar7);\n          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);\n          goto joined_r0x000cf86a;\n        }" ({ "{") (expression_statement "pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";" (assignment_expression "pcVar7 = "DT_NEEDED value out of range: %lld >= %lld"" (identifier "pcVar7") (= "=") (string_literal ""DT_NEEDED value out of range: %lld >= %lld"" (" """) (string_content "DT_NEEDED value out of range: %lld >= %lld") (" """))) (; ";")) (labeled_statement "LAB_000cf70b:\n          uVar5 = gettext(pcVar7);" (statement_identifier "LAB_000cf70b") (: ":") (expression_statement "uVar5 = gettext(pcVar7);" (assignment_expression "uVar5 = gettext(pcVar7)" (identifier "uVar5") (= "=") (call_expression "gettext(pcVar7)" (identifier "gettext") (argument_list "(pcVar7)" (( "(") (identifier "pcVar7") () ")")))) (; ";"))) (expression_statement "FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);" (call_expression "FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48)" (identifier "FUN_00121be0") (argument_list "(param_1,uVar5,local_54,0,local_4c,local_48)" (( "(") (identifier "param_1") (, ",") (identifier "uVar5") (, ",") (identifier "local_54") (, ",") (number_literal "0") (, ",") (identifier "local_4c") (, ",") (identifier "local_48") () ")"))) (; ";")) (goto_statement "goto joined_r0x000cf86a;" (goto "goto") (statement_identifier "joined_r0x000cf86a") (; ";")) (} "}"))) (expression_statement "__s = (char *)(local_54 + param_5);" (assignment_expression "__s = (char *)(local_54 + param_5)" (identifier "__s") (= "=") (cast_expression "(char *)(local_54 + param_5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_54 + param_5)" (( "(") (binary_expression "local_54 + param_5" (identifier "local_54") (+ "+") (identifier "param_5")) () ")")))) (; ";")) (expression_statement "pcVar7 = (char *)0xffffffff;" (assignment_expression "pcVar7 = (char *)0xffffffff" (identifier "pcVar7") (= "=") (cast_expression "(char *)0xffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "local_34 = &local_2c;" (assignment_expression "local_34 = &local_2c" (identifier "local_34") (= "=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) (; ";")) (if_statement "if (__s != (char *)0x0) {\n          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\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          sVar6 = strlen(__s);\n          pcVar7 = __s + sVar6;\n        }" ({ "{") (expression_statement "sVar6 = strlen(__s);" (assignment_expression "sVar6 = strlen(__s)" (identifier "sVar6") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "pcVar7 = __s + sVar6;" (assignment_expression "pcVar7 = __s + sVar6" (identifier "pcVar7") (= "=") (binary_expression "__s + sVar6" (identifier "__s") (+ "+") (identifier "sVar6"))) (; ";")) (} "}"))) (expression_statement "FUN_000a8880(&local_34,__s,pcVar7,0);" (call_expression "FUN_000a8880(&local_34,__s,pcVar7,0)" (identifier "FUN_000a8880") (argument_list "(&local_34,__s,pcVar7,0)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "__s") (, ",") (identifier "pcVar7") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "piVar3 = *(int **)(param_1 + 0x54);" (assignment_expression "piVar3 = *(int **)(param_1 + 0x54)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(param_1 + 0x54)" (* "*") (cast_expression "(int **)(param_1 + 0x54)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (if_statement "if (piVar3 != *(int **)(param_1 + 0x58)) {\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }" (if "if") (parenthesized_expression "(piVar3 != *(int **)(param_1 + 0x58))" (( "(") (binary_expression "piVar3 != *(int **)(param_1 + 0x58)" (identifier "piVar3") (!= "!=") (pointer_expression "*(int **)(param_1 + 0x58)" (* "*") (cast_expression "(int **)(param_1 + 0x58)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (compound_statement "{\n          *piVar3 = (int)(piVar3 + 2);\n          if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }\n          piVar3[1] = local_30;\n          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;\n          goto joined_r0x000cf86a;\n        }" ({ "{") (expression_statement "*piVar3 = (int)(piVar3 + 2);" (assignment_expression "*piVar3 = (int)(piVar3 + 2)" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (cast_expression "(int)(piVar3 + 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (local_34 == &local_2c) {\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }\n          else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }" (if "if") (parenthesized_expression "(local_34 == &local_2c)" (( "(") (binary_expression "local_34 == &local_2c" (identifier "local_34") (== "==") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) () ")")) (compound_statement "{\n            piVar3[2] = local_2c;\n            piVar3[3] = local_28;\n            piVar3[4] = local_24;\n            piVar3[5] = local_20;\n          }" ({ "{") (expression_statement "piVar3[2] = local_2c;" (assignment_expression "piVar3[2] = local_2c" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "piVar3[3] = local_28;" (assignment_expression "piVar3[3] = local_28" (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "piVar3[4] = local_24;" (assignment_expression "piVar3[4] = local_24" (subscript_expression "piVar3[4]" (identifier "piVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "piVar3[5] = local_20;" (assignment_expression "piVar3[5] = local_20" (subscript_expression "piVar3[5]" (identifier "piVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "local_20")) (; ";")) (} "}")) (else_clause "else {\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }" (else "else") (compound_statement "{\n            *piVar3 = (int)local_34;\n            piVar3[2] = local_2c;\n          }" ({ "{") (expression_statement "*piVar3 = (int)local_34;" (assignment_expression "*piVar3 = (int)local_34" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (cast_expression "(int)local_34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_34"))) (; ";")) (expression_statement "piVar3[2] = local_2c;" (assignment_expression "piVar3[2] = local_2c" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_2c")) (; ";")) (} "}")))) (expression_statement "piVar3[1] = local_30;" (assignment_expression "piVar3[1] = local_30" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_30")) (; ";")) (expression_statement "*(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;" (assignment_expression "*(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18" (pointer_expression "*(int *)(param_1 + 0x54)" (* "*") (cast_expression "(int *)(param_1 + 0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x54) + 0x18" (pointer_expression "*(int *)(param_1 + 0x54)" (* "*") (cast_expression "(int *)(param_1 + 0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")")))) (+ "+") (number_literal "0x18"))) (; ";")) (goto_statement "goto joined_r0x000cf86a;" (goto "goto") (statement_identifier "joined_r0x000cf86a") (; ";")) (} "}"))) (expression_statement "FUN_000ca560(param_1 + 0x50,piVar3,&local_34);" (call_expression "FUN_000ca560(param_1 + 0x50,piVar3,&local_34)" (identifier "FUN_000ca560") (argument_list "(param_1 + 0x50,piVar3,&local_34)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) (, ",") (identifier "piVar3") (, ",") (pointer_expression "&local_34" (& "&") (identifier "local_34")) () ")"))) (; ";")) (if_statement "if (local_34 == &local_2c) goto joined_r0x000cf86a;" (if "if") (parenthesized_expression "(local_34 == &local_2c)" (( "(") (binary_expression "local_34 == &local_2c" (identifier "local_34") (== "==") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) () ")")) (goto_statement "goto joined_r0x000cf86a;" (goto "goto") (statement_identifier "joined_r0x000cf86a") (; ";"))) (expression_statement "puVar4 = puVar4 + 2;" (assignment_expression "puVar4 = puVar4 + 2" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "FUN_00248220(local_34);" (call_expression "FUN_00248220(local_34)" (identifier "FUN_00248220") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar4 < puVar10)" (( "(") (binary_expression "puVar4 < puVar10" (identifier "puVar4") (< "<") (identifier "puVar10")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_000cf739:\n    uVar5 = gettext("missing DT_NULL in dynamic segment");" (statement_identifier "LAB_000cf739") (: ":") (expression_statement "uVar5 = gettext("missing DT_NULL in dynamic segment");" (assignment_expression "uVar5 = gettext("missing DT_NULL in dynamic segment")" (identifier "uVar5") (= "=") (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_00121be0(param_1,uVar5);" (call_expression "FUN_00121be0(param_1,uVar5)" (identifier "FUN_00121be0") (argument_list "(param_1,uVar5)" (( "(") (identifier "param_1") (, ",") (identifier "uVar5") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar8 < *(uint *)(param_1 + 0x28)) {\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }\n  else {\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }" (if "if") (parenthesized_expression "(uVar8 < *(uint *)(param_1 + 0x28))" (( "(") (binary_expression "uVar8 < *(uint *)(param_1 + 0x28)" (identifier "uVar8") (< "<") (pointer_expression "*(uint *)(param_1 + 0x28)" (* "*") (cast_expression "(uint *)(param_1 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    param_2 = param_2 + uVar8 * 0x28;\n    if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }\n    pcVar7 = "DYNAMIC section %u link %u is not a strtab";\n  }" ({ "{") (expression_statement "param_2 = param_2 + uVar8 * 0x28;" (assignment_expression "param_2 = param_2 + uVar8 * 0x28" (identifier "param_2") (= "=") (binary_expression "param_2 + uVar8 * 0x28" (identifier "param_2") (+ "+") (binary_expression "uVar8 * 0x28" (identifier "uVar8") (* "*") (number_literal "0x28")))) (; ";")) (if_statement "if (*(int *)(param_2 + 4) == 0x3000000) {\n      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\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      uVar8 = *(uint *)(param_2 + 0x14);\n      local_48 = 0;\n      uVar2 = *(uint *)(param_2 + 0x10);\n      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;\n      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);\n      goto LAB_000cf6c6;\n    }" ({ "{") (expression_statement "uVar8 = *(uint *)(param_2 + 0x14);" (assignment_expression "uVar8 = *(uint *)(param_2 + 0x14)" (identifier "uVar8") (= "=") (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 "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = *(uint *)(param_2 + 0x10);" (assignment_expression "uVar2 = *(uint *)(param_2 + 0x10)" (identifier "uVar2") (= "=") (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 "local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (identifier "local_4c") (= "=") (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" (( "(") (binary_expression "uVar8 & 0xff0000" (identifier "uVar8") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" (( "(") (binary_expression "uVar8 & 0xff00" (identifier "uVar8") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar8 << 0x18" (identifier "uVar8") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x1c) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1c) == 0" (pointer_expression "*(int *)(param_1 + 0x1c)" (* "*") (cast_expression "(int *)(param_1 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000cf8fd;" (goto "goto") (statement_identifier "LAB_000cf8fd") (; ";"))) (expression_statement "param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0);" (assignment_expression "param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0)" (identifier "param_5") (= "=") (call_expression "FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0)" (identifier "FUN_000d4670") (argument_list "(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),\n                             *(undefined4 *)(param_1 + 0x24),\n                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18,0,local_4c,0,0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1c) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x1c)" (* "*") (cast_expression "(int *)(param_1 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (number_literal "0x1c")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (, ",") (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n                             uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" (identifier "uVar2") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" (( "(") (binary_expression "uVar2 & 0xff0000" (identifier "uVar2") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" (( "(") (binary_expression "uVar2 & 0xff00" (identifier "uVar2") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar2 << 0x18" (identifier "uVar2") (<< "<<") (number_literal "0x18"))) (, ",") (number_literal "0") (, ",") (identifier "local_4c") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (goto_statement "goto LAB_000cf6c6;" (goto "goto") (statement_identifier "LAB_000cf6c6") (; ";")) (} "}"))) (expression_statement "pcVar7 = "DYNAMIC section %u link %u is not a strtab";" (assignment_expression "pcVar7 = "DYNAMIC section %u link %u is not a strtab"" (identifier "pcVar7") (= "=") (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    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }" (else "else") (compound_statement "{\n    pcVar7 = "DYNAMIC section %u link out of range: %u";\n  }" ({ "{") (expression_statement "pcVar7 = "DYNAMIC section %u link out of range: %u";" (assignment_expression "pcVar7 = "DYNAMIC section %u link out of range: %u"" (identifier "pcVar7") (= "=") (string_literal ""DYNAMIC section %u link out of range: %u"" (" """) (string_content "DYNAMIC section %u link out of range: %u") (" """))) (; ";")) (} "}")))) (expression_statement "uVar5 = gettext(pcVar7);" (assignment_expression "uVar5 = gettext(pcVar7)" (identifier "uVar5") (= "=") (call_expression "gettext(pcVar7)" (identifier "gettext") (argument_list "(pcVar7)" (( "(") (identifier "pcVar7") () ")")))) (; ";")) (expression_statement "FUN_00121be0(param_1,uVar5,param_3,uVar8);" (call_expression "FUN_00121be0(param_1,uVar5,param_3,uVar8)" (identifier "FUN_00121be0") (argument_list "(param_1,uVar5,param_3,uVar8)" (( "(") (identifier "param_1") (, ",") (identifier "uVar5") (, ",") (identifier "param_3") (, ",") (identifier "uVar8") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* 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_5 *var_5,type_4 var_6,type_4 var_14,
          type_5 *var_20,type_10 strtab_size)

{
  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_9;
  type_3 __position;
  type_4 *var_15;
  char *pcVar5;
  size_t var_25;
  type_5 *puVar7;
  type_4 var_31;
  type_4 var_12;
  type_5 *var_24;
  type_4 var_8;
  type_4 *var_16;
  type_6 *in_stack_ffffffa4;
  type_4 var_17;
  type_4 var_18;
  int local_48;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> var_4;
  
  if (*(int *)(var_5 + var_6 * 0x28 + 4) != 0x6000000) {
                    /* WARNING: Subroutine does not return */
    var_7("../../gold/dynobj.cc",0x100,"read_dynamic");
  }
  var_8 = *(type_4 *)(var_5 + var_6 * 0x28 + 0x14);
  var_12 = *(type_4 *)(var_5 + var_6 * 0x28 + 0x10);
  var_9 = (this->super_Dynobj).super_Object.input_file_;
  var_8 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 | var_8 << 0x18;
  if (var_9 == (type_2 *)0x0) {
LAB_000cf8fd:
                    /* WARNING: Subroutine does not return */
    Object::var_10(in_stack_ffffffa4);
  }
  var_15 = (type_4 *)File_read::var_11(&var_9->file_,(this->super_Dynobj).super_Object.offset_,
                                       (type_7)
                                       (var_12 >> 0x18 | (var_12 & 0xff0000) >> 8 |
                                        (var_12 & 0xff00) << 8 | var_12 << 0x18),var_8,true,false);
  var_12 = *(type_4 *)(var_5 + var_6 * 0x28 + 0x18);
  var_12 = var_12 >> 0x18 | (var_12 & 0xff0000) >> 8 | (var_12 & 0xff00) << 8 | var_12 << 0x18;
  if (0xfeff < var_12) {
    elfcpp::Elf_file<32,_true,_gold::type_6>::var_13(&this->elf_file_);
    var_12 = var_12 + (this->elf_file_).large_shndx_offset_;
  }
  if (var_14 == var_12) {
LAB_000cf6c6:
    local_48 = (int)((type_7)strtab_size >> 0x20);
    var_18 = (type_4)strtab_size;
    var_16 = (type_4 *)(var_8 + (int)var_15);
    if (var_15 < var_16) {
      var_29 = &var_4.field_2;
      do {
        while( true ) {
          var_8 = *var_15;
          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_15[1];
            var_17 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 |
                       var_8 << 0x18;
            if ((int)(type_4)(var_17 < var_18) <= -local_48) {
              pcVar5 = "DT_SONAME value out of range: %lld >= %lld";
              goto LAB_000cf70b;
            }
            var_25 = var_19((char *)(var_20 + var_17));
            std::string::var_21
                      ((type_8 *)&(this->super_Dynobj).soname_,0,
                       (this->super_Dynobj).soname_._M_string_length,(char *)(var_20 + var_17),
                       var_25);
          }
joined_r0x000cf86a:
          var_15 = var_15 + 2;
          if (var_16 <= var_15) goto LAB_000cf739;
        }
        var_8 = var_15[1];
        var_17 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 |
                   var_8 << 0x18;
        if ((int)(type_4)(var_17 < var_18) <= -local_48) {
          pcVar5 = "DT_NEEDED value out of range: %lld >= %lld";
LAB_000cf70b:
          pcVar5 = (char *)var_22(pcVar5);
          Object::var_23((type_6 *)this,pcVar5,var_17,0,var_18,local_48);
          goto joined_r0x000cf86a;
        }
        var_24 = var_20 + var_17;
        puVar7 = (type_5 *)0xffffffff;
        var_4._M_dataplus._M_p = (type_1)var_29;
        if (var_24 != (type_5 *)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,0);
        __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 *)((int)&(__position._M_current)->field_2 + 4) = var_4.field_2._4_4_;
            *(type_9 *)((int)&(__position._M_current)->field_2 + 8) = var_4.field_2._8_4_;
            *(type_9 *)((int)&(__position._M_current)->field_2 + 0xc) = var_4.field_2._12_4_;
          }
          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_r0x000cf86a;
        }
                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */
        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_r0x000cf86a;
        var_15 = var_15 + 2;
        var_30(var_4._M_dataplus._M_p);
      } while (var_15 < var_16);
    }
LAB_000cf739:
    pcVar5 = (char *)var_22("missing DT_NULL in dynamic segment");
    Object::var_23((type_6 *)this,pcVar5);
    return;
  }
  if (var_12 < (this->super_Dynobj).super_Object.shnum_) {
    if (*(int *)(var_5 + var_12 * 0x28 + 4) == 0x3000000) {
      var_31 = *(type_4 *)(var_5 + var_12 * 0x28 + 0x14);
      var_12 = *(type_4 *)(var_5 + var_12 * 0x28 + 0x10);
      var_9 = (this->super_Dynobj).super_Object.input_file_;
      var_31 = var_31 >> 0x18 | (var_31 & 0xff0000) >> 8 | (var_31 & 0xff00) << 8 | var_31 << 0x18;
      strtab_size = (type_10)var_31;
      if (var_9 == (type_2 *)0x0) goto LAB_000cf8fd;
      var_20 = File_read::var_11(&var_9->file_,(this->super_Dynobj).super_Object.offset_,
                                    (type_7)
                                    (var_12 >> 0x18 | (var_12 & 0xff0000) >> 8 | (var_12 & 0xff00) << 8
                                    | var_12 << 0x18),var_31,false,false);
      goto LAB_000cf6c6;
    }
    pcVar5 = "DYNAMIC section %u link %u is not a strtab";
  }
  else {
    pcVar5 = "DYNAMIC section %u link out of range: %u";
  }
  pcVar5 = (char *)var_22(pcVar5);
  Object::var_23((type_6 *)this,pcVar5,var_6,var_12);
  return;
}


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

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

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

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  uint *puVar4;
  undefined4 uVar5;
  size_t sVar6;
  char *pcVar7;
  undefined4 in_ECX;
  uint uVar8;
  char *__s;
  uint uVar9;
  uint *puVar10;
  uint local_54;
  uint local_4c;
  int local_48;
  int *local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  
  local_48 = param_7;
  local_4c = param_6;
  iVar1 = param_2 + param_3 * 0x28;
  if (*(int *)(iVar1 + 4) != 0x6000000) {
                    /* WARNING: Subroutine does not return */
    FUN_000da200("../../gold/dynobj.cc",0x100,"read_dynamic",in_ECX);
  }
  uVar9 = *(uint *)(iVar1 + 0x14);
  uVar8 = *(uint *)(iVar1 + 0x10);
  uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
  if (*(int *)(param_1 + 0x1c) == 0) {
LAB_000cf8fd:
                    /* WARNING: Subroutine does not return */
    FUN_000c48d0();
  }
  puVar4 = (uint *)FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),
                                *(undefined4 *)(param_1 + 0x24),
                                uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 |
                                uVar8 << 0x18,0,uVar9,1,0);
  uVar8 = *(uint *)(iVar1 + 0x18);
  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
  if (0xfeff < uVar8) {
    FUN_000b30c0(param_1 + 0x60);
    uVar8 = uVar8 + *(int *)(param_1 + 0x74);
  }
  if (param_4 == uVar8) {
LAB_000cf6c6:
    puVar10 = (uint *)(uVar9 + (int)puVar4);
    if (puVar4 < puVar10) {
      do {
        while( true ) {
          uVar9 = *puVar4;
          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
          if (uVar9 == 1) break;
          if (uVar9 == 0) {
            return;
          }
          if (uVar9 == 0xe) {
            uVar9 = puVar4[1];
            local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 |
                       uVar9 << 0x18;
            if ((int)(uint)(local_54 < local_4c) <= -local_48) {
              pcVar7 = "DT_SONAME value out of range: %lld >= %lld";
              goto LAB_000cf70b;
            }
            sVar6 = strlen((char *)(local_54 + param_5));
            FUN_00250e60(param_1 + 0x38,0,*(undefined4 *)(param_1 + 0x3c),
                         (char *)(local_54 + param_5),sVar6);
          }
joined_r0x000cf86a:
          puVar4 = puVar4 + 2;
          if (puVar10 <= puVar4) goto LAB_000cf739;
        }
        uVar9 = puVar4[1];
        local_54 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
        if ((int)(uint)(local_54 < local_4c) <= -local_48) {
          pcVar7 = "DT_NEEDED value out of range: %lld >= %lld";
LAB_000cf70b:
          uVar5 = gettext(pcVar7);
          FUN_00121be0(param_1,uVar5,local_54,0,local_4c,local_48);
          goto joined_r0x000cf86a;
        }
        __s = (char *)(local_54 + param_5);
        pcVar7 = (char *)0xffffffff;
        local_34 = &local_2c;
        if (__s != (char *)0x0) {
          sVar6 = strlen(__s);
          pcVar7 = __s + sVar6;
        }
        FUN_000a8880(&local_34,__s,pcVar7,0);
        piVar3 = *(int **)(param_1 + 0x54);
        if (piVar3 != *(int **)(param_1 + 0x58)) {
          *piVar3 = (int)(piVar3 + 2);
          if (local_34 == &local_2c) {
            piVar3[2] = local_2c;
            piVar3[3] = local_28;
            piVar3[4] = local_24;
            piVar3[5] = local_20;
          }
          else {
            *piVar3 = (int)local_34;
            piVar3[2] = local_2c;
          }
          piVar3[1] = local_30;
          *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 0x18;
          goto joined_r0x000cf86a;
        }
                    /* try { // try from 000cf884 to 000cf888 has its CatchHandler @ 000cf91e */
        FUN_000ca560(param_1 + 0x50,piVar3,&local_34);
        if (local_34 == &local_2c) goto joined_r0x000cf86a;
        puVar4 = puVar4 + 2;
        FUN_00248220(local_34);
      } while (puVar4 < puVar10);
    }
LAB_000cf739:
    uVar5 = gettext("missing DT_NULL in dynamic segment");
    FUN_00121be0(param_1,uVar5);
    return;
  }
  if (uVar8 < *(uint *)(param_1 + 0x28)) {
    param_2 = param_2 + uVar8 * 0x28;
    if (*(int *)(param_2 + 4) == 0x3000000) {
      uVar8 = *(uint *)(param_2 + 0x14);
      local_48 = 0;
      uVar2 = *(uint *)(param_2 + 0x10);
      local_4c = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
      if (*(int *)(param_1 + 0x1c) == 0) goto LAB_000cf8fd;
      param_5 = FUN_000d4670(*(int *)(param_1 + 0x1c) + 0x1c,*(undefined4 *)(param_1 + 0x20),
                             *(undefined4 *)(param_1 + 0x24),
                             uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |
                             uVar2 << 0x18,0,local_4c,0,0);
      goto LAB_000cf6c6;
    }
    pcVar7 = "DYNAMIC section %u link %u is not a strtab";
  }
  else {
    pcVar7 = "DYNAMIC section %u link out of range: %u";
  }
  uVar5 = gettext(pcVar7);
  FUN_00121be0(param_1,uVar5,param_3,uVar8);
  return;
}

