
/* WARNING: Enum "SHT": Some values do not have unique names */
/* DWARF original prototype: void base_read_symbols(Sized_dynobj<32,_false> * this,
   Read_symbols_data * sd) */

void __thiscall
gold::Sized_dynobj<32,_false>::base_read_symbols
          (Sized_dynobj<32,_false> *this,Read_symbols_data *sd)

{
  uchar *pshdrs;
  size_t __haystacklen;
  uchar *names;
  void *pvVar1;
  Compressed_section_map *pCVar2;
  File_view *pFVar3;
  char *pcVar4;
  Input_file *this_00;
  uint uVar5;
  uint link;
  uint versym_shndx;
  uint verdef_shndx;
  uint verneed_shndx;
  uint dynamic_shndx;
  uint dummy;
  
  Object::read_section_data<32,_false>((Object *)this,&this->elf_file_,sd);
  pshdrs = sd->section_headers->data_;
  find_dynsym_sections(this,pshdrs,&versym_shndx,&verdef_shndx,&verneed_shndx,&dynamic_shndx);
  __haystacklen = sd->section_names_size;
  sd->symbols = (File_view *)0x0;
  sd->symbols_size = 0;
  names = sd->section_names->data_;
  sd->external_symbols_offset = 0;
  sd->symbol_names = (File_view *)0x0;
  sd->symbol_names_size = 0;
  sd->versym = (File_view *)0x0;
  sd->versym_size = 0;
  sd->verdef = (File_view *)0x0;
  sd->verdef_size = 0;
  sd->verdef_info = 0;
  sd->verneed = (File_view *)0x0;
  sd->verneed_size = 0;
  sd->verneed_info = 0;
  pvVar1 = memmem(names,__haystacklen,".zdebug_",8);
  if ((pvVar1 != (void *)0x0) &&
     (pCVar2 = build_compressed_section_map<32,_false>
                         (pshdrs,(this->super_Dynobj).super_Object.shnum_,(char *)names,
                          __haystacklen,(Object *)this,true),
     pCVar2 != (Compressed_section_map *)0x0)) {
    (this->super_Dynobj).super_Object.compressed_sections_ = pCVar2;
  }
  link = this->dynsym_shndx_;
  if (link == 0xffffffff) {
LAB_002a5bea:
    if (dynamic_shndx != 0xffffffff) {
      pFVar3 = sd->symbol_names;
      if (pFVar3 != (File_view *)0x0) {
        pFVar3 = (File_view *)pFVar3->data_;
      }
      read_dynamic(this,pshdrs,dynamic_shndx,link,(uchar *)pFVar3,sd->symbol_names_size);
    }
    return;
  }
  this_00 = (this->super_Dynobj).super_Object.input_file_;
  if (this_00 != (Input_file *)0x0) {
    pFVar3 = File_read::get_lasting_view
                       (&this_00->file_,(this->super_Dynobj).super_Object.offset_,
                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),
                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),true,false);
    sd->symbols = pFVar3;
    uVar5 = link * 0x28;
    link = *(uint *)(pshdrs + (ulong)(link * 0x28) + 0x18);
    sd->symbols_size = (ulong)*(uint *)(pshdrs + (ulong)uVar5 + 0x14);
    if (0xfeff < link) {
      elfcpp::Elf_file<32,_false,_gold::Object>::initialize_shnum(&this->elf_file_);
      link = link + (this->elf_file_).large_shndx_offset_;
    }
    if ((this->super_Dynobj).super_Object.shnum_ <= link) {
      pcVar4 = (char *)gettext("invalid dynamic symbol table name index: %u");
      Object::error((Object *)this,pcVar4,(ulong)link);
      return;
    }
    uVar5 = *(uint *)(pshdrs + (ulong)(link * 0x28) + 4);
    if (uVar5 != 3) {
      pcVar4 = (char *)gettext("dynamic symbol table name section has wrong type: %u");
      Object::error((Object *)this,pcVar4,(ulong)uVar5);
      return;
    }
    this_00 = (this->super_Dynobj).super_Object.input_file_;
    if (this_00 != (Input_file *)0x0) {
      pFVar3 = File_read::get_lasting_view
                         (&this_00->file_,(this->super_Dynobj).super_Object.offset_,
                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),
                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),false,false);
      sd->symbol_names = pFVar3;
      uVar5 = this->dynsym_shndx_;
      sd->symbol_names_size = (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14);
      read_dynsym_section(this,pshdrs,versym_shndx,SHT_GNU_versym,uVar5,&sd->versym,&sd->versym_size
                          ,&dummy);
      read_dynsym_section(this,pshdrs,verdef_shndx,SHT_GNU_verdef,link,&sd->verdef,&sd->verdef_size,
                          &sd->verdef_info);
      read_dynsym_section(this,pshdrs,verneed_shndx,SHT_GNU_verneed,link,&sd->verneed,
                          &sd->verneed_size,&sd->verneed_info);
      goto LAB_002a5bea;
    }
  }
                    /* WARNING: Subroutine does not return */
  Object::input_file((Object *)this_00);
}



void FUN_002a5ae0(long param_1,long *param_2)

{
  int iVar1;
  undefined4 uVar2;
  long lVar3;
  size_t __haystacklen;
  void *__haystack;
  void *pvVar4;
  long lVar5;
  long lVar6;
  undefined8 uVar7;
  uint uVar8;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  int local_40;
  undefined1 local_3c [12];
  
  FUN_001c5dc0(param_1,param_1 + 0x90,param_2);
  lVar3 = *(long *)(*param_2 + 0x10);
  FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);
  __haystacklen = param_2[2];
  param_2[3] = 0;
  param_2[4] = 0;
  __haystack = *(void **)(param_2[1] + 0x10);
  param_2[5] = 0;
  param_2[6] = 0;
  param_2[7] = 0;
  param_2[8] = 0;
  param_2[9] = 0;
  param_2[10] = 0;
  param_2[0xb] = 0;
  *(undefined4 *)(param_2 + 0xc) = 0;
  param_2[0xd] = 0;
  param_2[0xe] = 0;
  *(undefined4 *)(param_2 + 0xf) = 0;
  pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);
  if ((pvVar4 != (void *)0x0) &&
     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)
     , lVar5 != 0)) {
    *(long *)(param_1 + 0x48) = lVar5;
  }
  uVar8 = *(uint *)(param_1 + 0xb0);
  if (uVar8 == 0xffffffff) {
LAB_002a5bea:
    if (local_40 != -1) {
      lVar5 = param_2[6];
      if (lVar5 != 0) {
        lVar5 = *(long *)(lVar5 + 0x10);
      }
      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);
    }
    return;
  }
  lVar5 = (ulong)(uVar8 * 0x28) + lVar3;
  if (*(long *)(param_1 + 0x28) != 0) {
    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),
                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);
    param_2[3] = lVar6;
    uVar8 = *(uint *)(lVar5 + 0x18);
    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);
    if (0xfeff < uVar8) {
      FUN_00167570(param_1 + 0x90);
      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);
    }
    if (*(uint *)(param_1 + 0x38) <= uVar8) {
      uVar7 = gettext("invalid dynamic symbol table name index: %u");
      FUN_001bd150(param_1,uVar7,uVar8);
      return;
    }
    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;
    iVar1 = *(int *)(lVar5 + 4);
    if (iVar1 != 3) {
      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");
      FUN_001bd150(param_1,uVar7,iVar1);
      return;
    }
    if (*(long *)(param_1 + 0x28) != 0) {
      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),
                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);
      param_2[6] = lVar6;
      uVar2 = *(undefined4 *)(param_1 + 0xb0);
      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);
      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);
      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)
      ;
      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf
                  );
      goto LAB_002a5bea;
    }
  }
                    /* WARNING: Subroutine does not return */
  FUN_0029a170();
}


PUSH R15
MOV RDX,RSI
PUSH R14
LEA R14,[RDI + 0x90]
PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
MOV RBX,RSI
MOV RSI,R14
SUB RSP,0x28
CALL 0x001c5dc0
MOV RAX,qword ptr [RBX]
LEA RCX,[RSP + 0x10]
MOV RDI,RBP
LEA RDX,[RSP + 0xc]
LEA R9,[RSP + 0x18]
MOV R13,qword ptr [RAX + 0x10]
LEA R8,[RSP + 0x14]
MOV RSI,R13
CALL 0x002a0370
MOV RAX,qword ptr [RBX + 0x8]
MOV R15,qword ptr [RBX + 0x10]
MOV qword ptr [RBX + 0x18],0x0
MOV qword ptr [RBX + 0x20],0x0
MOV ECX,0x8
LEA RDX,[0x36b600]
MOV R12,qword ptr [RAX + 0x10]
MOV qword ptr [RBX + 0x28],0x0
MOV RSI,R15
MOV qword ptr [RBX + 0x30],0x0
MOV qword ptr [RBX + 0x38],0x0
MOV RDI,R12
MOV qword ptr [RBX + 0x40],0x0
MOV qword ptr [RBX + 0x48],0x0
MOV qword ptr [RBX + 0x50],0x0
MOV qword ptr [RBX + 0x58],0x0
MOV dword ptr [RBX + 0x60],0x0
MOV qword ptr [RBX + 0x68],0x0
MOV qword ptr [RBX + 0x70],0x0
MOV dword ptr [RBX + 0x78],0x0
CALL 0x00147810
TEST RAX,RAX
JZ 0x002a5bdd
MOV ESI,dword ptr [RBP + 0x38]
MOV R9D,0x1
MOV R8,RBP
MOV RCX,R15
MOV RDX,R12
MOV RDI,R13
CALL 0x001e1e50
TEST RAX,RAX
JZ 0x002a5bdd
MOV qword ptr [RBP + 0x48],RAX
MOV R12D,dword ptr [RBP + 0xb0]
CMP R12D,-0x1
JNZ 0x002a5c28
MOV EDX,dword ptr [RSP + 0x18]
CMP EDX,-0x1
JZ 0x002a5c12
MOV R8,qword ptr [RBX + 0x30]
MOV R9,qword ptr [RBX + 0x38]
TEST R8,R8
JZ 0x002a5c04
MOV R8,qword ptr [R8 + 0x10]
MOV ECX,R12D
MOV RSI,R13
MOV RDI,RBP
CALL 0x002a57e0
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA R12D,[R12 + R12*0x4]
MOV RDI,qword ptr [RBP + 0x28]
SHL R12D,0x3
ADD R12,R13
MOV ECX,dword ptr [R12 + 0x14]
MOV EDX,dword ptr [R12 + 0x10]
TEST RDI,RDI
JZ 0x002a5dc9
MOV RSI,qword ptr [RBP + 0x30]
ADD RDI,0x28
XOR R9D,R9D
MOV R8D,0x1
CALL 0x0017b210
MOV qword ptr [RBX + 0x18],RAX
MOV EAX,dword ptr [R12 + 0x14]
MOV R12D,dword ptr [R12 + 0x18]
MOV qword ptr [RBX + 0x20],RAX
CMP R12D,0xfeff
JA 0x002a5d90
CMP R12D,dword ptr [RBP + 0x38]
JNC 0x002a5da8
LEA R14D,[R12 + R12*0x4]
SHL R14D,0x3
ADD R14,R13
MOV R15D,dword ptr [R14 + 0x4]
CMP R15D,0x3
JNZ 0x002a5d60
MOV RDI,qword ptr [RBP + 0x28]
MOV ECX,dword ptr [R14 + 0x14]
MOV EDX,dword ptr [R14 + 0x10]
TEST RDI,RDI
JZ 0x002a5dc9
MOV RSI,qword ptr [RBP + 0x30]
ADD RDI,0x28
XOR R9D,R9D
XOR R8D,R8D
CALL 0x0017b210
LEA R9,[RBX + 0x40]
MOV RSI,R13
MOV RDI,RBP
MOV qword ptr [RBX + 0x30],RAX
MOV EAX,dword ptr [R14 + 0x14]
MOV ECX,0x6fffffff
MOV R8D,dword ptr [RBP + 0xb0]
MOV qword ptr [RBX + 0x38],RAX
LEA RAX,[RSP + 0x1c]
PUSH RAX
LEA RAX,[RBX + 0x48]
PUSH RAX
MOV EDX,dword ptr [RSP + 0x1c]
CALL 0x002a0650
POP RAX
LEA RAX,[RBX + 0x60]
POP RDX
PUSH RAX
LEA RAX,[RBX + 0x58]
LEA R9,[RBX + 0x50]
MOV R8D,R12D
PUSH RAX
MOV EDX,dword ptr [RSP + 0x20]
MOV ECX,0x6ffffffd
MOV RSI,R13
MOV RDI,RBP
CALL 0x002a0650
LEA RAX,[RBX + 0x78]
POP RCX
POP RSI
PUSH RAX
LEA RAX,[RBX + 0x70]
MOV R8D,R12D
MOV RDI,RBP
PUSH RAX
MOV EDX,dword ptr [RSP + 0x24]
LEA R9,[RBX + 0x68]
MOV ECX,0x6ffffffe
MOV RSI,R13
CALL 0x002a0650
POP RDI
POP R8
JMP 0x002a5bea
LEA RDI,[0x38b770]
CALL 0x00147320
MOV EDX,R15D
MOV RDI,RBP
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001bd150
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,R14
CALL 0x00167570
ADD R12D,dword ptr [RBP + 0xa8]
JMP 0x002a5c7f
LEA RDI,[0x38b740]
CALL 0x00147320
MOV EDX,R12D
MOV RDI,RBP
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001bd150
JMP 0x002a5c12
CALL 0x0029a170
(translation_unit "void FUN_002a5ae0(long param_1,long *param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  long lVar3;\n  size_t __haystacklen;\n  void *__haystack;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  uint uVar8;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  int local_40;\n  undefined1 local_3c [12];\n  \n  FUN_001c5dc0(param_1,param_1 + 0x90,param_2);\n  lVar3 = *(long *)(*param_2 + 0x10);\n  FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);\n  __haystacklen = param_2[2];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  __haystack = *(void **)(param_2[1] + 0x10);\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  param_2[8] = 0;\n  param_2[9] = 0;\n  param_2[10] = 0;\n  param_2[0xb] = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  param_2[0xd] = 0;\n  param_2[0xe] = 0;\n  *(undefined4 *)(param_2 + 0xf) = 0;\n  pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);\n  if ((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)) {\n    *(long *)(param_1 + 0x48) = lVar5;\n  }\n  uVar8 = *(uint *)(param_1 + 0xb0);\n  if (uVar8 == 0xffffffff) {\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }\n  lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n  if (*(long *)(param_1 + 0x28) != 0) {\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0029a170();\n}\n\n" (function_definition "void FUN_002a5ae0(long param_1,long *param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  long lVar3;\n  size_t __haystacklen;\n  void *__haystack;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  uint uVar8;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  int local_40;\n  undefined1 local_3c [12];\n  \n  FUN_001c5dc0(param_1,param_1 + 0x90,param_2);\n  lVar3 = *(long *)(*param_2 + 0x10);\n  FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);\n  __haystacklen = param_2[2];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  __haystack = *(void **)(param_2[1] + 0x10);\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  param_2[8] = 0;\n  param_2[9] = 0;\n  param_2[10] = 0;\n  param_2[0xb] = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  param_2[0xd] = 0;\n  param_2[0xe] = 0;\n  *(undefined4 *)(param_2 + 0xf) = 0;\n  pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);\n  if ((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)) {\n    *(long *)(param_1 + 0x48) = lVar5;\n  }\n  uVar8 = *(uint *)(param_1 + 0xb0);\n  if (uVar8 == 0xffffffff) {\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }\n  lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n  if (*(long *)(param_1 + 0x28) != 0) {\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0029a170();\n}" primitive_type (function_declarator "FUN_002a5ae0(long param_1,long *param_2)" identifier (parameter_list "(long param_1,long *param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  long lVar3;\n  size_t __haystacklen;\n  void *__haystack;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  uint uVar8;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  int local_40;\n  undefined1 local_3c [12];\n  \n  FUN_001c5dc0(param_1,param_1 + 0x90,param_2);\n  lVar3 = *(long *)(*param_2 + 0x10);\n  FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);\n  __haystacklen = param_2[2];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  __haystack = *(void **)(param_2[1] + 0x10);\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  param_2[8] = 0;\n  param_2[9] = 0;\n  param_2[10] = 0;\n  param_2[0xb] = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  param_2[0xd] = 0;\n  param_2[0xe] = 0;\n  *(undefined4 *)(param_2 + 0xf) = 0;\n  pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);\n  if ((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)) {\n    *(long *)(param_1 + 0x48) = lVar5;\n  }\n  uVar8 = *(uint *)(param_1 + 0xb0);\n  if (uVar8 == 0xffffffff) {\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }\n  lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n  if (*(long *)(param_1 + 0x28) != 0) {\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0029a170();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "size_t __haystacklen;" primitive_type identifier ;) (declaration "void *__haystack;" primitive_type (pointer_declarator "*__haystack" * identifier) ;) (declaration "void *pvVar4;" primitive_type (pointer_declarator "*pvVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined1 local_3c [12];" type_identifier (array_declarator "local_3c [12]" identifier [ number_literal ]) ;) (expression_statement "FUN_001c5dc0(param_1,param_1 + 0x90,param_2);" (call_expression "FUN_001c5dc0(param_1,param_1 + 0x90,param_2)" identifier (argument_list "(param_1,param_1 + 0x90,param_2)" ( identifier , (binary_expression "param_1 + 0x90" identifier + number_literal) , identifier ))) ;) (expression_statement "lVar3 = *(long *)(*param_2 + 0x10);" (assignment_expression "lVar3 = *(long *)(*param_2 + 0x10)" identifier = (pointer_expression "*(long *)(*param_2 + 0x10)" * (cast_expression "(long *)(*param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x10)" ( (binary_expression "*param_2 + 0x10" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);" (call_expression "FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40)" identifier (argument_list "(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40)" ( identifier , identifier , (pointer_expression "&local_4c" & identifier) , (pointer_expression "&local_48" & identifier) , (pointer_expression "&local_44" & identifier) , (pointer_expression "&local_40" & identifier) ))) ;) (expression_statement "__haystacklen = param_2[2];" (assignment_expression "__haystacklen = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "param_2[3] = 0;" (assignment_expression "param_2[3] = 0" (subscript_expression "param_2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[4] = 0;" (assignment_expression "param_2[4] = 0" (subscript_expression "param_2[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "__haystack = *(void **)(param_2[1] + 0x10);" (assignment_expression "__haystack = *(void **)(param_2[1] + 0x10)" identifier = (pointer_expression "*(void **)(param_2[1] + 0x10)" * (cast_expression "(void **)(param_2[1] + 0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2[1] + 0x10)" ( (binary_expression "param_2[1] + 0x10" (subscript_expression "param_2[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "param_2[5] = 0;" (assignment_expression "param_2[5] = 0" (subscript_expression "param_2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[7] = 0;" (assignment_expression "param_2[7] = 0" (subscript_expression "param_2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[8] = 0;" (assignment_expression "param_2[8] = 0" (subscript_expression "param_2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[9] = 0;" (assignment_expression "param_2[9] = 0" (subscript_expression "param_2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[10] = 0;" (assignment_expression "param_2[10] = 0" (subscript_expression "param_2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xb] = 0;" (assignment_expression "param_2[0xb] = 0" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(param_2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_2[0xd] = 0;" (assignment_expression "param_2[0xd] = 0" (subscript_expression "param_2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xe] = 0;" (assignment_expression "param_2[0xe] = 0" (subscript_expression "param_2[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(param_2 + 0xf) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0xf) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0xf)" * (cast_expression "(undefined4 *)(param_2 + 0xf)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xf)" ( (binary_expression "param_2 + 0xf" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);" (assignment_expression "pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8)" identifier = (call_expression "memmem(__haystack,__haystacklen,".zdebug_",8)" identifier (argument_list "(__haystack,__haystacklen,".zdebug_",8)" ( identifier , identifier , (string_literal "".zdebug_"" " string_content ") , number_literal )))) ;) (if_statement "if ((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)) {\n    *(long *)(param_1 + 0x48) = lVar5;\n  }" if (parenthesized_expression "((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0))" ( (binary_expression "(pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)" (parenthesized_expression "(pvVar4 != (void *)0x0)" ( (binary_expression "pvVar4 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)" ( (comma_expression "lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0" (assignment_expression "lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)" identifier = (call_expression "FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)" identifier (argument_list "(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x38)" * (cast_expression "(undefined4 *)(param_1 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) , identifier , identifier , identifier , number_literal )))) , (binary_expression "lVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    *(long *)(param_1 + 0x48) = lVar5;\n  }" { (expression_statement "*(long *)(param_1 + 0x48) = lVar5;" (assignment_expression "*(long *)(param_1 + 0x48) = lVar5" (pointer_expression "*(long *)(param_1 + 0x48)" * (cast_expression "(long *)(param_1 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "uVar8 = *(uint *)(param_1 + 0xb0);" (assignment_expression "uVar8 = *(uint *)(param_1 + 0xb0)" identifier = (pointer_expression "*(uint *)(param_1 + 0xb0)" * (cast_expression "(uint *)(param_1 + 0xb0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (if_statement "if (uVar8 == 0xffffffff) {\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }" { (labeled_statement "LAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }" statement_identifier : (if_statement "if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }" if (parenthesized_expression "(local_40 != -1)" ( (binary_expression "local_40 != -1" identifier != number_literal) )) (compound_statement "{\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }" { (expression_statement "lVar5 = param_2[6];" (assignment_expression "lVar5 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (if_statement "if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }" { (expression_statement "lVar5 = *(long *)(lVar5 + 0x10);" (assignment_expression "lVar5 = *(long *)(lVar5 + 0x10)" identifier = (pointer_expression "*(long *)(lVar5 + 0x10)" * (cast_expression "(long *)(lVar5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) ))))) ;) })) (expression_statement "FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);" (call_expression "FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7])" identifier (argument_list "(param_1,lVar3,local_40,uVar8,lVar5,param_2[7])" ( identifier , identifier , identifier , identifier , identifier , (subscript_expression "param_2[7]" identifier [ number_literal ]) ))) ;) }))) (return_statement "return;" return ;) })) (expression_statement "lVar5 = (ulong)(uVar8 * 0x28) + lVar3;" (assignment_expression "lVar5 = (ulong)(uVar8 * 0x28) + lVar3" identifier = (binary_expression "(ulong)(uVar8 * 0x28) + lVar3" (call_expression "(ulong)(uVar8 * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 * 0x28)" ( (binary_expression "uVar8 * 0x28" identifier * number_literal) ))) + identifier)) ;) (if_statement "if (*(long *)(param_1 + 0x28) != 0) {\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x28) != 0)" ( (binary_expression "*(long *)(param_1 + 0x28) != 0" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }" { (expression_statement "lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);" (assignment_expression "lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0)" identifier = (call_expression "FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0)" identifier (argument_list "(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0)" ( (binary_expression "*(long *)(param_1 + 0x28) + 0x28" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(lVar5 + 0x10)" * (cast_expression "(undefined4 *)(lVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(lVar5 + 0x14)" * (cast_expression "(undefined4 *)(lVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x14)" ( (binary_expression "lVar5 + 0x14" identifier + number_literal) )))) , number_literal , number_literal )))) ;) (expression_statement "param_2[3] = lVar6;" (assignment_expression "param_2[3] = lVar6" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar8 = *(uint *)(lVar5 + 0x18);" (assignment_expression "uVar8 = *(uint *)(lVar5 + 0x18)" identifier = (pointer_expression "*(uint *)(lVar5 + 0x18)" * (cast_expression "(uint *)(lVar5 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x18)" ( (binary_expression "lVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);" (assignment_expression "param_2[4] = (ulong)*(uint *)(lVar5 + 0x14)" (subscript_expression "param_2[4]" identifier [ number_literal ]) = (binary_expression "(ulong)*(uint *)(lVar5 + 0x14)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x14)" ( (binary_expression "lVar5 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }" if (parenthesized_expression "(0xfeff < uVar8)" ( (binary_expression "0xfeff < uVar8" number_literal < identifier) )) (compound_statement "{\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }" { (expression_statement "FUN_00167570(param_1 + 0x90);" (call_expression "FUN_00167570(param_1 + 0x90)" identifier (argument_list "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) ))) ;) (expression_statement "uVar8 = uVar8 + *(int *)(param_1 + 0xa8);" (assignment_expression "uVar8 = uVar8 + *(int *)(param_1 + 0xa8)" identifier = (binary_expression "uVar8 + *(int *)(param_1 + 0xa8)" identifier + (pointer_expression "*(int *)(param_1 + 0xa8)" * (cast_expression "(int *)(param_1 + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))))) ;) })) (if_statement "if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }" if (parenthesized_expression "(*(uint *)(param_1 + 0x38) <= uVar8)" ( (binary_expression "*(uint *)(param_1 + 0x38) <= uVar8" (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }" { (expression_statement "uVar7 = gettext("invalid dynamic symbol table name index: %u");" (assignment_expression "uVar7 = gettext("invalid dynamic symbol table name index: %u")" identifier = (call_expression "gettext("invalid dynamic symbol table name index: %u")" identifier (argument_list "("invalid dynamic symbol table name index: %u")" ( (string_literal ""invalid dynamic symbol table name index: %u"" " string_content ") )))) ;) (expression_statement "FUN_001bd150(param_1,uVar7,uVar8);" (call_expression "FUN_001bd150(param_1,uVar7,uVar8)" identifier (argument_list "(param_1,uVar7,uVar8)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "lVar5 = (ulong)(uVar8 * 0x28) + lVar3;" (assignment_expression "lVar5 = (ulong)(uVar8 * 0x28) + lVar3" identifier = (binary_expression "(ulong)(uVar8 * 0x28) + lVar3" (call_expression "(ulong)(uVar8 * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 * 0x28)" ( (binary_expression "uVar8 * 0x28" identifier * number_literal) ))) + identifier)) ;) (expression_statement "iVar1 = *(int *)(lVar5 + 4);" (assignment_expression "iVar1 = *(int *)(lVar5 + 4)" identifier = (pointer_expression "*(int *)(lVar5 + 4)" * (cast_expression "(int *)(lVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 4)" ( (binary_expression "lVar5 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }" if (parenthesized_expression "(iVar1 != 3)" ( (binary_expression "iVar1 != 3" identifier != number_literal) )) (compound_statement "{\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }" { (expression_statement "uVar7 = gettext("dynamic symbol table name section has wrong type: %u");" (assignment_expression "uVar7 = gettext("dynamic symbol table name section has wrong type: %u")" identifier = (call_expression "gettext("dynamic symbol table name section has wrong type: %u")" identifier (argument_list "("dynamic symbol table name section has wrong type: %u")" ( (string_literal ""dynamic symbol table name section has wrong type: %u"" " string_content ") )))) ;) (expression_statement "FUN_001bd150(param_1,uVar7,iVar1);" (call_expression "FUN_001bd150(param_1,uVar7,iVar1)" identifier (argument_list "(param_1,uVar7,iVar1)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (if_statement "if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0x28) != 0)" ( (binary_expression "*(long *)(param_1 + 0x28) != 0" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }" { (expression_statement "lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);" (assignment_expression "lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0)" identifier = (call_expression "FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0)" identifier (argument_list "(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0)" ( (binary_expression "*(long *)(param_1 + 0x28) + 0x28" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(lVar5 + 0x10)" * (cast_expression "(undefined4 *)(lVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(lVar5 + 0x14)" * (cast_expression "(undefined4 *)(lVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x14)" ( (binary_expression "lVar5 + 0x14" identifier + number_literal) )))) , number_literal , number_literal )))) ;) (expression_statement "param_2[6] = lVar6;" (assignment_expression "param_2[6] = lVar6" (subscript_expression "param_2[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 0xb0)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);" (assignment_expression "param_2[7] = (ulong)*(uint *)(lVar5 + 0x14)" (subscript_expression "param_2[7]" identifier [ number_literal ]) = (binary_expression "(ulong)*(uint *)(lVar5 + 0x14)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x14)" ( (binary_expression "lVar5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);" (call_expression "FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c)" identifier (argument_list "(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c)" ( identifier , identifier , identifier , number_literal , identifier , (binary_expression "param_2 + 8" identifier + number_literal) , (binary_expression "param_2 + 9" identifier + number_literal) , identifier ))) ;) (expression_statement "FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;" (call_expression "FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)" identifier (argument_list "(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)" ( identifier , identifier , identifier , number_literal , identifier , (binary_expression "param_2 + 10" identifier + number_literal) , (binary_expression "param_2 + 0xb" identifier + number_literal) , (binary_expression "param_2 + 0xc" identifier + number_literal) ))) ;) (expression_statement "FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );" (call_expression "FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  )" identifier (argument_list "(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  )" ( identifier , identifier , identifier , number_literal , identifier , (binary_expression "param_2 + 0xd" identifier + number_literal) , (binary_expression "param_2 + 0xe" identifier + number_literal) , (binary_expression "param_2 + 0xf" identifier + number_literal) ))) ;) (goto_statement "goto LAB_002a5bea;" goto statement_identifier ;) })) })) comment (expression_statement "FUN_0029a170();" (call_expression "FUN_0029a170()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Enum "SHT": Some values do not have unique names */\n/* DWARF original prototype: void base_read_symbols(Sized_dynobj<32,_false> * this,\n   Read_symbols_data * sd) */\n\nvoid __thiscall\ngold::Sized_dynobj<32,_false>::base_read_symbols\n          (Sized_dynobj<32,_false> *this,Read_symbols_data *sd)\n\n{\n  uchar *pshdrs;\n  size_t __haystacklen;\n  uchar *names;\n  void *pvVar1;\n  Compressed_section_map *pCVar2;\n  File_view *pFVar3;\n  char *pcVar4;\n  Input_file *this_00;\n  uint uVar5;\n  uint link;\n  uint versym_shndx;\n  uint verdef_shndx;\n  uint verneed_shndx;\n  uint dynamic_shndx;\n  uint dummy;\n  \n  Object::read_section_data<32,_false>((Object *)this,&this->elf_file_,sd);\n  pshdrs = sd->section_headers->data_;\n  find_dynsym_sections(this,pshdrs,&versym_shndx,&verdef_shndx,&verneed_shndx,&dynamic_shndx);\n  __haystacklen = sd->section_names_size;\n  sd->symbols = (File_view *)0x0;\n  sd->symbols_size = 0;\n  names = sd->section_names->data_;\n  sd->external_symbols_offset = 0;\n  sd->symbol_names = (File_view *)0x0;\n  sd->symbol_names_size = 0;\n  sd->versym = (File_view *)0x0;\n  sd->versym_size = 0;\n  sd->verdef = (File_view *)0x0;\n  sd->verdef_size = 0;\n  sd->verdef_info = 0;\n  sd->verneed = (File_view *)0x0;\n  sd->verneed_size = 0;\n  sd->verneed_info = 0;\n  pvVar1 = memmem(names,__haystacklen,".zdebug_",8);\n  if ((pvVar1 != (void *)0x0) &&\n     (pCVar2 = build_compressed_section_map<32,_false>\n                         (pshdrs,(this->super_Dynobj).super_Object.shnum_,(char *)names,\n                          __haystacklen,(Object *)this,true),\n     pCVar2 != (Compressed_section_map *)0x0)) {\n    (this->super_Dynobj).super_Object.compressed_sections_ = pCVar2;\n  }\n  link = this->dynsym_shndx_;\n  if (link == 0xffffffff) {\nLAB_002a5bea:\n    if (dynamic_shndx != 0xffffffff) {\n      pFVar3 = sd->symbol_names;\n      if (pFVar3 != (File_view *)0x0) {\n        pFVar3 = (File_view *)pFVar3->data_;\n      }\n      read_dynamic(this,pshdrs,dynamic_shndx,link,(uchar *)pFVar3,sd->symbol_names_size);\n    }\n    return;\n  }\n  this_00 = (this->super_Dynobj).super_Object.input_file_;\n  if (this_00 != (Input_file *)0x0) {\n    pFVar3 = File_read::get_lasting_view\n                       (&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),true,false);\n    sd->symbols = pFVar3;\n    uVar5 = link * 0x28;\n    link = *(uint *)(pshdrs + (ulong)(link * 0x28) + 0x18);\n    sd->symbols_size = (ulong)*(uint *)(pshdrs + (ulong)uVar5 + 0x14);\n    if (0xfeff < link) {\n      elfcpp::Elf_file<32,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n      link = link + (this->elf_file_).large_shndx_offset_;\n    }\n    if ((this->super_Dynobj).super_Object.shnum_ <= link) {\n      pcVar4 = (char *)gettext("invalid dynamic symbol table name index: %u");\n      Object::error((Object *)this,pcVar4,(ulong)link);\n      return;\n    }\n    uVar5 = *(uint *)(pshdrs + (ulong)(link * 0x28) + 4);\n    if (uVar5 != 3) {\n      pcVar4 = (char *)gettext("dynamic symbol table name section has wrong type: %u");\n      Object::error((Object *)this,pcVar4,(ulong)uVar5);\n      return;\n    }\n    this_00 = (this->super_Dynobj).super_Object.input_file_;\n    if (this_00 != (Input_file *)0x0) {\n      pFVar3 = File_read::get_lasting_view\n                         (&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),false,false);\n      sd->symbol_names = pFVar3;\n      uVar5 = this->dynsym_shndx_;\n      sd->symbol_names_size = (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14);\n      read_dynsym_section(this,pshdrs,versym_shndx,SHT_GNU_versym,uVar5,&sd->versym,&sd->versym_size\n                          ,&dummy);\n      read_dynsym_section(this,pshdrs,verdef_shndx,SHT_GNU_verdef,link,&sd->verdef,&sd->verdef_size,\n                          &sd->verdef_info);\n      read_dynsym_section(this,pshdrs,verneed_shndx,SHT_GNU_verneed,link,&sd->verneed,\n                          &sd->verneed_size,&sd->verneed_info);\n      goto LAB_002a5bea;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  Object::input_file((Object *)this_00);\n}\n\n" comment comment (declaration "void __thiscall\ngold::Sized_dynobj<32,_false>::base_read_symbols\n          (Sized_dynobj<32,_false> *this,Read_symbols_data *sd)\n\n{\n  uchar *pshdrs;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_false>::base_read_symbols\n          (Sized_dynobj<32,_false> *this,Read_symbols_data *sd)\n\n{\n  uchar" identifier > : : (function_declarator "base_read_symbols\n          (Sized_dynobj<32,_false> *this,Read_symbols_data *sd)" identifier (parameter_list "(Sized_dynobj<32,_false> *this,Read_symbols_data *sd)" ( (parameter_declaration "Sized_dynobj" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Read_symbols_data *sd" type_identifier (pointer_declarator "*sd" * identifier)) ))) { identifier) (pointer_declarator "*pshdrs" * identifier) ;) (declaration "size_t __haystacklen;" primitive_type identifier ;) (declaration "uchar *names;" type_identifier (pointer_declarator "*names" * identifier) ;) (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (declaration "Compressed_section_map *pCVar2;" type_identifier (pointer_declarator "*pCVar2" * identifier) ;) (declaration "File_view *pFVar3;" type_identifier (pointer_declarator "*pFVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "Input_file *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint link;" type_identifier identifier ;) (declaration "uint versym_shndx;" type_identifier identifier ;) (declaration "uint verdef_shndx;" type_identifier identifier ;) (declaration "uint verneed_shndx;" type_identifier identifier ;) (declaration "uint dynamic_shndx;" type_identifier identifier ;) (declaration "uint dummy;" type_identifier identifier ;) (labeled_statement "Object::read_section_data<32,_false>((Object *)this,&this->elf_file_,sd);" statement_identifier : (ERROR ":" :) (expression_statement "read_section_data<32,_false>((Object *)this,&this->elf_file_,sd);" (comma_expression "read_section_data<32,_false>((Object *)this,&this->elf_file_,sd)" (binary_expression "read_section_data<32" identifier < number_literal) , (binary_expression "_false>((Object *)this,&this->elf_file_,sd)" identifier > (parenthesized_expression "((Object *)this,&this->elf_file_,sd)" ( (comma_expression "(Object *)this,&this->elf_file_,sd" (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (comma_expression "&this->elf_file_,sd" (pointer_expression "&this->elf_file_" & (field_expression "this->elf_file_" identifier -> field_identifier)) , identifier)) )))) ;)) (expression_statement "pshdrs = sd->section_headers->data_;" (assignment_expression "pshdrs = sd->section_headers->data_" identifier = (field_expression "sd->section_headers->data_" (field_expression "sd->section_headers" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "find_dynsym_sections(this,pshdrs,&versym_shndx,&verdef_shndx,&verneed_shndx,&dynamic_shndx);" (call_expression "find_dynsym_sections(this,pshdrs,&versym_shndx,&verdef_shndx,&verneed_shndx,&dynamic_shndx)" identifier (argument_list "(this,pshdrs,&versym_shndx,&verdef_shndx,&verneed_shndx,&dynamic_shndx)" ( identifier , identifier , (pointer_expression "&versym_shndx" & identifier) , (pointer_expression "&verdef_shndx" & identifier) , (pointer_expression "&verneed_shndx" & identifier) , (pointer_expression "&dynamic_shndx" & identifier) ))) ;) (expression_statement "__haystacklen = sd->section_names_size;" (assignment_expression "__haystacklen = sd->section_names_size" identifier = (field_expression "sd->section_names_size" identifier -> field_identifier)) ;) (expression_statement "sd->symbols = (File_view *)0x0;" (assignment_expression "sd->symbols = (File_view *)0x0" (field_expression "sd->symbols" identifier -> field_identifier) = (cast_expression "(File_view *)0x0" ( (type_descriptor "File_view *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sd->symbols_size = 0;" (assignment_expression "sd->symbols_size = 0" (field_expression "sd->symbols_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "names = sd->section_names->data_;" (assignment_expression "names = sd->section_names->data_" identifier = (field_expression "sd->section_names->data_" (field_expression "sd->section_names" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "sd->external_symbols_offset = 0;" (assignment_expression "sd->external_symbols_offset = 0" (field_expression "sd->external_symbols_offset" identifier -> field_identifier) = number_literal) ;) (expression_statement "sd->symbol_names = (File_view *)0x0;" (assignment_expression "sd->symbol_names = (File_view *)0x0" (field_expression "sd->symbol_names" identifier -> field_identifier) = (cast_expression "(File_view *)0x0" ( (type_descriptor "File_view *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sd->symbol_names_size = 0;" (assignment_expression "sd->symbol_names_size = 0" (field_expression "sd->symbol_names_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "sd->versym = (File_view *)0x0;" (assignment_expression "sd->versym = (File_view *)0x0" (field_expression "sd->versym" identifier -> field_identifier) = (cast_expression "(File_view *)0x0" ( (type_descriptor "File_view *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sd->versym_size = 0;" (assignment_expression "sd->versym_size = 0" (field_expression "sd->versym_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "sd->verdef = (File_view *)0x0;" (assignment_expression "sd->verdef = (File_view *)0x0" (field_expression "sd->verdef" identifier -> field_identifier) = (cast_expression "(File_view *)0x0" ( (type_descriptor "File_view *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sd->verdef_size = 0;" (assignment_expression "sd->verdef_size = 0" (field_expression "sd->verdef_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "sd->verdef_info = 0;" (assignment_expression "sd->verdef_info = 0" (field_expression "sd->verdef_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "sd->verneed = (File_view *)0x0;" (assignment_expression "sd->verneed = (File_view *)0x0" (field_expression "sd->verneed" identifier -> field_identifier) = (cast_expression "(File_view *)0x0" ( (type_descriptor "File_view *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sd->verneed_size = 0;" (assignment_expression "sd->verneed_size = 0" (field_expression "sd->verneed_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "sd->verneed_info = 0;" (assignment_expression "sd->verneed_info = 0" (field_expression "sd->verneed_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "pvVar1 = memmem(names,__haystacklen,".zdebug_",8);" (assignment_expression "pvVar1 = memmem(names,__haystacklen,".zdebug_",8)" identifier = (call_expression "memmem(names,__haystacklen,".zdebug_",8)" identifier (argument_list "(names,__haystacklen,".zdebug_",8)" ( identifier , identifier , (string_literal "".zdebug_"" " string_content ") , number_literal )))) ;) (if_statement "if ((pvVar1 != (void *)0x0) &&\n     (pCVar2 = build_compressed_section_map<32,_false>\n                         (pshdrs,(this->super_Dynobj).super_Object.shnum_,(char *)names,\n                          __haystacklen,(Object *)this,true),\n     pCVar2 != (Compressed_section_map *)0x0)) {\n    (this->super_Dynobj).super_Object.compressed_sections_ = pCVar2;\n  }" if (parenthesized_expression "((pvVar1 != (void *)0x0) &&\n     (pCVar2 = build_compressed_section_map<32,_false>\n                         (pshdrs,(this->super_Dynobj).super_Object.shnum_,(char *)names,\n                          __haystacklen,(Object *)this,true),\n     pCVar2 != (Compressed_section_map *)0x0))" ( (binary_expression "(pvVar1 != (void *)0x0) &&\n     (pCVar2 = build_compressed_section_map<32,_false>\n                         (pshdrs,(this->super_Dynobj).super_Object.shnum_,(char *)names,\n                          __haystacklen,(Object *)this,true),\n     pCVar2 != (Compressed_section_map *)0x0)" (parenthesized_expression "(pvVar1 != (void *)0x0)" ( (binary_expression "pvVar1 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pCVar2 = build_compressed_section_map<32,_false>\n                         (pshdrs,(this->super_Dynobj).super_Object.shnum_,(char *)names,\n                          __haystacklen,(Object *)this,true),\n     pCVar2 != (Compressed_section_map *)0x0)" ( (comma_expression "pCVar2 = build_compressed_section_map<32,_false>\n                         (pshdrs,(this->super_Dynobj).super_Object.shnum_,(char *)names,\n                          __haystacklen,(Object *)this,true),\n     pCVar2 != (Compressed_section_map *)0x0" (assignment_expression "pCVar2 = build_compressed_section_map<32" identifier = (binary_expression "build_compressed_section_map<32" identifier < number_literal)) , (comma_expression "_false>\n                         (pshdrs,(this->super_Dynobj).super_Object.shnum_,(char *)names,\n                          __haystacklen,(Object *)this,true),\n     pCVar2 != (Compressed_section_map *)0x0" (binary_expression "_false>\n                         (pshdrs,(this->super_Dynobj).super_Object.shnum_,(char *)names,\n                          __haystacklen,(Object *)this,true)" identifier > (parenthesized_expression "(pshdrs,(this->super_Dynobj).super_Object.shnum_,(char *)names,\n                          __haystacklen,(Object *)this,true)" ( (comma_expression "pshdrs,(this->super_Dynobj).super_Object.shnum_,(char *)names,\n                          __haystacklen,(Object *)this,true" identifier , (comma_expression "(this->super_Dynobj).super_Object.shnum_,(char *)names,\n                          __haystacklen,(Object *)this,true" (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) , (comma_expression "(char *)names,\n                          __haystacklen,(Object *)this,true" (cast_expression "(char *)names" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (comma_expression "__haystacklen,(Object *)this,true" identifier , (comma_expression "(Object *)this,true" (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , true))))) ))) , (binary_expression "pCVar2 != (Compressed_section_map *)0x0" identifier != (cast_expression "(Compressed_section_map *)0x0" ( (type_descriptor "Compressed_section_map *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (compound_statement "{\n    (this->super_Dynobj).super_Object.compressed_sections_ = pCVar2;\n  }" { (expression_statement "(this->super_Dynobj).super_Object.compressed_sections_ = pCVar2;" (assignment_expression "(this->super_Dynobj).super_Object.compressed_sections_ = pCVar2" (field_expression "(this->super_Dynobj).super_Object.compressed_sections_" (field_expression "(this->super_Dynobj).super_Object" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) })) (expression_statement "link = this->dynsym_shndx_;" (assignment_expression "link = this->dynsym_shndx_" identifier = (field_expression "this->dynsym_shndx_" identifier -> field_identifier)) ;) (if_statement "if (link == 0xffffffff) {\nLAB_002a5bea:\n    if (dynamic_shndx != 0xffffffff) {\n      pFVar3 = sd->symbol_names;\n      if (pFVar3 != (File_view *)0x0) {\n        pFVar3 = (File_view *)pFVar3->data_;\n      }\n      read_dynamic(this,pshdrs,dynamic_shndx,link,(uchar *)pFVar3,sd->symbol_names_size);\n    }\n    return;\n  }" if (parenthesized_expression "(link == 0xffffffff)" ( (binary_expression "link == 0xffffffff" identifier == number_literal) )) (compound_statement "{\nLAB_002a5bea:\n    if (dynamic_shndx != 0xffffffff) {\n      pFVar3 = sd->symbol_names;\n      if (pFVar3 != (File_view *)0x0) {\n        pFVar3 = (File_view *)pFVar3->data_;\n      }\n      read_dynamic(this,pshdrs,dynamic_shndx,link,(uchar *)pFVar3,sd->symbol_names_size);\n    }\n    return;\n  }" { (labeled_statement "LAB_002a5bea:\n    if (dynamic_shndx != 0xffffffff) {\n      pFVar3 = sd->symbol_names;\n      if (pFVar3 != (File_view *)0x0) {\n        pFVar3 = (File_view *)pFVar3->data_;\n      }\n      read_dynamic(this,pshdrs,dynamic_shndx,link,(uchar *)pFVar3,sd->symbol_names_size);\n    }" statement_identifier : (if_statement "if (dynamic_shndx != 0xffffffff) {\n      pFVar3 = sd->symbol_names;\n      if (pFVar3 != (File_view *)0x0) {\n        pFVar3 = (File_view *)pFVar3->data_;\n      }\n      read_dynamic(this,pshdrs,dynamic_shndx,link,(uchar *)pFVar3,sd->symbol_names_size);\n    }" if (parenthesized_expression "(dynamic_shndx != 0xffffffff)" ( (binary_expression "dynamic_shndx != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n      pFVar3 = sd->symbol_names;\n      if (pFVar3 != (File_view *)0x0) {\n        pFVar3 = (File_view *)pFVar3->data_;\n      }\n      read_dynamic(this,pshdrs,dynamic_shndx,link,(uchar *)pFVar3,sd->symbol_names_size);\n    }" { (expression_statement "pFVar3 = sd->symbol_names;" (assignment_expression "pFVar3 = sd->symbol_names" identifier = (field_expression "sd->symbol_names" identifier -> field_identifier)) ;) (if_statement "if (pFVar3 != (File_view *)0x0) {\n        pFVar3 = (File_view *)pFVar3->data_;\n      }" if (parenthesized_expression "(pFVar3 != (File_view *)0x0)" ( (binary_expression "pFVar3 != (File_view *)0x0" identifier != (cast_expression "(File_view *)0x0" ( (type_descriptor "File_view *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pFVar3 = (File_view *)pFVar3->data_;\n      }" { (expression_statement "pFVar3 = (File_view *)pFVar3->data_;" (assignment_expression "pFVar3 = (File_view *)pFVar3->data_" identifier = (cast_expression "(File_view *)pFVar3->data_" ( (type_descriptor "File_view *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar3->data_" identifier -> field_identifier))) ;) })) (expression_statement "read_dynamic(this,pshdrs,dynamic_shndx,link,(uchar *)pFVar3,sd->symbol_names_size);" (call_expression "read_dynamic(this,pshdrs,dynamic_shndx,link,(uchar *)pFVar3,sd->symbol_names_size)" identifier (argument_list "(this,pshdrs,dynamic_shndx,link,(uchar *)pFVar3,sd->symbol_names_size)" ( identifier , identifier , identifier , identifier , (cast_expression "(uchar *)pFVar3" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "sd->symbol_names_size" identifier -> field_identifier) ))) ;) }))) (return_statement "return;" return ;) })) (expression_statement "this_00 = (this->super_Dynobj).super_Object.input_file_;" (assignment_expression "this_00 = (this->super_Dynobj).super_Object.input_file_" identifier = (field_expression "(this->super_Dynobj).super_Object.input_file_" (field_expression "(this->super_Dynobj).super_Object" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (this_00 != (Input_file *)0x0) {\n    pFVar3 = File_read::get_lasting_view\n                       (&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),true,false);\n    sd->symbols = pFVar3;\n    uVar5 = link * 0x28;\n    link = *(uint *)(pshdrs + (ulong)(link * 0x28) + 0x18);\n    sd->symbols_size = (ulong)*(uint *)(pshdrs + (ulong)uVar5 + 0x14);\n    if (0xfeff < link) {\n      elfcpp::Elf_file<32,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n      link = link + (this->elf_file_).large_shndx_offset_;\n    }\n    if ((this->super_Dynobj).super_Object.shnum_ <= link) {\n      pcVar4 = (char *)gettext("invalid dynamic symbol table name index: %u");\n      Object::error((Object *)this,pcVar4,(ulong)link);\n      return;\n    }\n    uVar5 = *(uint *)(pshdrs + (ulong)(link * 0x28) + 4);\n    if (uVar5 != 3) {\n      pcVar4 = (char *)gettext("dynamic symbol table name section has wrong type: %u");\n      Object::error((Object *)this,pcVar4,(ulong)uVar5);\n      return;\n    }\n    this_00 = (this->super_Dynobj).super_Object.input_file_;\n    if (this_00 != (Input_file *)0x0) {\n      pFVar3 = File_read::get_lasting_view\n                         (&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),false,false);\n      sd->symbol_names = pFVar3;\n      uVar5 = this->dynsym_shndx_;\n      sd->symbol_names_size = (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14);\n      read_dynsym_section(this,pshdrs,versym_shndx,SHT_GNU_versym,uVar5,&sd->versym,&sd->versym_size\n                          ,&dummy);\n      read_dynsym_section(this,pshdrs,verdef_shndx,SHT_GNU_verdef,link,&sd->verdef,&sd->verdef_size,\n                          &sd->verdef_info);\n      read_dynsym_section(this,pshdrs,verneed_shndx,SHT_GNU_verneed,link,&sd->verneed,\n                          &sd->verneed_size,&sd->verneed_info);\n      goto LAB_002a5bea;\n    }\n  }" if (parenthesized_expression "(this_00 != (Input_file *)0x0)" ( (binary_expression "this_00 != (Input_file *)0x0" identifier != (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pFVar3 = File_read::get_lasting_view\n                       (&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),true,false);\n    sd->symbols = pFVar3;\n    uVar5 = link * 0x28;\n    link = *(uint *)(pshdrs + (ulong)(link * 0x28) + 0x18);\n    sd->symbols_size = (ulong)*(uint *)(pshdrs + (ulong)uVar5 + 0x14);\n    if (0xfeff < link) {\n      elfcpp::Elf_file<32,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n      link = link + (this->elf_file_).large_shndx_offset_;\n    }\n    if ((this->super_Dynobj).super_Object.shnum_ <= link) {\n      pcVar4 = (char *)gettext("invalid dynamic symbol table name index: %u");\n      Object::error((Object *)this,pcVar4,(ulong)link);\n      return;\n    }\n    uVar5 = *(uint *)(pshdrs + (ulong)(link * 0x28) + 4);\n    if (uVar5 != 3) {\n      pcVar4 = (char *)gettext("dynamic symbol table name section has wrong type: %u");\n      Object::error((Object *)this,pcVar4,(ulong)uVar5);\n      return;\n    }\n    this_00 = (this->super_Dynobj).super_Object.input_file_;\n    if (this_00 != (Input_file *)0x0) {\n      pFVar3 = File_read::get_lasting_view\n                         (&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),false,false);\n      sd->symbol_names = pFVar3;\n      uVar5 = this->dynsym_shndx_;\n      sd->symbol_names_size = (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14);\n      read_dynsym_section(this,pshdrs,versym_shndx,SHT_GNU_versym,uVar5,&sd->versym,&sd->versym_size\n                          ,&dummy);\n      read_dynsym_section(this,pshdrs,verdef_shndx,SHT_GNU_verdef,link,&sd->verdef,&sd->verdef_size,\n                          &sd->verdef_info);\n      read_dynsym_section(this,pshdrs,verneed_shndx,SHT_GNU_verneed,link,&sd->verneed,\n                          &sd->verneed_size,&sd->verneed_info);\n      goto LAB_002a5bea;\n    }\n  }" { (ERROR "pFVar3 = File_read::" (assignment_expression "pFVar3 = File_read" identifier = identifier) : :) (expression_statement "get_lasting_view\n                       (&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),true,false);" (call_expression "get_lasting_view\n                       (&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),true,false)" identifier (argument_list "(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                        (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),true,false)" ( (pointer_expression "&this_00->file_" & (field_expression "this_00->file_" identifier -> field_identifier)) , (field_expression "(this->super_Dynobj).super_Object.offset_" (field_expression "(this->super_Dynobj).super_Object" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (binary_expression "(ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(link * 0x28) + 0x10)" ( (binary_expression "pshdrs + (ulong)(link * 0x28) + 0x10" (binary_expression "pshdrs + (ulong)(link * 0x28)" identifier + (call_expression "(ulong)(link * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(link * 0x28)" ( (binary_expression "link * 0x28" identifier * number_literal) )))) + number_literal) )))) , (binary_expression "(ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(link * 0x28) + 0x14)" ( (binary_expression "pshdrs + (ulong)(link * 0x28) + 0x14" (binary_expression "pshdrs + (ulong)(link * 0x28)" identifier + (call_expression "(ulong)(link * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(link * 0x28)" ( (binary_expression "link * 0x28" identifier * number_literal) )))) + number_literal) )))) , true , false ))) ;) (expression_statement "sd->symbols = pFVar3;" (assignment_expression "sd->symbols = pFVar3" (field_expression "sd->symbols" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar5 = link * 0x28;" (assignment_expression "uVar5 = link * 0x28" identifier = (binary_expression "link * 0x28" identifier * number_literal)) ;) (expression_statement "link = *(uint *)(pshdrs + (ulong)(link * 0x28) + 0x18);" (assignment_expression "link = *(uint *)(pshdrs + (ulong)(link * 0x28) + 0x18)" identifier = (pointer_expression "*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x18)" * (cast_expression "(uint *)(pshdrs + (ulong)(link * 0x28) + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(link * 0x28) + 0x18)" ( (binary_expression "pshdrs + (ulong)(link * 0x28) + 0x18" (binary_expression "pshdrs + (ulong)(link * 0x28)" identifier + (call_expression "(ulong)(link * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(link * 0x28)" ( (binary_expression "link * 0x28" identifier * number_literal) )))) + number_literal) ))))) ;) (expression_statement "sd->symbols_size = (ulong)*(uint *)(pshdrs + (ulong)uVar5 + 0x14);" (assignment_expression "sd->symbols_size = (ulong)*(uint *)(pshdrs + (ulong)uVar5 + 0x14)" (field_expression "sd->symbols_size" identifier -> field_identifier) = (binary_expression "(ulong)*(uint *)(pshdrs + (ulong)uVar5 + 0x14)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(pshdrs + (ulong)uVar5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)uVar5 + 0x14)" ( (binary_expression "pshdrs + (ulong)uVar5 + 0x14" (binary_expression "pshdrs + (ulong)uVar5" identifier + (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) ))))) ;) (if_statement "if (0xfeff < link) {\n      elfcpp::Elf_file<32,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n      link = link + (this->elf_file_).large_shndx_offset_;\n    }" if (parenthesized_expression "(0xfeff < link)" ( (binary_expression "0xfeff < link" number_literal < identifier) )) (compound_statement "{\n      elfcpp::Elf_file<32,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n      link = link + (this->elf_file_).large_shndx_offset_;\n    }" { (labeled_statement "elfcpp::Elf_file<32,_false,_gold::Object>::initialize_shnum(&this->elf_file_);" statement_identifier (ERROR "::Elf_file<32,_false,_gold::Object>:" : : (comma_expression "Elf_file<32,_false,_gold" (binary_expression "Elf_file<32" identifier < number_literal) , (comma_expression "_false,_gold" identifier , identifier)) : : identifier > :) : (expression_statement "initialize_shnum(&this->elf_file_);" (call_expression "initialize_shnum(&this->elf_file_)" identifier (argument_list "(&this->elf_file_)" ( (pointer_expression "&this->elf_file_" & (field_expression "this->elf_file_" identifier -> field_identifier)) ))) ;)) (expression_statement "link = link + (this->elf_file_).large_shndx_offset_;" (assignment_expression "link = link + (this->elf_file_).large_shndx_offset_" identifier = (binary_expression "link + (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 ((this->super_Dynobj).super_Object.shnum_ <= link) {\n      pcVar4 = (char *)gettext("invalid dynamic symbol table name index: %u");\n      Object::error((Object *)this,pcVar4,(ulong)link);\n      return;\n    }" if (parenthesized_expression "((this->super_Dynobj).super_Object.shnum_ <= link)" ( (binary_expression "(this->super_Dynobj).super_Object.shnum_ <= link" (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) <= identifier) )) (compound_statement "{\n      pcVar4 = (char *)gettext("invalid dynamic symbol table name index: %u");\n      Object::error((Object *)this,pcVar4,(ulong)link);\n      return;\n    }" { (expression_statement "pcVar4 = (char *)gettext("invalid dynamic symbol table name index: %u");" (assignment_expression "pcVar4 = (char *)gettext("invalid dynamic symbol table name index: %u")" identifier = (cast_expression "(char *)gettext("invalid dynamic symbol table name index: %u")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("invalid dynamic symbol table name index: %u")" identifier (argument_list "("invalid dynamic symbol table name index: %u")" ( (string_literal ""invalid dynamic symbol table name index: %u"" " string_content ") ))))) ;) (labeled_statement "Object::error((Object *)this,pcVar4,(ulong)link);" statement_identifier : (ERROR ":" :) (expression_statement "error((Object *)this,pcVar4,(ulong)link);" (call_expression "error((Object *)this,pcVar4,(ulong)link)" identifier (argument_list "((Object *)this,pcVar4,(ulong)link)" ( (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(ulong)link" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;)) (return_statement "return;" return ;) })) (expression_statement "uVar5 = *(uint *)(pshdrs + (ulong)(link * 0x28) + 4);" (assignment_expression "uVar5 = *(uint *)(pshdrs + (ulong)(link * 0x28) + 4)" identifier = (pointer_expression "*(uint *)(pshdrs + (ulong)(link * 0x28) + 4)" * (cast_expression "(uint *)(pshdrs + (ulong)(link * 0x28) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(link * 0x28) + 4)" ( (binary_expression "pshdrs + (ulong)(link * 0x28) + 4" (binary_expression "pshdrs + (ulong)(link * 0x28)" identifier + (call_expression "(ulong)(link * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(link * 0x28)" ( (binary_expression "link * 0x28" identifier * number_literal) )))) + number_literal) ))))) ;) (if_statement "if (uVar5 != 3) {\n      pcVar4 = (char *)gettext("dynamic symbol table name section has wrong type: %u");\n      Object::error((Object *)this,pcVar4,(ulong)uVar5);\n      return;\n    }" if (parenthesized_expression "(uVar5 != 3)" ( (binary_expression "uVar5 != 3" identifier != number_literal) )) (compound_statement "{\n      pcVar4 = (char *)gettext("dynamic symbol table name section has wrong type: %u");\n      Object::error((Object *)this,pcVar4,(ulong)uVar5);\n      return;\n    }" { (expression_statement "pcVar4 = (char *)gettext("dynamic symbol table name section has wrong type: %u");" (assignment_expression "pcVar4 = (char *)gettext("dynamic symbol table name section has wrong type: %u")" identifier = (cast_expression "(char *)gettext("dynamic symbol table name section has wrong type: %u")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("dynamic symbol table name section has wrong type: %u")" identifier (argument_list "("dynamic symbol table name section has wrong type: %u")" ( (string_literal ""dynamic symbol table name section has wrong type: %u"" " string_content ") ))))) ;) (labeled_statement "Object::error((Object *)this,pcVar4,(ulong)uVar5);" statement_identifier : (ERROR ":" :) (expression_statement "error((Object *)this,pcVar4,(ulong)uVar5);" (call_expression "error((Object *)this,pcVar4,(ulong)uVar5)" identifier (argument_list "((Object *)this,pcVar4,(ulong)uVar5)" ( (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;)) (return_statement "return;" return ;) })) (expression_statement "this_00 = (this->super_Dynobj).super_Object.input_file_;" (assignment_expression "this_00 = (this->super_Dynobj).super_Object.input_file_" identifier = (field_expression "(this->super_Dynobj).super_Object.input_file_" (field_expression "(this->super_Dynobj).super_Object" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (this_00 != (Input_file *)0x0) {\n      pFVar3 = File_read::get_lasting_view\n                         (&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),false,false);\n      sd->symbol_names = pFVar3;\n      uVar5 = this->dynsym_shndx_;\n      sd->symbol_names_size = (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14);\n      read_dynsym_section(this,pshdrs,versym_shndx,SHT_GNU_versym,uVar5,&sd->versym,&sd->versym_size\n                          ,&dummy);\n      read_dynsym_section(this,pshdrs,verdef_shndx,SHT_GNU_verdef,link,&sd->verdef,&sd->verdef_size,\n                          &sd->verdef_info);\n      read_dynsym_section(this,pshdrs,verneed_shndx,SHT_GNU_verneed,link,&sd->verneed,\n                          &sd->verneed_size,&sd->verneed_info);\n      goto LAB_002a5bea;\n    }" if (parenthesized_expression "(this_00 != (Input_file *)0x0)" ( (binary_expression "this_00 != (Input_file *)0x0" identifier != (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pFVar3 = File_read::get_lasting_view\n                         (&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),false,false);\n      sd->symbol_names = pFVar3;\n      uVar5 = this->dynsym_shndx_;\n      sd->symbol_names_size = (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14);\n      read_dynsym_section(this,pshdrs,versym_shndx,SHT_GNU_versym,uVar5,&sd->versym,&sd->versym_size\n                          ,&dummy);\n      read_dynsym_section(this,pshdrs,verdef_shndx,SHT_GNU_verdef,link,&sd->verdef,&sd->verdef_size,\n                          &sd->verdef_info);\n      read_dynsym_section(this,pshdrs,verneed_shndx,SHT_GNU_verneed,link,&sd->verneed,\n                          &sd->verneed_size,&sd->verneed_info);\n      goto LAB_002a5bea;\n    }" { (ERROR "pFVar3 = File_read::" (assignment_expression "pFVar3 = File_read" identifier = identifier) : :) (expression_statement "get_lasting_view\n                         (&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),false,false);" (call_expression "get_lasting_view\n                         (&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),false,false)" identifier (argument_list "(&this_00->file_,(this->super_Dynobj).super_Object.offset_,\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10),\n                          (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14),false,false)" ( (pointer_expression "&this_00->file_" & (field_expression "this_00->file_" identifier -> field_identifier)) , (field_expression "(this->super_Dynobj).super_Object.offset_" (field_expression "(this->super_Dynobj).super_Object" (parenthesized_expression "(this->super_Dynobj)" ( (field_expression "this->super_Dynobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (binary_expression "(ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(pshdrs + (ulong)(link * 0x28) + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(link * 0x28) + 0x10)" ( (binary_expression "pshdrs + (ulong)(link * 0x28) + 0x10" (binary_expression "pshdrs + (ulong)(link * 0x28)" identifier + (call_expression "(ulong)(link * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(link * 0x28)" ( (binary_expression "link * 0x28" identifier * number_literal) )))) + number_literal) )))) , (binary_expression "(ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(link * 0x28) + 0x14)" ( (binary_expression "pshdrs + (ulong)(link * 0x28) + 0x14" (binary_expression "pshdrs + (ulong)(link * 0x28)" identifier + (call_expression "(ulong)(link * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(link * 0x28)" ( (binary_expression "link * 0x28" identifier * number_literal) )))) + number_literal) )))) , false , false ))) ;) (expression_statement "sd->symbol_names = pFVar3;" (assignment_expression "sd->symbol_names = pFVar3" (field_expression "sd->symbol_names" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar5 = this->dynsym_shndx_;" (assignment_expression "uVar5 = this->dynsym_shndx_" identifier = (field_expression "this->dynsym_shndx_" identifier -> field_identifier)) ;) (expression_statement "sd->symbol_names_size = (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14);" (assignment_expression "sd->symbol_names_size = (ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14)" (field_expression "sd->symbol_names_size" identifier -> field_identifier) = (binary_expression "(ulong)*(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(pshdrs + (ulong)(link * 0x28) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pshdrs + (ulong)(link * 0x28) + 0x14)" ( (binary_expression "pshdrs + (ulong)(link * 0x28) + 0x14" (binary_expression "pshdrs + (ulong)(link * 0x28)" identifier + (call_expression "(ulong)(link * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(link * 0x28)" ( (binary_expression "link * 0x28" identifier * number_literal) )))) + number_literal) ))))) ;) (expression_statement "read_dynsym_section(this,pshdrs,versym_shndx,SHT_GNU_versym,uVar5,&sd->versym,&sd->versym_size\n                          ,&dummy);" (call_expression "read_dynsym_section(this,pshdrs,versym_shndx,SHT_GNU_versym,uVar5,&sd->versym,&sd->versym_size\n                          ,&dummy)" identifier (argument_list "(this,pshdrs,versym_shndx,SHT_GNU_versym,uVar5,&sd->versym,&sd->versym_size\n                          ,&dummy)" ( identifier , identifier , identifier , identifier , identifier , (pointer_expression "&sd->versym" & (field_expression "sd->versym" identifier -> field_identifier)) , (pointer_expression "&sd->versym_size" & (field_expression "sd->versym_size" identifier -> field_identifier)) , (pointer_expression "&dummy" & identifier) ))) ;) (expression_statement "read_dynsym_section(this,pshdrs,verdef_shndx,SHT_GNU_verdef,link,&sd->verdef,&sd->verdef_size,\n                          &sd->verdef_info);" (call_expression "read_dynsym_section(this,pshdrs,verdef_shndx,SHT_GNU_verdef,link,&sd->verdef,&sd->verdef_size,\n                          &sd->verdef_info)" identifier (argument_list "(this,pshdrs,verdef_shndx,SHT_GNU_verdef,link,&sd->verdef,&sd->verdef_size,\n                          &sd->verdef_info)" ( identifier , identifier , identifier , identifier , identifier , (pointer_expression "&sd->verdef" & (field_expression "sd->verdef" identifier -> field_identifier)) , (pointer_expression "&sd->verdef_size" & (field_expression "sd->verdef_size" identifier -> field_identifier)) , (pointer_expression "&sd->verdef_info" & (field_expression "sd->verdef_info" identifier -> field_identifier)) ))) ;) (expression_statement "read_dynsym_section(this,pshdrs,verneed_shndx,SHT_GNU_verneed,link,&sd->verneed,\n                          &sd->verneed_size,&sd->verneed_info);" (call_expression "read_dynsym_section(this,pshdrs,verneed_shndx,SHT_GNU_verneed,link,&sd->verneed,\n                          &sd->verneed_size,&sd->verneed_info)" identifier (argument_list "(this,pshdrs,verneed_shndx,SHT_GNU_verneed,link,&sd->verneed,\n                          &sd->verneed_size,&sd->verneed_info)" ( identifier , identifier , identifier , identifier , identifier , (pointer_expression "&sd->verneed" & (field_expression "sd->verneed" identifier -> field_identifier)) , (pointer_expression "&sd->verneed_size" & (field_expression "sd->verneed_size" identifier -> field_identifier)) , (pointer_expression "&sd->verneed_info" & (field_expression "sd->verneed_info" identifier -> field_identifier)) ))) ;) (goto_statement "goto LAB_002a5bea;" goto statement_identifier ;) })) })) comment (labeled_statement "Object::input_file((Object *)this_00);" statement_identifier : (ERROR ":" :) (expression_statement "input_file((Object *)this_00);" (call_expression "input_file((Object *)this_00)" identifier (argument_list "((Object *)this_00)" ( (cast_expression "(Object *)this_00" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (ERROR "}" }))
(translation_unit "void FUN_002a5ae0(long param_1,long *param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  long lVar3;\n  size_t __haystacklen;\n  void *__haystack;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  uint uVar8;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  int local_40;\n  undefined1 local_3c [12];\n  \n  FUN_001c5dc0(param_1,param_1 + 0x90,param_2);\n  lVar3 = *(long *)(*param_2 + 0x10);\n  FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);\n  __haystacklen = param_2[2];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  __haystack = *(void **)(param_2[1] + 0x10);\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  param_2[8] = 0;\n  param_2[9] = 0;\n  param_2[10] = 0;\n  param_2[0xb] = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  param_2[0xd] = 0;\n  param_2[0xe] = 0;\n  *(undefined4 *)(param_2 + 0xf) = 0;\n  pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);\n  if ((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)) {\n    *(long *)(param_1 + 0x48) = lVar5;\n  }\n  uVar8 = *(uint *)(param_1 + 0xb0);\n  if (uVar8 == 0xffffffff) {\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }\n  lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n  if (*(long *)(param_1 + 0x28) != 0) {\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }\n                    \n  FUN_0029a170();\n}\n\n" (function_definition "void FUN_002a5ae0(long param_1,long *param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  long lVar3;\n  size_t __haystacklen;\n  void *__haystack;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  uint uVar8;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  int local_40;\n  undefined1 local_3c [12];\n  \n  FUN_001c5dc0(param_1,param_1 + 0x90,param_2);\n  lVar3 = *(long *)(*param_2 + 0x10);\n  FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);\n  __haystacklen = param_2[2];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  __haystack = *(void **)(param_2[1] + 0x10);\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  param_2[8] = 0;\n  param_2[9] = 0;\n  param_2[10] = 0;\n  param_2[0xb] = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  param_2[0xd] = 0;\n  param_2[0xe] = 0;\n  *(undefined4 *)(param_2 + 0xf) = 0;\n  pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);\n  if ((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)) {\n    *(long *)(param_1 + 0x48) = lVar5;\n  }\n  uVar8 = *(uint *)(param_1 + 0xb0);\n  if (uVar8 == 0xffffffff) {\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }\n  lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n  if (*(long *)(param_1 + 0x28) != 0) {\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }\n                    \n  FUN_0029a170();\n}" primitive_type (function_declarator "FUN_002a5ae0(long param_1,long *param_2)" identifier (parameter_list "(long param_1,long *param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  long lVar3;\n  size_t __haystacklen;\n  void *__haystack;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  uint uVar8;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  int local_40;\n  undefined1 local_3c [12];\n  \n  FUN_001c5dc0(param_1,param_1 + 0x90,param_2);\n  lVar3 = *(long *)(*param_2 + 0x10);\n  FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);\n  __haystacklen = param_2[2];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  __haystack = *(void **)(param_2[1] + 0x10);\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  param_2[8] = 0;\n  param_2[9] = 0;\n  param_2[10] = 0;\n  param_2[0xb] = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  param_2[0xd] = 0;\n  param_2[0xe] = 0;\n  *(undefined4 *)(param_2 + 0xf) = 0;\n  pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);\n  if ((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)) {\n    *(long *)(param_1 + 0x48) = lVar5;\n  }\n  uVar8 = *(uint *)(param_1 + 0xb0);\n  if (uVar8 == 0xffffffff) {\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }\n  lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n  if (*(long *)(param_1 + 0x28) != 0) {\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }\n                    \n  FUN_0029a170();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "size_t __haystacklen;" primitive_type identifier ;) (declaration "void *__haystack;" primitive_type (pointer_declarator "*__haystack" * identifier) ;) (declaration "void *pvVar4;" primitive_type (pointer_declarator "*pvVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined1 local_3c [12];" type_identifier (array_declarator "local_3c [12]" identifier [ number_literal ]) ;) (expression_statement "FUN_001c5dc0(param_1,param_1 + 0x90,param_2);" (call_expression "FUN_001c5dc0(param_1,param_1 + 0x90,param_2)" identifier (argument_list "(param_1,param_1 + 0x90,param_2)" ( identifier , (binary_expression "param_1 + 0x90" identifier + number_literal) , identifier ))) ;) (expression_statement "lVar3 = *(long *)(*param_2 + 0x10);" (assignment_expression "lVar3 = *(long *)(*param_2 + 0x10)" identifier = (pointer_expression "*(long *)(*param_2 + 0x10)" * (cast_expression "(long *)(*param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x10)" ( (binary_expression "*param_2 + 0x10" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);" (call_expression "FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40)" identifier (argument_list "(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40)" ( identifier , identifier , (pointer_expression "&local_4c" & identifier) , (pointer_expression "&local_48" & identifier) , (pointer_expression "&local_44" & identifier) , (pointer_expression "&local_40" & identifier) ))) ;) (expression_statement "__haystacklen = param_2[2];" (assignment_expression "__haystacklen = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "param_2[3] = 0;" (assignment_expression "param_2[3] = 0" (subscript_expression "param_2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[4] = 0;" (assignment_expression "param_2[4] = 0" (subscript_expression "param_2[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "__haystack = *(void **)(param_2[1] + 0x10);" (assignment_expression "__haystack = *(void **)(param_2[1] + 0x10)" identifier = (pointer_expression "*(void **)(param_2[1] + 0x10)" * (cast_expression "(void **)(param_2[1] + 0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2[1] + 0x10)" ( (binary_expression "param_2[1] + 0x10" (subscript_expression "param_2[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "param_2[5] = 0;" (assignment_expression "param_2[5] = 0" (subscript_expression "param_2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[7] = 0;" (assignment_expression "param_2[7] = 0" (subscript_expression "param_2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[8] = 0;" (assignment_expression "param_2[8] = 0" (subscript_expression "param_2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[9] = 0;" (assignment_expression "param_2[9] = 0" (subscript_expression "param_2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[10] = 0;" (assignment_expression "param_2[10] = 0" (subscript_expression "param_2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xb] = 0;" (assignment_expression "param_2[0xb] = 0" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(param_2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_2[0xd] = 0;" (assignment_expression "param_2[0xd] = 0" (subscript_expression "param_2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xe] = 0;" (assignment_expression "param_2[0xe] = 0" (subscript_expression "param_2[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(param_2 + 0xf) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0xf) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0xf)" * (cast_expression "(undefined4 *)(param_2 + 0xf)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xf)" ( (binary_expression "param_2 + 0xf" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);" (assignment_expression "pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8)" identifier = (call_expression "memmem(__haystack,__haystacklen,".zdebug_",8)" identifier (argument_list "(__haystack,__haystacklen,".zdebug_",8)" ( identifier , identifier , (string_literal "".zdebug_"" " string_content ") , number_literal )))) ;) (if_statement "if ((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)) {\n    *(long *)(param_1 + 0x48) = lVar5;\n  }" if (parenthesized_expression "((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0))" ( (binary_expression "(pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)" (parenthesized_expression "(pvVar4 != (void *)0x0)" ( (binary_expression "pvVar4 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)" ( (comma_expression "lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0" (assignment_expression "lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)" identifier = (call_expression "FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)" identifier (argument_list "(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x38)" * (cast_expression "(undefined4 *)(param_1 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) , identifier , identifier , identifier , number_literal )))) , (binary_expression "lVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    *(long *)(param_1 + 0x48) = lVar5;\n  }" { (expression_statement "*(long *)(param_1 + 0x48) = lVar5;" (assignment_expression "*(long *)(param_1 + 0x48) = lVar5" (pointer_expression "*(long *)(param_1 + 0x48)" * (cast_expression "(long *)(param_1 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "uVar8 = *(uint *)(param_1 + 0xb0);" (assignment_expression "uVar8 = *(uint *)(param_1 + 0xb0)" identifier = (pointer_expression "*(uint *)(param_1 + 0xb0)" * (cast_expression "(uint *)(param_1 + 0xb0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (if_statement "if (uVar8 == 0xffffffff) {\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }" { (labeled_statement "LAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }" statement_identifier : (if_statement "if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }" if (parenthesized_expression "(local_40 != -1)" ( (binary_expression "local_40 != -1" identifier != number_literal) )) (compound_statement "{\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }" { (expression_statement "lVar5 = param_2[6];" (assignment_expression "lVar5 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (if_statement "if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }" { (expression_statement "lVar5 = *(long *)(lVar5 + 0x10);" (assignment_expression "lVar5 = *(long *)(lVar5 + 0x10)" identifier = (pointer_expression "*(long *)(lVar5 + 0x10)" * (cast_expression "(long *)(lVar5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) ))))) ;) })) (expression_statement "FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);" (call_expression "FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7])" identifier (argument_list "(param_1,lVar3,local_40,uVar8,lVar5,param_2[7])" ( identifier , identifier , identifier , identifier , identifier , (subscript_expression "param_2[7]" identifier [ number_literal ]) ))) ;) }))) (return_statement "return;" return ;) })) (expression_statement "lVar5 = (ulong)(uVar8 * 0x28) + lVar3;" (assignment_expression "lVar5 = (ulong)(uVar8 * 0x28) + lVar3" identifier = (binary_expression "(ulong)(uVar8 * 0x28) + lVar3" (call_expression "(ulong)(uVar8 * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 * 0x28)" ( (binary_expression "uVar8 * 0x28" identifier * number_literal) ))) + identifier)) ;) (if_statement "if (*(long *)(param_1 + 0x28) != 0) {\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x28) != 0)" ( (binary_expression "*(long *)(param_1 + 0x28) != 0" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }" { (expression_statement "lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);" (assignment_expression "lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0)" identifier = (call_expression "FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0)" identifier (argument_list "(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0)" ( (binary_expression "*(long *)(param_1 + 0x28) + 0x28" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(lVar5 + 0x10)" * (cast_expression "(undefined4 *)(lVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(lVar5 + 0x14)" * (cast_expression "(undefined4 *)(lVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x14)" ( (binary_expression "lVar5 + 0x14" identifier + number_literal) )))) , number_literal , number_literal )))) ;) (expression_statement "param_2[3] = lVar6;" (assignment_expression "param_2[3] = lVar6" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar8 = *(uint *)(lVar5 + 0x18);" (assignment_expression "uVar8 = *(uint *)(lVar5 + 0x18)" identifier = (pointer_expression "*(uint *)(lVar5 + 0x18)" * (cast_expression "(uint *)(lVar5 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x18)" ( (binary_expression "lVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);" (assignment_expression "param_2[4] = (ulong)*(uint *)(lVar5 + 0x14)" (subscript_expression "param_2[4]" identifier [ number_literal ]) = (binary_expression "(ulong)*(uint *)(lVar5 + 0x14)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x14)" ( (binary_expression "lVar5 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }" if (parenthesized_expression "(0xfeff < uVar8)" ( (binary_expression "0xfeff < uVar8" number_literal < identifier) )) (compound_statement "{\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }" { (expression_statement "FUN_00167570(param_1 + 0x90);" (call_expression "FUN_00167570(param_1 + 0x90)" identifier (argument_list "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) ))) ;) (expression_statement "uVar8 = uVar8 + *(int *)(param_1 + 0xa8);" (assignment_expression "uVar8 = uVar8 + *(int *)(param_1 + 0xa8)" identifier = (binary_expression "uVar8 + *(int *)(param_1 + 0xa8)" identifier + (pointer_expression "*(int *)(param_1 + 0xa8)" * (cast_expression "(int *)(param_1 + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))))) ;) })) (if_statement "if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }" if (parenthesized_expression "(*(uint *)(param_1 + 0x38) <= uVar8)" ( (binary_expression "*(uint *)(param_1 + 0x38) <= uVar8" (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }" { (expression_statement "uVar7 = gettext("invalid dynamic symbol table name index: %u");" (assignment_expression "uVar7 = gettext("invalid dynamic symbol table name index: %u")" identifier = (call_expression "gettext("invalid dynamic symbol table name index: %u")" identifier (argument_list "("invalid dynamic symbol table name index: %u")" ( (string_literal ""invalid dynamic symbol table name index: %u"" " string_content ") )))) ;) (expression_statement "FUN_001bd150(param_1,uVar7,uVar8);" (call_expression "FUN_001bd150(param_1,uVar7,uVar8)" identifier (argument_list "(param_1,uVar7,uVar8)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "lVar5 = (ulong)(uVar8 * 0x28) + lVar3;" (assignment_expression "lVar5 = (ulong)(uVar8 * 0x28) + lVar3" identifier = (binary_expression "(ulong)(uVar8 * 0x28) + lVar3" (call_expression "(ulong)(uVar8 * 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 * 0x28)" ( (binary_expression "uVar8 * 0x28" identifier * number_literal) ))) + identifier)) ;) (expression_statement "iVar1 = *(int *)(lVar5 + 4);" (assignment_expression "iVar1 = *(int *)(lVar5 + 4)" identifier = (pointer_expression "*(int *)(lVar5 + 4)" * (cast_expression "(int *)(lVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 4)" ( (binary_expression "lVar5 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }" if (parenthesized_expression "(iVar1 != 3)" ( (binary_expression "iVar1 != 3" identifier != number_literal) )) (compound_statement "{\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }" { (expression_statement "uVar7 = gettext("dynamic symbol table name section has wrong type: %u");" (assignment_expression "uVar7 = gettext("dynamic symbol table name section has wrong type: %u")" identifier = (call_expression "gettext("dynamic symbol table name section has wrong type: %u")" identifier (argument_list "("dynamic symbol table name section has wrong type: %u")" ( (string_literal ""dynamic symbol table name section has wrong type: %u"" " string_content ") )))) ;) (expression_statement "FUN_001bd150(param_1,uVar7,iVar1);" (call_expression "FUN_001bd150(param_1,uVar7,iVar1)" identifier (argument_list "(param_1,uVar7,iVar1)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (if_statement "if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0x28) != 0)" ( (binary_expression "*(long *)(param_1 + 0x28) != 0" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }" { (expression_statement "lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);" (assignment_expression "lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0)" identifier = (call_expression "FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0)" identifier (argument_list "(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0)" ( (binary_expression "*(long *)(param_1 + 0x28) + 0x28" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(lVar5 + 0x10)" * (cast_expression "(undefined4 *)(lVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(lVar5 + 0x14)" * (cast_expression "(undefined4 *)(lVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x14)" ( (binary_expression "lVar5 + 0x14" identifier + number_literal) )))) , number_literal , number_literal )))) ;) (expression_statement "param_2[6] = lVar6;" (assignment_expression "param_2[6] = lVar6" (subscript_expression "param_2[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 0xb0)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);" (assignment_expression "param_2[7] = (ulong)*(uint *)(lVar5 + 0x14)" (subscript_expression "param_2[7]" identifier [ number_literal ]) = (binary_expression "(ulong)*(uint *)(lVar5 + 0x14)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x14)" ( (binary_expression "lVar5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);" (call_expression "FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c)" identifier (argument_list "(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c)" ( identifier , identifier , identifier , number_literal , identifier , (binary_expression "param_2 + 8" identifier + number_literal) , (binary_expression "param_2 + 9" identifier + number_literal) , identifier ))) ;) (expression_statement "FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;" (call_expression "FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)" identifier (argument_list "(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)" ( identifier , identifier , identifier , number_literal , identifier , (binary_expression "param_2 + 10" identifier + number_literal) , (binary_expression "param_2 + 0xb" identifier + number_literal) , (binary_expression "param_2 + 0xc" identifier + number_literal) ))) ;) (expression_statement "FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );" (call_expression "FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  )" identifier (argument_list "(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  )" ( identifier , identifier , identifier , number_literal , identifier , (binary_expression "param_2 + 0xd" identifier + number_literal) , (binary_expression "param_2 + 0xe" identifier + number_literal) , (binary_expression "param_2 + 0xf" identifier + number_literal) ))) ;) (goto_statement "goto LAB_002a5bea;" goto statement_identifier ;) })) })) (expression_statement "FUN_0029a170();" (call_expression "FUN_0029a170()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (string_literal " string_content ") , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT , LIT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) }))) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_002a5ae0(long param_1,long *param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  long lVar3;\n  size_t __haystacklen;\n  void *__haystack;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  uint uVar8;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  int local_40;\n  undefined1 local_3c [12];\n  \n  FUN_001c5dc0(param_1,param_1 + 0x90,param_2);\n  lVar3 = *(long *)(*param_2 + 0x10);\n  FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);\n  __haystacklen = param_2[2];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  __haystack = *(void **)(param_2[1] + 0x10);\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  param_2[8] = 0;\n  param_2[9] = 0;\n  param_2[10] = 0;\n  param_2[0xb] = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  param_2[0xd] = 0;\n  param_2[0xe] = 0;\n  *(undefined4 *)(param_2 + 0xf) = 0;\n  pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);\n  if ((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)) {\n    *(long *)(param_1 + 0x48) = lVar5;\n  }\n  uVar8 = *(uint *)(param_1 + 0xb0);\n  if (uVar8 == 0xffffffff) {\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }\n  lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n  if (*(long *)(param_1 + 0x28) != 0) {\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }\n                    \n  FUN_0029a170();\n}" (primitive_type "void") (function_declarator "FUN_002a5ae0(long param_1,long *param_2)" (identifier "FUN_002a5ae0") (parameter_list "(long param_1,long *param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  long lVar3;\n  size_t __haystacklen;\n  void *__haystack;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 uVar7;\n  uint uVar8;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  int local_40;\n  undefined1 local_3c [12];\n  \n  FUN_001c5dc0(param_1,param_1 + 0x90,param_2);\n  lVar3 = *(long *)(*param_2 + 0x10);\n  FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);\n  __haystacklen = param_2[2];\n  param_2[3] = 0;\n  param_2[4] = 0;\n  __haystack = *(void **)(param_2[1] + 0x10);\n  param_2[5] = 0;\n  param_2[6] = 0;\n  param_2[7] = 0;\n  param_2[8] = 0;\n  param_2[9] = 0;\n  param_2[10] = 0;\n  param_2[0xb] = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  param_2[0xd] = 0;\n  param_2[0xe] = 0;\n  *(undefined4 *)(param_2 + 0xf) = 0;\n  pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);\n  if ((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)) {\n    *(long *)(param_1 + 0x48) = lVar5;\n  }\n  uVar8 = *(uint *)(param_1 + 0xb0);\n  if (uVar8 == 0xffffffff) {\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }\n  lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n  if (*(long *)(param_1 + 0x28) != 0) {\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }\n                    \n  FUN_0029a170();\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "size_t __haystacklen;" (primitive_type "size_t") (identifier "__haystacklen") (; ";")) (declaration "void *__haystack;" (primitive_type "void") (pointer_declarator "*__haystack" (* "*") (identifier "__haystack")) (; ";")) (declaration "void *pvVar4;" (primitive_type "void") (pointer_declarator "*pvVar4" (* "*") (identifier "pvVar4")) (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined4 local_4c;" (type_identifier "undefined4") (identifier "local_4c") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "undefined1 local_3c [12];" (type_identifier "undefined1") (array_declarator "local_3c [12]" (identifier "local_3c") ([ "[") (number_literal "12") (] "]")) (; ";")) (expression_statement "FUN_001c5dc0(param_1,param_1 + 0x90,param_2);" (call_expression "FUN_001c5dc0(param_1,param_1 + 0x90,param_2)" (identifier "FUN_001c5dc0") (argument_list "(param_1,param_1 + 0x90,param_2)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_1 + 0x90" (identifier "param_1") (+ "+") (number_literal "0x90")) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "lVar3 = *(long *)(*param_2 + 0x10);" (assignment_expression "lVar3 = *(long *)(*param_2 + 0x10)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(*param_2 + 0x10)" (* "*") (cast_expression "(long *)(*param_2 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 0x10)" (( "(") (binary_expression "*param_2 + 0x10" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);" (call_expression "FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40)" (identifier "FUN_002a0370") (argument_list "(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40)" (( "(") (identifier "param_1") (, ",") (identifier "lVar3") (, ",") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (pointer_expression "&local_44" (& "&") (identifier "local_44")) (, ",") (pointer_expression "&local_40" (& "&") (identifier "local_40")) () ")"))) (; ";")) (expression_statement "__haystacklen = param_2[2];" (assignment_expression "__haystacklen = param_2[2]" (identifier "__haystacklen") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_2[3] = 0;" (assignment_expression "param_2[3] = 0" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[4] = 0;" (assignment_expression "param_2[4] = 0" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "__haystack = *(void **)(param_2[1] + 0x10);" (assignment_expression "__haystack = *(void **)(param_2[1] + 0x10)" (identifier "__haystack") (= "=") (pointer_expression "*(void **)(param_2[1] + 0x10)" (* "*") (cast_expression "(void **)(param_2[1] + 0x10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2[1] + 0x10)" (( "(") (binary_expression "param_2[1] + 0x10" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "param_2[5] = 0;" (assignment_expression "param_2[5] = 0" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[6] = 0;" (assignment_expression "param_2[6] = 0" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[7] = 0;" (assignment_expression "param_2[7] = 0" (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[8] = 0;" (assignment_expression "param_2[8] = 0" (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[9] = 0;" (assignment_expression "param_2[9] = 0" (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[10] = 0;" (assignment_expression "param_2[10] = 0" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xb] = 0;" (assignment_expression "param_2[0xb] = 0" (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xd] = 0;" (assignment_expression "param_2[0xd] = 0" (subscript_expression "param_2[0xd]" (identifier "param_2") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xe] = 0;" (assignment_expression "param_2[0xe] = 0" (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0xf) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0xf) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0xf)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0xf)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xf)" (( "(") (binary_expression "param_2 + 0xf" (identifier "param_2") (+ "+") (number_literal "0xf")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);" (assignment_expression "pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8)" (identifier "pvVar4") (= "=") (call_expression "memmem(__haystack,__haystacklen,".zdebug_",8)" (identifier "memmem") (argument_list "(__haystack,__haystacklen,".zdebug_",8)" (( "(") (identifier "__haystack") (, ",") (identifier "__haystacklen") (, ",") (string_literal "".zdebug_"" (" """) (string_content ".zdebug_") (" """)) (, ",") (number_literal "8") () ")")))) (; ";")) (if_statement "if ((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)) {\n    *(long *)(param_1 + 0x48) = lVar5;\n  }" (if "if") (parenthesized_expression "((pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0))" (( "(") (binary_expression "(pvVar4 != (void *)0x0) &&\n     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)" (parenthesized_expression "(pvVar4 != (void *)0x0)" (( "(") (binary_expression "pvVar4 != (void *)0x0" (identifier "pvVar4") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0)" (( "(") (comma_expression "lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)\n     , lVar5 != 0" (assignment_expression "lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)" (identifier "lVar5") (= "=") (call_expression "FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)" (identifier "FUN_001e1e50") (argument_list "(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)" (( "(") (identifier "lVar3") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x38)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (, ",") (identifier "__haystack") (, ",") (identifier "__haystacklen") (, ",") (identifier "param_1") (, ",") (number_literal "1") () ")")))) (, ",") (binary_expression "lVar5 != 0" (identifier "lVar5") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    *(long *)(param_1 + 0x48) = lVar5;\n  }" ({ "{") (expression_statement "*(long *)(param_1 + 0x48) = lVar5;" (assignment_expression "*(long *)(param_1 + 0x48) = lVar5" (pointer_expression "*(long *)(param_1 + 0x48)" (* "*") (cast_expression "(long *)(param_1 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "lVar5")) (; ";")) (} "}"))) (expression_statement "uVar8 = *(uint *)(param_1 + 0xb0);" (assignment_expression "uVar8 = *(uint *)(param_1 + 0xb0)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(param_1 + 0xb0)" (* "*") (cast_expression "(uint *)(param_1 + 0xb0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (if_statement "if (uVar8 == 0xffffffff) {\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }" (if "if") (parenthesized_expression "(uVar8 == 0xffffffff)" (( "(") (binary_expression "uVar8 == 0xffffffff" (identifier "uVar8") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\nLAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }\n    return;\n  }" ({ "{") (labeled_statement "LAB_002a5bea:\n    if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }" (statement_identifier "LAB_002a5bea") (: ":") (if_statement "if (local_40 != -1) {\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }" (if "if") (parenthesized_expression "(local_40 != -1)" (( "(") (binary_expression "local_40 != -1" (identifier "local_40") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n      lVar5 = param_2[6];\n      if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }\n      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);\n    }" ({ "{") (expression_statement "lVar5 = param_2[6];" (assignment_expression "lVar5 = param_2[6]" (identifier "lVar5") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (lVar5 != 0) {\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }" (if "if") (parenthesized_expression "(lVar5 != 0)" (( "(") (binary_expression "lVar5 != 0" (identifier "lVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        lVar5 = *(long *)(lVar5 + 0x10);\n      }" ({ "{") (expression_statement "lVar5 = *(long *)(lVar5 + 0x10);" (assignment_expression "lVar5 = *(long *)(lVar5 + 0x10)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(lVar5 + 0x10)" (* "*") (cast_expression "(long *)(lVar5 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x10)" (( "(") (binary_expression "lVar5 + 0x10" (identifier "lVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (expression_statement "FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);" (call_expression "FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7])" (identifier "FUN_002a57e0") (argument_list "(param_1,lVar3,local_40,uVar8,lVar5,param_2[7])" (( "(") (identifier "param_1") (, ",") (identifier "lVar3") (, ",") (identifier "local_40") (, ",") (identifier "uVar8") (, ",") (identifier "lVar5") (, ",") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) () ")"))) (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "lVar5 = (ulong)(uVar8 * 0x28) + lVar3;" (assignment_expression "lVar5 = (ulong)(uVar8 * 0x28) + lVar3" (identifier "lVar5") (= "=") (binary_expression "(ulong)(uVar8 * 0x28) + lVar3" (call_expression "(ulong)(uVar8 * 0x28)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar8 * 0x28)" (( "(") (binary_expression "uVar8 * 0x28" (identifier "uVar8") (* "*") (number_literal "0x28")) () ")"))) (+ "+") (identifier "lVar3"))) (; ";")) (if_statement "if (*(long *)(param_1 + 0x28) != 0) {\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x28) != 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x28) != 0" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);\n    param_2[3] = lVar6;\n    uVar8 = *(uint *)(lVar5 + 0x18);\n    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);\n    if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }\n    if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }\n    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;\n    iVar1 = *(int *)(lVar5 + 4);\n    if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }\n    if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }\n  }" ({ "{") (expression_statement "lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);" (assignment_expression "lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0)" (identifier "lVar6") (= "=") (call_expression "FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0)" (identifier "FUN_0017b210") (argument_list "(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0)" (( "(") (binary_expression "*(long *)(param_1 + 0x28) + 0x28" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x28")) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(lVar5 + 0x10)" (* "*") (cast_expression "(undefined4 *)(lVar5 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x10)" (( "(") (binary_expression "lVar5 + 0x10" (identifier "lVar5") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(lVar5 + 0x14)" (* "*") (cast_expression "(undefined4 *)(lVar5 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x14)" (( "(") (binary_expression "lVar5 + 0x14" (identifier "lVar5") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (number_literal "1") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_2[3] = lVar6;" (assignment_expression "param_2[3] = lVar6" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "uVar8 = *(uint *)(lVar5 + 0x18);" (assignment_expression "uVar8 = *(uint *)(lVar5 + 0x18)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(lVar5 + 0x18)" (* "*") (cast_expression "(uint *)(lVar5 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x18)" (( "(") (binary_expression "lVar5 + 0x18" (identifier "lVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);" (assignment_expression "param_2[4] = (ulong)*(uint *)(lVar5 + 0x14)" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "(ulong)*(uint *)(lVar5 + 0x14)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(lVar5 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x14)" (( "(") (binary_expression "lVar5 + 0x14" (identifier "lVar5") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (0xfeff < uVar8) {\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }" (if "if") (parenthesized_expression "(0xfeff < uVar8)" (( "(") (binary_expression "0xfeff < uVar8" (number_literal "0xfeff") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n      FUN_00167570(param_1 + 0x90);\n      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);\n    }" ({ "{") (expression_statement "FUN_00167570(param_1 + 0x90);" (call_expression "FUN_00167570(param_1 + 0x90)" (identifier "FUN_00167570") (argument_list "(param_1 + 0x90)" (( "(") (binary_expression "param_1 + 0x90" (identifier "param_1") (+ "+") (number_literal "0x90")) () ")"))) (; ";")) (expression_statement "uVar8 = uVar8 + *(int *)(param_1 + 0xa8);" (assignment_expression "uVar8 = uVar8 + *(int *)(param_1 + 0xa8)" (identifier "uVar8") (= "=") (binary_expression "uVar8 + *(int *)(param_1 + 0xa8)" (identifier "uVar8") (+ "+") (pointer_expression "*(int *)(param_1 + 0xa8)" (* "*") (cast_expression "(int *)(param_1 + 0xa8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa8)" (( "(") (binary_expression "param_1 + 0xa8" (identifier "param_1") (+ "+") (number_literal "0xa8")) () ")")))))) (; ";")) (} "}"))) (if_statement "if (*(uint *)(param_1 + 0x38) <= uVar8) {\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x38) <= uVar8)" (( "(") (binary_expression "*(uint *)(param_1 + 0x38) <= uVar8" (pointer_expression "*(uint *)(param_1 + 0x38)" (* "*") (cast_expression "(uint *)(param_1 + 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (<= "<=") (identifier "uVar8")) () ")")) (compound_statement "{\n      uVar7 = gettext("invalid dynamic symbol table name index: %u");\n      FUN_001bd150(param_1,uVar7,uVar8);\n      return;\n    }" ({ "{") (expression_statement "uVar7 = gettext("invalid dynamic symbol table name index: %u");" (assignment_expression "uVar7 = gettext("invalid dynamic symbol table name index: %u")" (identifier "uVar7") (= "=") (call_expression "gettext("invalid dynamic symbol table name index: %u")" (identifier "gettext") (argument_list "("invalid dynamic symbol table name index: %u")" (( "(") (string_literal ""invalid dynamic symbol table name index: %u"" (" """) (string_content "invalid dynamic symbol table name index: %u") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001bd150(param_1,uVar7,uVar8);" (call_expression "FUN_001bd150(param_1,uVar7,uVar8)" (identifier "FUN_001bd150") (argument_list "(param_1,uVar7,uVar8)" (( "(") (identifier "param_1") (, ",") (identifier "uVar7") (, ",") (identifier "uVar8") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "lVar5 = (ulong)(uVar8 * 0x28) + lVar3;" (assignment_expression "lVar5 = (ulong)(uVar8 * 0x28) + lVar3" (identifier "lVar5") (= "=") (binary_expression "(ulong)(uVar8 * 0x28) + lVar3" (call_expression "(ulong)(uVar8 * 0x28)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar8 * 0x28)" (( "(") (binary_expression "uVar8 * 0x28" (identifier "uVar8") (* "*") (number_literal "0x28")) () ")"))) (+ "+") (identifier "lVar3"))) (; ";")) (expression_statement "iVar1 = *(int *)(lVar5 + 4);" (assignment_expression "iVar1 = *(int *)(lVar5 + 4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(lVar5 + 4)" (* "*") (cast_expression "(int *)(lVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 4)" (( "(") (binary_expression "lVar5 + 4" (identifier "lVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar1 != 3) {\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }" (if "if") (parenthesized_expression "(iVar1 != 3)" (( "(") (binary_expression "iVar1 != 3" (identifier "iVar1") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");\n      FUN_001bd150(param_1,uVar7,iVar1);\n      return;\n    }" ({ "{") (expression_statement "uVar7 = gettext("dynamic symbol table name section has wrong type: %u");" (assignment_expression "uVar7 = gettext("dynamic symbol table name section has wrong type: %u")" (identifier "uVar7") (= "=") (call_expression "gettext("dynamic symbol table name section has wrong type: %u")" (identifier "gettext") (argument_list "("dynamic symbol table name section has wrong type: %u")" (( "(") (string_literal ""dynamic symbol table name section has wrong type: %u"" (" """) (string_content "dynamic symbol table name section has wrong type: %u") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001bd150(param_1,uVar7,iVar1);" (call_expression "FUN_001bd150(param_1,uVar7,iVar1)" (identifier "FUN_001bd150") (argument_list "(param_1,uVar7,iVar1)" (( "(") (identifier "param_1") (, ",") (identifier "uVar7") (, ",") (identifier "iVar1") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (*(long *)(param_1 + 0x28) != 0) {\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x28) != 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x28) != 0" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);\n      param_2[6] = lVar6;\n      uVar2 = *(undefined4 *)(param_1 + 0xb0);\n      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);\n      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);\n      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;\n      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );\n      goto LAB_002a5bea;\n    }" ({ "{") (expression_statement "lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);" (assignment_expression "lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0)" (identifier "lVar6") (= "=") (call_expression "FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0)" (identifier "FUN_0017b210") (argument_list "(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),\n                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0)" (( "(") (binary_expression "*(long *)(param_1 + 0x28) + 0x28" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x28")) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(lVar5 + 0x10)" (* "*") (cast_expression "(undefined4 *)(lVar5 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x10)" (( "(") (binary_expression "lVar5 + 0x10" (identifier "lVar5") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(lVar5 + 0x14)" (* "*") (cast_expression "(undefined4 *)(lVar5 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x14)" (( "(") (binary_expression "lVar5 + 0x14" (identifier "lVar5") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_2[6] = lVar6;" (assignment_expression "param_2[6] = lVar6" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 0xb0)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (expression_statement "param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);" (assignment_expression "param_2[7] = (ulong)*(uint *)(lVar5 + 0x14)" (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "(ulong)*(uint *)(lVar5 + 0x14)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(lVar5 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x14)" (( "(") (binary_expression "lVar5 + 0x14" (identifier "lVar5") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);" (call_expression "FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c)" (identifier "FUN_002a0650") (argument_list "(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c)" (( "(") (identifier "param_1") (, ",") (identifier "lVar3") (, ",") (identifier "local_4c") (, ",") (number_literal "0x6fffffff") (, ",") (identifier "uVar2") (, ",") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) (, ",") (binary_expression "param_2 + 9" (identifier "param_2") (+ "+") (number_literal "9")) (, ",") (identifier "local_3c") () ")"))) (; ";")) (expression_statement "FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)\n      ;" (call_expression "FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)" (identifier "FUN_002a0650") (argument_list "(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)" (( "(") (identifier "param_1") (, ",") (identifier "lVar3") (, ",") (identifier "local_48") (, ",") (number_literal "0x6ffffffd") (, ",") (identifier "uVar8") (, ",") (binary_expression "param_2 + 10" (identifier "param_2") (+ "+") (number_literal "10")) (, ",") (binary_expression "param_2 + 0xb" (identifier "param_2") (+ "+") (number_literal "0xb")) (, ",") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")"))) (; ";")) (expression_statement "FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  );" (call_expression "FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  )" (identifier "FUN_002a0650") (argument_list "(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf\n                  )" (( "(") (identifier "param_1") (, ",") (identifier "lVar3") (, ",") (identifier "local_44") (, ",") (number_literal "0x6ffffffe") (, ",") (identifier "uVar8") (, ",") (binary_expression "param_2 + 0xd" (identifier "param_2") (+ "+") (number_literal "0xd")) (, ",") (binary_expression "param_2 + 0xe" (identifier "param_2") (+ "+") (number_literal "0xe")) (, ",") (binary_expression "param_2 + 0xf" (identifier "param_2") (+ "+") (number_literal "0xf")) () ")"))) (; ";")) (goto_statement "goto LAB_002a5bea;" (goto "goto") (statement_identifier "LAB_002a5bea") (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_0029a170();" (call_expression "FUN_0029a170()" (identifier "FUN_0029a170") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Enum "SHT": Some values do not have unique names */
/* DWARF original prototype: void base_read_symbols(Sized_dynobj<32,_false> * this,
   Read_symbols_data * sd) */

void __thiscall
gold::Sized_dynobj<32,var_2>::base_read_symbols
          (Sized_dynobj<32,var_2> *this,Read_symbols_data *sd)

{
  type_1 *var_14;
  size_t __haystacklen;
  type_1 *names;
  void *var_5;
  type_2 *var_7;
  type_3 *var_10;
  char *pcVar4;
  type_4 *var_12;
  type_5 var_18;
  type_5 var_8;
  type_5 versym_shndx;
  type_5 verdef_shndx;
  type_5 verneed_shndx;
  type_5 var_9;
  type_5 dummy;
  
  Object::var_1<32,var_2>((type_6 *)this,&this->elf_file_,sd);
  var_14 = sd->section_headers->data_;
  var_3(this,var_14,&versym_shndx,&verdef_shndx,&verneed_shndx,&var_9);
  __haystacklen = sd->section_names_size;
  sd->symbols = (type_3 *)0x0;
  sd->symbols_size = 0;
  names = sd->section_names->data_;
  sd->external_symbols_offset = 0;
  sd->symbol_names = (type_3 *)0x0;
  sd->symbol_names_size = 0;
  sd->versym = (type_3 *)0x0;
  sd->versym_size = 0;
  sd->verdef = (type_3 *)0x0;
  sd->verdef_size = 0;
  sd->verdef_info = 0;
  sd->verneed = (type_3 *)0x0;
  sd->verneed_size = 0;
  sd->verneed_info = 0;
  var_5 = var_4(names,__haystacklen,".zdebug_",8);
  if ((var_5 != (void *)0x0) &&
     (var_7 = var_6<32,var_2>
                         (var_14,(this->super_Dynobj).super_Object.shnum_,(char *)names,
                          __haystacklen,(type_6 *)this,true),
     var_7 != (type_2 *)0x0)) {
    (this->super_Dynobj).super_Object.compressed_sections_ = var_7;
  }
  var_8 = this->dynsym_shndx_;
  if (var_8 == 0xffffffff) {
LAB_002a5bea:
    if (var_9 != 0xffffffff) {
      var_10 = sd->symbol_names;
      if (var_10 != (type_3 *)0x0) {
        var_10 = (type_3 *)var_10->data_;
      }
      var_11(this,var_14,var_9,var_8,(type_1 *)var_10,sd->symbol_names_size);
    }
    return;
  }
  var_12 = (this->super_Dynobj).super_Object.input_file_;
  if (var_12 != (type_4 *)0x0) {
    var_10 = File_read::var_13
                       (&var_12->file_,(this->super_Dynobj).super_Object.offset_,
                        (type_7)*(type_5 *)(var_14 + (type_7)(var_8 * 0x28) + 0x10),
                        (type_7)*(type_5 *)(var_14 + (type_7)(var_8 * 0x28) + 0x14),true,false);
    sd->symbols = var_10;
    var_18 = var_8 * 0x28;
    var_8 = *(type_5 *)(var_14 + (type_7)(var_8 * 0x28) + 0x18);
    sd->symbols_size = (type_7)*(type_5 *)(var_14 + (type_7)var_18 + 0x14);
    if (0xfeff < var_8) {
      elfcpp::Elf_file<32,var_2,_gold::type_6>::var_15(&this->elf_file_);
      var_8 = var_8 + (this->elf_file_).large_shndx_offset_;
    }
    if ((this->super_Dynobj).super_Object.shnum_ <= var_8) {
      pcVar4 = (char *)var_16("invalid dynamic symbol table name index: %u");
      Object::var_17((type_6 *)this,pcVar4,(type_7)var_8);
      return;
    }
    var_18 = *(type_5 *)(var_14 + (type_7)(var_8 * 0x28) + 4);
    if (var_18 != 3) {
      pcVar4 = (char *)var_16("dynamic symbol table name section has wrong type: %u");
      Object::var_17((type_6 *)this,pcVar4,(type_7)var_18);
      return;
    }
    var_12 = (this->super_Dynobj).super_Object.input_file_;
    if (var_12 != (type_4 *)0x0) {
      var_10 = File_read::var_13
                         (&var_12->file_,(this->super_Dynobj).super_Object.offset_,
                          (type_7)*(type_5 *)(var_14 + (type_7)(var_8 * 0x28) + 0x10),
                          (type_7)*(type_5 *)(var_14 + (type_7)(var_8 * 0x28) + 0x14),false,false);
      sd->symbol_names = var_10;
      var_18 = this->dynsym_shndx_;
      sd->symbol_names_size = (type_7)*(type_5 *)(var_14 + (type_7)(var_8 * 0x28) + 0x14);
      var_19(this,var_14,versym_shndx,SHT_GNU_versym,var_18,&sd->versym,&sd->versym_size
                          ,&dummy);
      var_19(this,var_14,verdef_shndx,SHT_GNU_verdef,var_8,&sd->verdef,&sd->verdef_size,
                          &sd->verdef_info);
      var_19(this,var_14,verneed_shndx,SHT_GNU_verneed,var_8,&sd->verneed,
                          &sd->verneed_size,&sd->verneed_info);
      goto LAB_002a5bea;
    }
  }
                    /* WARNING: Subroutine does not return */
  Object::var_20((type_6 *)var_12);
}


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

void MASKED(long param_1,long *param_2)

{
  int iVar1;
  undefined4 uVar2;
  long lVar3;
  size_t __haystacklen;
  void *__haystack;
  void *pvVar4;
  long lVar5;
  long lVar6;
  undefined8 uVar7;
  uint uVar8;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  int local_40;
  undefined1 local_3c [12];
  
  FUN_001c5dc0(param_1,param_1 + 0x90,param_2);
  lVar3 = *(long *)(*param_2 + 0x10);
  FUN_002a0370(param_1,lVar3,&local_4c,&local_48,&local_44,&local_40);
  __haystacklen = param_2[2];
  param_2[3] = 0;
  param_2[4] = 0;
  __haystack = *(void **)(param_2[1] + 0x10);
  param_2[5] = 0;
  param_2[6] = 0;
  param_2[7] = 0;
  param_2[8] = 0;
  param_2[9] = 0;
  param_2[10] = 0;
  param_2[0xb] = 0;
  *(undefined4 *)(param_2 + 0xc) = 0;
  param_2[0xd] = 0;
  param_2[0xe] = 0;
  *(undefined4 *)(param_2 + 0xf) = 0;
  pvVar4 = memmem(__haystack,__haystacklen,".zdebug_",8);
  if ((pvVar4 != (void *)0x0) &&
     (lVar5 = FUN_001e1e50(lVar3,*(undefined4 *)(param_1 + 0x38),__haystack,__haystacklen,param_1,1)
     , lVar5 != 0)) {
    *(long *)(param_1 + 0x48) = lVar5;
  }
  uVar8 = *(uint *)(param_1 + 0xb0);
  if (uVar8 == 0xffffffff) {
LAB_002a5bea:
    if (local_40 != -1) {
      lVar5 = param_2[6];
      if (lVar5 != 0) {
        lVar5 = *(long *)(lVar5 + 0x10);
      }
      FUN_002a57e0(param_1,lVar3,local_40,uVar8,lVar5,param_2[7]);
    }
    return;
  }
  lVar5 = (ulong)(uVar8 * 0x28) + lVar3;
  if (*(long *)(param_1 + 0x28) != 0) {
    lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),
                         *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),1,0);
    param_2[3] = lVar6;
    uVar8 = *(uint *)(lVar5 + 0x18);
    param_2[4] = (ulong)*(uint *)(lVar5 + 0x14);
    if (0xfeff < uVar8) {
      FUN_00167570(param_1 + 0x90);
      uVar8 = uVar8 + *(int *)(param_1 + 0xa8);
    }
    if (*(uint *)(param_1 + 0x38) <= uVar8) {
      uVar7 = gettext("invalid dynamic symbol table name index: %u");
      FUN_001bd150(param_1,uVar7,uVar8);
      return;
    }
    lVar5 = (ulong)(uVar8 * 0x28) + lVar3;
    iVar1 = *(int *)(lVar5 + 4);
    if (iVar1 != 3) {
      uVar7 = gettext("dynamic symbol table name section has wrong type: %u");
      FUN_001bd150(param_1,uVar7,iVar1);
      return;
    }
    if (*(long *)(param_1 + 0x28) != 0) {
      lVar6 = FUN_0017b210(*(long *)(param_1 + 0x28) + 0x28,*(undefined8 *)(param_1 + 0x30),
                           *(undefined4 *)(lVar5 + 0x10),*(undefined4 *)(lVar5 + 0x14),0,0);
      param_2[6] = lVar6;
      uVar2 = *(undefined4 *)(param_1 + 0xb0);
      param_2[7] = (ulong)*(uint *)(lVar5 + 0x14);
      FUN_002a0650(param_1,lVar3,local_4c,0x6fffffff,uVar2,param_2 + 8,param_2 + 9,local_3c);
      FUN_002a0650(param_1,lVar3,local_48,0x6ffffffd,uVar8,param_2 + 10,param_2 + 0xb,param_2 + 0xc)
      ;
      FUN_002a0650(param_1,lVar3,local_44,0x6ffffffe,uVar8,param_2 + 0xd,param_2 + 0xe,param_2 + 0xf
                  );
      goto LAB_002a5bea;
    }
  }
                    /* WARNING: Subroutine does not return */
  FUN_0029a170();
}

